{"version":3,"sources":["assets/logos/empty-token.webp","services/web3/config.ts","utils/formulas.ts","services/web3/index.ts","services/web3/v3/contractsApi.ts","services/web3/types.ts","services/web3/abis/types/factories/BancorNetwork__factory.ts","services/web3/abis/types/factories/ContractRegistry__factory.ts","services/web3/abis/types/factories/Converter__factory.ts","services/web3/abis/types/factories/ConverterRegistry__factory.ts","services/web3/abis/types/factories/ExchangeProxy__factory.ts","services/web3/abis/types/factories/Governance__factory.ts","services/web3/abis/types/factories/LiquidityProtection__factory.ts","services/web3/abis/types/factories/LiquidityProtectionSettings__factory.ts","services/web3/abis/types/factories/LiquidityProtectionStore__factory.ts","services/web3/abis/types/factories/LiquidityProtectionSystemStore__factory.ts","services/web3/abis/types/factories/Multicall__factory.ts","services/web3/abis/types/factories/StakingRewards__factory.ts","services/web3/abis/types/factories/StakingRewardsClaim__factory.ts","services/web3/abis/types/factories/Token__factory.ts","services/web3/abis/types/factories/BancorNetworkInfoProxy__factory.ts","services/web3/abis/types/factories/BancorNetworkInfo__factory.ts","services/web3/abis/types/factories/BancorNetworkV3Proxy__factory.ts","services/web3/abis/types/factories/BancorNetworkV3__factory.ts","services/web3/abis/types/factories/BancorPortalProxy__factory.ts","services/web3/abis/types/factories/BancorPortal__factory.ts","services/web3/abis/types/factories/NetworkSettingsProxy__factory.ts","services/web3/abis/types/factories/NetworkSettings__factory.ts","services/web3/abis/types/factories/PendingWithdrawalsProxy__factory.ts","services/web3/abis/types/factories/PendingWithdrawals__factory.ts","services/web3/abis/types/factories/PoolCollectionType1__factory.ts","services/web3/abis/types/factories/StandardRewardsProxy__factory.ts","services/web3/abis/types/factories/StandardRewards__factory.ts","services/web3/abis/types/factories/Weth__factory.ts","utils/localStorage.ts","services/observables/user.ts","services/observables/contracts.ts","services/observables/customOperators.ts","store/user/user.ts","services/web3/multicall/multicall.ts","utils/helperFunctions.ts","assets/icons/bell.svg","pages/UnsupportedNetwork.tsx","components/transitions/DropdownTransition.tsx","store/notification/notification.ts","store/bancor/token.ts","assets/icons/circlecheck.svg","store/bancor/bancor.ts","store/bancor/pool.ts","store/liquidity/liquidity.ts","store/portfolio/v3Portfolio.ts","store/index.ts","assets/icons/times.svg","assets/icons/link.svg","assets/icons/bancor.svg","utils/pureFunctions.ts","elements/notifications/NotificationContent.tsx","assets/icons/left.svg","hooks/useInterval.tsx","assets/icons/sun.svg","assets/icons/moon.svg","assets/icons/computer.svg","assets/icons/menu.svg","elements/settings/DarkMode.tsx","elements/layoutHeader/MobileSidebar.tsx","elements/notifications/NotificationsMenu.tsx","assets/icons/fiat.svg","assets/icons/twitter.svg","assets/icons/reddit.svg","assets/icons/telegram.svg","assets/icons/discord.svg","assets/icons/vote.svg","components/navigate/Navigate.tsx","router/bancorURL.service.ts","elements/settings/SettingsMenu.tsx","services/api/googleTagManager.ts","assets/logos/metamask.png","assets/logos/fortmatic.svg","assets/logos/portis.png","assets/logos/walletConnect.svg","assets/logos/coinbaseWallet.svg","assets/logos/ledger.svg","assets/logos/trezor.svg","assets/logos/gnosisSafe.svg","assets/logos/torus.svg","assets/logos/imposter.svg","services/web3/wallet/utils.ts","assets/logos/frame.png","assets/icons/chevronRight.svg","elements/walletConnect/useWalletConnect.ts","assets/icons/wallet.svg","components/modal/Modal.tsx","hooks/useImage.ts","components/image/Image.tsx","elements/walletConnect/WalletConnectModalList.tsx","elements/walletConnect/WalletConnectModalPending.tsx","elements/walletConnect/WalletConnectModalError.tsx","elements/walletConnect/WalletConnectModal.tsx","assets/icons/disconnect.svg","components/button/Button.tsx","components/popover/PopoverV3.tsx","elements/walletConnect/WalletConnectButton.tsx","router/goToPage.service.ts","hooks/useNavigation.ts","elements/layoutHeader/NetworkIndicator.tsx","elements/layoutHeader/LayoutHeader.tsx","elements/notifications/NotificationAlert.tsx","elements/notifications/NotificationAlerts.tsx","services/web3/token/token.ts","services/observables/tokenLists.ts","services/observables/timers.ts","services/api/bancorApi/bancorApiV2.ts","services/api/bancorApi/bancorApiV3.ts","services/api/bancorApi/bancorApi.ts","services/observables/apiData.ts","services/api/keeperDao.ts","services/web3/swap/limit.ts","services/observables/tokens.ts","services/observables/statistics.ts","services/web3/lockedbnt/lockedbnt.ts","services/web3/liquidity/liquidity.ts","services/web3/protection/positions.ts","services/web3/v3/portfolio/standardStaking.ts","services/observables/standardRewards.ts","services/observables/pools.ts","assets/icons/trade.svg","services/observables/liquidity.ts","services/web3/v3/portfolio/holdings.ts","services/web3/v3/portfolio/withdraw.ts","services/observables/portfolio.ts","services/web3/swap/market.ts","services/observables/poolTokensV1.ts","assets/icons/earn.svg","assets/icons/portfolio.svg","assets/icons/more.svg","assets/icons/coins.svg","elements/layoutHeader/MobileBottomNav.tsx","assets/icons/dollar.svg","assets/icons/edit.svg","elements/swapSwitch/SwapSwitch.tsx","elements/swapHeader/SwapHeader.tsx","components/inputField/InputField.tsx","elements/layoutHeader/LayoutHeaderMobile.tsx","components/modalFullscreen/ModalFullscreen.tsx","assets/icons/search.svg","components/searchableTokenList/SuggestedTokens.tsx","components/switch/Switch.tsx","assets/icons/chevronDown.svg","components/searchInput/SearchInput.tsx","components/searchableTokenList/SearchableTokenList.tsx","assets/icons/clock-solid.svg","components/tokenInputField/TokenInputField.tsx","components/dropdown/Dropdown.tsx","assets/icons/sync.svg","elements/modalDuration/modalDuration.tsx","assets/icons/lock.svg","services/web3/approval/index.ts","services/web3/approval/constants.ts","assets/icons/deposit.svg","elements/modalApprove/modalApprove.tsx","elements/swapLimit/SwapLimit.tsx","elements/modalDepositETH/modalDepositETH.tsx","assets/icons/info-solid.svg","elements/swapInsights/Speedometer.tsx","components/linePercentage/LinePercentage.tsx","assets/icons/lightbulb.svg","elements/swapInsights/InsightCard.tsx","elements/swapInsights/InsightRow.tsx","assets/icons/intotheblock.svg","assets/icons/info.svg","elements/swapInsights/Insight.tsx","hooks/useLocalStorage.ts","services/api/intoTheBlock.ts","elements/trade/TradeWidgetInput.tsx","components/tokenInput/useTokenInputV3.tsx","elements/trade/useTknFiatInput.ts","elements/trade/useTradeWidget.ts","elements/modalApprove/modalApproveNew.tsx","hooks/useApproveModal.tsx","services/notifications/notifications.ts","elements/trade/TradeWidgetDetails.tsx","elements/trade/TradeWidgetCTA.tsx","elements/trade/TradeWidgetSwitchBtn.tsx","elements/trade/TradeWidget.tsx","elements/trade/useTrade.ts","elements/swapWidget/SwapWidget.tsx","components/table/TablePagination.tsx","assets/icons/arrow.svg","components/table/TableHeader.tsx","components/table/TableBody.tsx","components/table/DataTable.tsx","hooks/useQuery.tsx","pages/Swap.tsx","elements/swapLimit/SwapLimitTable.tsx","components/Page.tsx","components/pageNavLink/PageNavLink.tsx","elements/earn/portfolio/liquidityProtection/rewards/useMyRewards.tsx","pages/earn/portfolio/Portfolio.tsx","services/web3/v3/portfolio/helpers.ts","components/tokenBalance/TokenBalance.tsx","components/countdownTimer/CountdownTimer.tsx","elements/earn/portfolio/v3/pendingWithdraw/V3WithdrawItem.tsx","hooks/useDateNow.ts","components/tokenBalance/TokenBalanceLarge.tsx","elements/earn/portfolio/v3/pendingWithdraw/V3WithdrawCancelModal.tsx","components/progressBar/ProgressBar.tsx","elements/earn/portfolio/v3/pendingWithdraw/confirm/V3WithdrawConfirmOutputBreakdown.tsx","elements/earn/portfolio/v3/pendingWithdraw/confirm/V3WithdrawConfirmInfo.tsx","elements/earn/portfolio/v3/pendingWithdraw/confirm/V3WithdrawConfirmModal.tsx","elements/earn/portfolio/v3/pendingWithdraw/confirm/useV3WithdrawConfirm.ts","hooks/useIsPoolStable.ts","elements/earn/portfolio/v3/pendingWithdraw/V3Withdraw.tsx","elements/earn/portfolio/v3/pendingWithdraw/useV3Withdraw.ts","assets/icons/check.svg","components/modal/ModalV3.tsx","hooks/useDebounce.tsx","hooks/useDimensions.tsx","components/tokenInput/TokenInputV3.tsx","components/tokenInput/useResizeTokenInput.tsx","components/tokenInputPercentage/TokenInputPercentageV3.tsx","components/protectedSettingsV3/ProtectedSettingsV3.tsx","components/expandableSection/ExpandableSection.tsx","elements/earn/pools/poolsTable/v3/DepositV3Modal.tsx","hooks/useConditionalInterval.tsx","elements/earn/portfolio/v3/V3AvailableToStake.tsx","elements/earn/portfolio/v3/bonuses/useV3Bonuses.ts","components/tokensOverlap/TokensOverlap.tsx","elements/earn/portfolio/v3/bonuses/V3BonusesModal.tsx","elements/earn/portfolio/v3/bonuses/V3ClaimBonuses.tsx","assets/icons/dottedSync.svg","assets/icons/bancorOutline.svg","assets/icons/protectLight.svg","assets/holdingsLight.svg","assets/holdingsDark.svg","assets/icons/gift.svg","assets/icons/lightning.svg","elements/earn/portfolio/v3/holdings/V3UnstakeModal.tsx","elements/earn/portfolio/v3/holdings/V3HoldingsItemStaked.tsx","components/modalFullscreen/modalFullscreenV3.tsx","components/circlePercentage/CirclePercentage.tsx","elements/earn/portfolio/v3/externalHoldings/externalHoldings.ts","elements/earn/portfolio/v3/initWithdraw/step1/V3WithdrawStep1Breakdown.tsx","elements/earn/portfolio/v3/initWithdraw/step3/useV3WithdrawStep3.ts","elements/earn/portfolio/v3/initWithdraw/step1/V3WithdrawStep1.tsx","elements/earn/portfolio/v3/initWithdraw/step1/useV3WithdrawStep1.ts","elements/earn/portfolio/v3/initWithdraw/step3/V3WithdrawStep3.tsx","elements/earn/portfolio/v3/initWithdraw/step4/V3WithdrawStep4.tsx","elements/earn/portfolio/v3/initWithdraw/step2/V3WithdrawStep2.tsx","elements/earn/portfolio/v3/initWithdraw/step2/useV3WithdrawStep2.ts","elements/earn/portfolio/v3/initWithdraw/V3WithdrawModal.tsx","elements/earn/portfolio/v3/initWithdraw/useV3WithdrawModal.ts","elements/earn/portfolio/v3/holdings/V3HoldingsItemUnstaked.tsx","elements/earn/portfolio/v3/holdings/V3HoldingsItem.tsx","elements/earn/portfolio/v3/holdings/V3Holdings.tsx","utils/mocked.ts","assets/icons/clock.svg","elements/earn/portfolio/v3/externalHoldings/V3ExternalHoldingsModal.tsx","elements/earn/portfolio/v3/externalHoldings/V3ExternalHoldingsItem.tsx","elements/earn/portfolio/v3/externalHoldings/useExternalHoldings.ts","elements/earn/portfolio/v3/externalHoldings/V3ExternalHoldings.tsx","elements/earn/portfolio/v3/V3Portfolio.tsx","elements/earn/portfolio/liquidityProtection/protectedPositions/MyStake.tsx","elements/earn/portfolio/liquidityProtection/rewards/MyRewards.tsx","elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellStake.tsx","components/table/TableCellExpander.tsx","services/web3/protection/migration.ts","components/tokenInputPercentage/TokenInputPercentage.tsx","elements/earn/portfolio/withdrawLiquidity/WithdrawLiquidityInfo.tsx","elements/earn/portfolio/withdrawLiquidity/WithdrawLiquidityWidget.tsx","elements/earn/portfolio/v3/UpgradeBntModal.tsx","assets/icons/locked.svg","elements/earn/portfolio/liquidityProtection/protectedPositions/useProtectedPositions.tsx","elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellLiquidity.tsx","elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellClaimable.tsx","elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellFees.tsx","elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellRoi.tsx","elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellActions.tsx","elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionsTable.tsx","elements/earn/portfolio/liquidityProtection/claim/ClaimAvailable.tsx","elements/earn/portfolio/liquidityProtection/claim/ClaimLocked.tsx","elements/earn/portfolio/liquidityProtection/LiquidityProtection.tsx","elements/earn/portfolio/poolTokens/poolTokensTable/PoolTokensCellActions.tsx","elements/earn/portfolio/poolTokens/poolTokensTable/PoolTokensTable.tsx","elements/earn/portfolio/poolTokens/poolTokensTable/PoolTokensCellName.tsx","elements/earn/portfolio/poolTokens/poolTokensTable/PoolTokensCellReserve.tsx","elements/earn/portfolio/poolTokens/PoolTokens.tsx","components/widgets/Widget.tsx","components/widgets/WidgetLoading.tsx","components/selectPoolModal/SelectPoolModalContent.tsx","components/selectPoolModal/SelectPoolModal.tsx","components/selectPool/SelectPool.tsx","elements/earn/portfolio/liquidityProtection/rewards/stake/RewardsStakeCTA.tsx","elements/earn/portfolio/liquidityProtection/rewards/stake/RewardsStakeSpaceAvailable.tsx","elements/earn/portfolio/liquidityProtection/rewards/claim/useRewardsClaim.tsx","elements/earn/portfolio/liquidityProtection/rewards/stake/RewardsStakeWidget.tsx","components/widgets/WidgetError.tsx","pages/earn/portfolio/rewards/RewardsStake.tsx","elements/earn/portfolio/liquidityProtection/rewards/claim/RewardsClaimAmount.tsx","elements/earn/portfolio/liquidityProtection/rewards/claim/RewardsClaimCTA.tsx","pages/earn/portfolio/rewards/RewardsClaim.tsx","assets/icons/growCoins.svg","assets/icons/protected.svg","assets/icons/protectedHeart.svg","elements/fiat/FiatBox.tsx","components/ticker/Ticker.tsx","elements/tokens/TopMovers.tsx","components/charts/LineChartSimple.tsx","elements/tokens/TokenTable.tsx","pages/Tokens.tsx","assets/logos/moonpay.svg","assets/logos/banxa.svg","assets/logos/simplex.svg","assets/logos/ramp.svg","assets/logos/mercuryo.svg","pages/Fiat.tsx","services/web3/governance/governance.ts","elements/modalVbnt/ModalVbnt.tsx","pages/Vote.tsx","pages/TermsOfUse.tsx","pages/PrivacyPolicy.tsx","pages/NotFound.tsx","elements/admin/AdminTknData.tsx","elements/admin/AdminUseMainnet.tsx","elements/admin/AdminUseFork.tsx","elements/admin/AdminControls.tsx","pages/Admin.tsx","pages/earn/pools/Pools.tsx","elements/earn/pools/addLiquidity/single/AddLiquiditySingleInfoBox.tsx","elements/earn/pools/addLiquidity/single/AddLiquiditySingleSelectPool.tsx","elements/earn/pools/addLiquidity/single/AddLiquiditySingleSpaceAvailable.tsx","elements/earn/pools/addLiquidity/single/AddLiquiditySingleAmount.tsx","elements/earn/pools/addLiquidity/single/AddLiquiditySingleCTA.tsx","elements/earn/pools/addLiquidity/single/AddLiquiditySingle.tsx","elements/earn/pools/addLiquidity/dual/AddLiquidityDualStakeAmount.tsx","elements/earn/pools/addLiquidity/empty/AddLiquidityEmptyCTA.tsx","elements/earn/pools/addLiquidity/dual/AddLiquidityDualTokenPrices.tsx","elements/earn/pools/addLiquidity/dual/AddLiquidityDual.tsx","elements/earn/pools/addLiquidity/empty/AddLiquidityEmptyStep1.tsx","elements/earn/pools/addLiquidity/empty/AddLiquidityEmptyStep2.tsx","elements/earn/pools/addLiquidity/empty/AddLiquidityEmpty.tsx","pages/earn/pools/AddLiquidity.tsx","elements/earn/pools/poolsTable/PoolsTableFilter.tsx","elements/earn/pools/Statistics.tsx","elements/earn/pools/TopPools.tsx","elements/earn/pools/poolsTable/PoolsTable.tsx","elements/earn/pools/poolsTable/EarnTableV2.tsx","elements/earn/pools/poolsTable/PoolsTableCellName.tsx","elements/earn/pools/poolsTable/PoolsTableCellApr.tsx","elements/earn/pools/poolsTable/PoolsTableCellActions.tsx","router/BancorRouter.tsx","router/useRoutesTrade.tsx","router/useRoutesEarn.tsx","router/useRoutesPortfolio.tsx","router/useRoutesMain.tsx","router/useRoutesRedirect.tsx","App.tsx","services/web3/wallet/hooks.ts","services/observables/triggers.ts","reportWebVitals.ts","i18n/index.ts","i18n/i18nProvider.tsx","index.tsx","services/web3/wallet/connectors.ts","utils/dayjs.ts","services/web3/protection/rewards.ts"],"names":["bntToken","systemStore","ethToken","zeroAddress","wethToken","multiCallContract","ropstenImage","emptyTokenLogo","bntDecimals","changeGas","gasEstimation","BigNumber","times","toFixed","getNetworkVariables","network","EthNetworks","Mainnet","contractRegistry","govToken","converterContractForMaths","governanceContractAddress","etherscanUrl","isForkAvailable","getTenderlyRpcLS","calcReserve","from","to","fee","div","minus","expandToken","amount","precision","trimmed","pow","shrinkToken","chopZeros","bigNumAmount","isEqualTo","res","ROUND_DOWN","toString","calculatePercentageChange","numberNow","numberBefore","Number","reduceBySlippage","value","slippage","bigNumValue","bigNumSlippage","one","calcApr","fees","liquidity","toBigNumber","toNumber","getProvider","useFork","providers","StaticJsonRpcProvider","WebSocketProvider","buildAlchemyUrl","web3","provider","keepWSOpen","setInterval","a","_websocket","readyState","WebSocket","OPEN","CONNECTING","close","error","console","debug","writeWeb3","signer","window","ethereum","Web3Provider","getSigner","setProvider","setSigner","account","getUncheckedSigner","BancorContract","contractAddress","contractFactory","_contractFactory","_lastProvider","_lastSigner","_read","_write","this","connect","ContractsApi","BancorNetwork","bancorNetworkAddress","BancorNetworkV3__factory","BancorNetworkInfo","bancorNetworkInfoAddress","BancorNetworkInfo__factory","NetworkSettings","networkSettingsAddress","NetworkSettings__factory","StakingRewardsClaim","stakingRewardsClaimAddress","StakingRewardsClaim__factory","StandardRewards","standardRewardsAddress","StandardRewards__factory","PoolCollection","poolCollectionType1Address","PoolCollectionType1__factory","PendingWithdrawals","pendingWithdrawalsAddress","PendingWithdrawals__factory","BancorPortal","bancorPortalAddress","BancorPortal__factory","Token","tokenAddress","Token__factory","PoolType","ErrorCode","SignatureType","_abi","constant","inputs","name","type","outputs","payable","stateMutability","anonymous","indexed","BancorNetwork__factory","utils","Interface","address","signerOrProvider","Contract","abi","ContractRegistry__factory","internalType","Converter__factory","ConverterRegistry__factory","components","ExchangeProxy__factory","Governance__factory","LiquidityProtection__factory","LiquidityProtectionSettings__factory","LiquidityProtectionStore__factory","LiquidityProtectionSystemStore__factory","Multicall__factory","StakingRewards__factory","_bytecode","isSuperArgs","xs","length","args","initNetworkV3","initBNTGovernance","initMerkleRoot","overrides","ContractFactory","bytecode","BancorNetworkInfoProxy__factory","logic","initAdmin","data","BancorPortalProxy__factory","NetworkSettingsProxy__factory","PendingWithdrawalsProxy__factory","initNetwork","initBNT","initNetworkSettings","initMasterVault","initBNTPool","initExternalProtectionVault","initPoolTokenFactory","initPoolMigrator","StandardRewardsProxy__factory","Weth__factory","selected_lists","autoLogin","darkMode","slippageTolerance","usdToggle","notifications","tenderlyRpcUrl","v3ApiUrl","v2ApiUrl","getTokenListLS","list","localStorage","getItem","JSON","parse","setTokenListLS","userListIds","setItem","stringify","getAutoLoginLS","auto","setAutoLoginLS","flag","getDarkModeLS","darkLS","DarkMode","System","setDarkModeLS","mode","getSlippageToleranceLS","UserState","setSlippageToleranceLS","getUsdToggleLS","usd","setUsdToggleLS","getNotificationsLS","notify","setNotificationsLS","setTenderlyRpcLS","url","removeItem","getV3ApiUrlLS","setV3ApiUrlLS","getV2ApiUrlLS","setV2ApiUrlLS","userReceiver$","BehaviorSubject","balancesReceiver$","positionsReceiver$","rewardsReceiver$","lockedBntReceiver$","user$","pipe","distinctUntilChanged","shareReplay","setUser","userAddress","dispatch","setAccount","next","loadingPositions$","setLoadingPositions","loading","loadingRewards$","setLoadingRewards","loadingLockedBnt$","setLoadingLockedBnt","exchangeProxy$","switchMapIgnoreThrow","getContractAddressesForChainOrThrow","pluck","map","getAddress","contractAddresses$","fetchContractAddresses","isEqual","networkVariables","contract","multicall","buildAddressCall","addresses","BancorConverterRegistry","LiquidityProtectionStore","LiquidityProtection","StakingRewards","registry","interface","methodName","methodParameters","formatBytes32String","bancorNetwork$","liquidityProtection$","bancorConverterRegistry$","stakingRewards$","liquidityProtectionStore$","switchMap","liquidityProtection","store","settingsContractAddress$","settings","switchMapProm","source","x","catch","e","filter","initialState","undefined","walletModal","locale","loadingBalances","forceV3Routing","userSlice","createSlice","reducers","state","action","payload","setDarkMode","setDarkModeCss","setSlippageTolerance","setLocale","openWalletModal","setUsdToggle","setLoadingBalances","setForceV3Routing","getDarkMode","createSelector","user","matchMedia","matches","Dark","root","document","documentElement","classList","add","remove","actions","reducer","calls","blockHeight","multicallContract","encoded","call","target","toLocaleLowerCase","callData","encodeFunctionData","tryAggregate","blockTag","encodedRes","i","success","decodeFunctionResult","returnData","oneMillion","ppmToDec","ppm","decToPpm","dec","prettifyNumber","num","bigNum","lte","lt","gt","numeral","format","Math","floor","gte","formatDuration","duration","sentence","days","minutes","hours","formatTime","ms","dayjs","split","parseInt","seconds","isUnsupportedNetwork","calculateBntNeededToOpenSpace","bntBalance","tknBalance","networkTokensMinted","networkTokenMintingLimits","plus","calculatePriceDeviationTooHigh","averageRate","primaryReserveBalance","secondaryReserveBalance","averageRateMaxDeviation","spotRate","dividedBy","averageRateMaxDeviationBase","threshold","withinLowerThreshold","isGreaterThan","withinHigherThreshold","getFutureTime","unix","calculateProgressLevel","startTimeSeconds","endTimeSeconds","Error","totalWaitingTime","now","calcUsdPrice","price","decimals","IS_IN_IFRAME","self","top","findPoolByConverter","converter","pools","apiPools","poolExists","find","converter_dlt_id","calcFiatValue","calcTknValue","_path","UnsupportedNetwork","className","DropdownTransition","children","as","Fragment","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","_excluded","_extends","Object","assign","arguments","key","prototype","hasOwnProperty","apply","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgBell","_ref","svgRef","title","titleId","props","viewBox","fill","xmlns","ref","id","d","NotificationType","ForwardRef","getAllTokensMap","bancor","allTokens","Map","token","getTokensV3Map","pool","v3Pools","poolDltId","reserveToken","getAvailableToStakeTokens","allTokensMap","poolsWithApr","get","p","balance","orderBy","getV3Tokens","getTokenTableData","tokens","v3Tokens","tokensMap","v3TokensMap","uniqBy","t","v3Token","price_history_7d","usd_volume_24","notificationSlice","setNotifications","addNotification","unshift","nanoid","info","timestamp","showSeconds","pop","removeNotification","index","findIndex","notification","splice","hideAlert","setStatus","oldNotification","msg","txHash","bancorSlice","tokenLists","keeperDaoTokens","allTokenListTokens","isLoadingTokens","statistics","setTokens","setAllTokens","setTokenLists","setAllTokenListTokens","setKeeperDaoTokens","setStatisticsV3","getTokenById","_","getTopMovers","filtered","isProtected","slice","getIsAppBusy","v3Portfolio","isPortfolioLoading","hasPendingTx","some","n","pending","poolSlice","v2Pools","isLoadingV3Pools","setv2Pools","setv3Pools","setStats","getPools","pools_token_list","reserves","getPoolsV3Map","getV2PoolsWithoutV3","poolsV2","poolsV3","v2Pool","v3Pool","getProtectedPools","getTopPoolsV3","filteredPools","tknSymbol","symbol","tknLogoURI","logoURI","tknApr","apr","rewardApr","bntSymbol","bntLogoURI","bntApr","poolName","winningBntPool","topPools","push","getIsV3Exist","createDeepEqualSelector","createSelectorCreator","defaultMemoize","poolTokens","lockedAvailableBNT","locked","available","protocolBnBNTAmount","protectedPositions","rewards","loadingPositions","loadingRewards","loadingLockedBnt","snapshots","liquiditySlice","setPoolTokens","setLockedAvailableBNT","setProtectedPositions","setRewards","setProtocolBnBNTAmount","setSnapshots","getGroupedPositions","reduce","obj","acc","val","bnt","bntUSDPrice","usdPrice","poolId","pool_dlt_id","groupId","pos","item","calcSum","sum","current","sumFees","sumInitalStakeTkn","sumInitalStakeUSD","sumRoi","positionId","initialStake","usdAmount","tknAmount","protectedAmount","claimableAmount","roi","reserveRewards","rewardsAmount","aprs","timestamps","currentCoveragePercent","rewardsMultiplier","subRows","set","getAllBntPositionsAndAmount","bntPositions","getStakeSummary","protectedValue","claimableValue","getUserRewardsFromSnapshot","empty","claimable","totalClaimed","accAddress","entry","entries","getMerkleTree","MerkleTree","generateLeaf","keccak256","sortPairs","getUserRewardsProof","userRewards","tree","leaf","getHexProof","v3PortfolioSlice","holdingsRaw","isLoadingHoldings","withdrawalRequestsRaw","withdrawalSettings","lockDuration","withdrawalFee","isLoadingWithdrawalRequests","bonusesModal","standardRewards","isLoadingStandardRewards","setIsPortfolioLoading","setHoldingsRaw","setWithdrawalRequestsRaw","setWithdrawalSettings","openBonusesModal","setStandardRewards","getIsLoadingHoldings","getPortfolioHoldings","allPoolsV3Map","holdingsRawMap","holding","allHoldingPools","allStakedPools","reward","programs","holdingRaw","latestProgram","poolTokenBalance","poolTokenBalanceWei","tokenBalance","tokenBalanceWei","stakedTokenBalance","tokenAmountWei","stakedPoolTokenBalance","poolTokenAmountWei","combinedTokenBalance","hasLegacyStake","pp","isActive","buildHoldingObject","getIsLoadingWithdrawalRequests","getPortfolioWithdrawalRequests","allPoolsMap","withdrawalRequests","requestRaw","lockEndsAt","createdAt","poolTokenAmount","reserveTokenAmount","reserveTokenAmountWei","request","getIsLoadingStandardRewards","getStandardRewards","size","rewardsToken","groupPool","totalPendingRewards","pendingRewardsWei","programPool","configureStore","middleware","getDefaultMiddleware","serializableCheck","ignoredPaths","useAppSelector","useSelector","SvgCirclecheck","width","height","SvgTimes","SvgLink","stroke","strokeLinecap","strokeLinejoin","strokeWidth","SvgBancor","fillRule","clipRule","classNameGenerator","object","k","v","join","sanitizeNumberInput","input","sanitized","replace","integer","substring","mapIgnoreThrown","iteratee","IGNORE_TOKEN","Promise","all","wait","resolve","setTimeout","get7DaysAgo","Date","sortNumbersByKey","b","_get","sorAlphaByKey","toUpperCase","localeCompare","openNewTab","open","extend","relativeTime","updateLocale","future","past","s","m","mm","h","hh","dd","M","MM","y","yy","NotificationContent","onRemove","isAlert","useState","isHovering","setIsHovering","timer","useRef","useEffect","clearTimeout","onMouseEnter","onMouseLeave","StatusIcon","fromNow","onClick","href","baseUrl","rel","useInterval","callback","delay","leading","savedCallback","tick","clearInterval","SvgLeft","_g","_defs","SvgSun","clipPath","SvgMoon","SvgComputer","showText","IDarkMode","modeToSwitch","Light","DarkModeButton","useDispatch","MobileSidebar","setShow","show","showDarkMode","Root","static","onClose","Child","Overlay","NotificationsMenu","checkStatus","getTransactionReceipt","tx","status","updatedInfo","successTitle","errorTitle","successMsg","errorMsg","forEach","clearAll","history","Button","Panel","SvgMenu","SvgFiat","SvgTwitter","SvgReddit","SvgTelegram","SvgDiscord","SvgVote","Navigate","startsWith","pathname","BancorURL","termsOfUse","privacyPolicy","notFound","admin","welcome","earn","earnV2","vote","fiat","portfolio","portfolioV1","portfolioV2","portfolioV2RewardsClaim","portfolioV2RewardsStake","posGroupId","addLiquidityV2","trade","query","limit","ConversionEvents","SettingsMenu","SettingsMenuContent","mobile","currentSlippage","slippages","includes","customSlippage","setCustomSlippage","normalizedSlippage","onChange","event","onBlur","trim","isNaN","placeholder","SUPPORTED_WALLETS","connector","injected","icon","metamaskLogo","imposterLogo","walletconnect","walletConnectLogo","walletlink","coinbaseWalletLogo","ledgerLogo","trezorLogo","gnosisSafe","gnosisSafeLogo","frame","fortmatic","fortmaticLogo","portis","portisLogo","torus","torusLogo","init","w","l","getTime","f","getElementsByTagName","j","createElement","dl","async","src","parentNode","insertBefore","sendGTM","dataLayer","currentConversion","WalletEvents","eventTxtMap","click","approvePop","approved","wallet_req","wallet_confirm","fail","sendConversionApprovedEvent","isUnlimited","gtmData","wallet_properties","event_properties","conversion_unlimited","ga_event","category","sendConversionSuccessEvent","fromTokenPrice","transaction_hash","conversion_market_token_rate","sendConversionFailEvent","sendConversionEvent","eventClickPrefix","currentLiquidity","walletTxtMap","popup","sendWalletEvent","walletEvent","wallet","wallet_id","wallet_name","sendInsight","page","swap_insights","sendGTMPath","from_path","to_path","theme","currency","setCurrentLiquidity","tokenSymbol","tokenAmount","tokenAmountUsd","bntAmount","bntAmountUsd","withdrawl_percentage","liquidity_type","liquidity_blockchain_network","Ropsten","liquidity_pool","liquidity_token_symbol","liquidity_token_amount","liquidity_token_amount_usd","liquidity_bnt_amount","liquidity_token_portion_percent","liquidity_bnt_amount_usd","liquidity_input_type","getLiquidityEventLabel","sendLiquidityApprovedEvent","liquidity_unlimited","sendLiquiditySuccessEvent","sendLiquidityFailEvent","sendLiquidityEvent","useWalletConnect","useWeb3React","activate","deactivate","isPending","setIsPending","isError","setIsError","selectedWallet","setSelectedWallet","isOpen","setIsOpen","useCallback","reset","handleOpenModal","handleConnect","WalletConnectConnector","walletConnectProvider","wc","uri","getAccount","message","handleDisconnect","handleWalletButtonClick","isMetaMaskMobile","isMobile","isMetaMask","useAsyncEffect","isMounted","useMemo","SvgChevronRight","Modal","separator","titleElement","showBackButton","onBackClick","large","appear","Title","useImage","fallbackSrc","hasLoaded","setHasLoaded","hasError","setHasError","image","Image","handleError","handleLoad","addEventListener","removeEventListener","alt","lazy","WalletConnectModalList","ImposterWallet","style","background","isAddress","WalletConnectModalPending","WalletConnectModalError","showMetaMaskMobileError","WalletConnectModal","SvgWallet","SvgDisconnect","ButtonVariant","ButtonSize","timeout","disabledText","getVariantStyle","variant","Primary","Secondary","Tertiary","getSizeStyle","Full","ExtraLarge","Large","Meduim","Small","ExtraSmall","memo","ButtonToggle","labels","toggle","setToggle","onClass","offClass","label","ButtonPercentages","percentages","selected","itemStyle","percentage","prevPopFunc","defaultOptions","placement","modifiers","options","offset","PopoverV3","buttonElement","hover","showArrow","popperElRef","targetElement","setTargetElement","popperElement","setPopperElement","arrowRef","setArrowRef","usePopper","element","styles","attributes","localOpen","setLocalOpen","useLocalState","handleOpen","handleOnMouseEnter","handleOnMouseLeave","popper","beforeEnter","afterLeave","arrow","transform","WalletConnectButton","buttonText","string","toLength","startEndLength","start","end","shortenString","loggedIn","GoToPage","navigate","useNavigation","goToPage","useNavigate","NetworkIndicator","LayoutHeader","isTop","setIsTop","isLoading","listener","pageYOffset","items","link","TopMenuDropdown","NotificationAlert","NotificationAlerts","hide","fetchTokenBalanceMulticall","tokenIds","tokenId","buildTokenBalanceCall","bn","idx","read","buildTokenTotalSupplyCall","fetchETH","getBalance","buildTokenListTokens","userPreferredListIds","tokenListTokensMerged","flatMap","buildIpfsUri","ipfsHash","listOfLists","userPreferredListIds$","tokenListsNew$","axios","tokenListTokens$","combineLatest","userPreferredTokenListTokens","oneMinute$","axiosInstance","create","baseURL","headers","BancorV2Api","getWelcome","weth","dlt_id","wethTkn","reserve","BancorV3Api","getTokens","rateHistory7d","getStatistics","getBnt","BancorApi","v2","v3","OrderStatus","apiData$","apiTokens$","apiPools$","apiTokensV3$","apiBntV3$","apiPoolsV3$","apiBnt","bntPool","poolTokenDltId","tradingLiquidityTKN","tradingLiquidity","tkn","tradingLiquidityBNT","eur","eth","volume24h","fees24h","stakedBalance","standardRewardsClaimed24h","standardRewardsStaked","standardRewardsProviderJoined","standardRewardsProviderLeft","tradingEnabled","depositWeth","tokenContract","wei","deposit","hash","withdrawWeth","withdraw","code","DeniedTx","createOrder","fromToken","toToken","expiry","fromAmountWei","toAmountWei","salt","hexlify","randomBytes","getOrderDetails","orderDetails","order","maker","toLowerCase","taker","NULL_ADDRESS","makerAmount","makerToken","takerAmount","takerToken","txOrigin","_signTypedData","domain","verifyingContract","types","signature","splittedSign","splitSignature","jsonOrder","chainId","r","signatureType","EIP712","sendOrders","exchangeProxyAddress","version","RfqOrder","swapLimit","checkApproval","fromIsEth","asSeconds","result","fetchKeeperDaoTokens","getOrders","currentUser","transformResponse","JSONbig","orderResToLimit","orders","metaData","Cancelled","tokensV2$","take","toPromise","payToken","getToken","payAmount","getAmount","orderHash","expiration","rate","filled","filledAmount_takerToken","remainingFillableAmount_takerToken","orderRes","rfqOrder","post","cancelOrders","stringOrders","limitOrder","orderToStringOrder","cancelRfqOrder","batchCancelRfqOrders","String","buildTokenObject","apiToken","minMintingBalance","balances","tlToken","formatUnits","balanceUsd","price_change_24","rate_24h_ago","seven_days_ago","getUTCSeconds","rates_7d","time","volume_24h","bntReserve","sufficientMintingBalance","isWhitelisted","usd_24h_ago","buildTokenObjectV3","dltId","rate24hAgo","userBalancesReceiver$","uniqueId","updateUserBalances","userBalancesInWei$","apiTokens","userBalancesInWeiV3$","apiTokensv3","minNetworkTokenLiquidityForMinting$","liquidityProtectionSettingsContract","minNetworkTokenLiquidityForMinting","tokenListTokens","userPreferredTokenListTokensMap","tokenListToken","tokensV3$","apiPoolsMap","apiPool","allTokensNew$","allTokenListTokensMap","keeperDaoTokens$","averageFormat","average","mantissa","optionalMantissa","spaceSeparated","lowPrecision","statisticsV3$","apiDataV2","stats","bnt24hChange","bntRate","bntRate24hAgo","bntSupply","bnt_supply","totalBntStakedV2","stakedBntPercentV2","toExponential","stakedBntPercentV3","stakedBalanceBNT","totalBNTStaked","totalLiquidity","total_liquidity","totalVolume","total_volume_24h","totalVolume24h","totalFees","total_fees_24h","totalFees24h","numbro","change24h","fetchLockedAvailableBalances","storeAddress","lockedBalanceCount","lockedBalanceRange","lockedBalances","bnts","expirys","partition","isBefore","totalAvailable","prev","claimBnt","onHash","onCompleted","rejected","failed","liquidityProtectionContract","claimBalance","addLiquidity","converterAddress","tknWei","bntWei","estimateGas","estimate","gasLimit","removeLiquidity","poolToken","minBntReturn","poolDecimals","minTknReturn","liquidateFn","liquidate","addLiquidityV2Single","first","checkPriceDeviationTooHigh","selectedTkn","converterContract","settingsAddress","settingsContract","sortBy","o","primaryReserveAddress","secondaryReserveAddress","recentAverageRate","reserveBalance","getSpaceAvailable","tknDecimals","poolAvailableSpace","fetchBntNeededToOpenSpace","systemStoreContract","fetchReserveBalances","bntNeeded","getConnectorBalance","buildRemoveLiquidityReturnCall","portion","removeTimestamp","buildProtectionDelayCall","buildCall","fetchPositions","protectedLiquidityIds","positionIds","buildProtectedPositionCall","position","reserveTokenAddress","owner","poolAmount","reserveAmount","reserveRateN","reserveRateD","protectionId","fetchROI","positions","timeNow","timeNowUnix","fullWaitTimeUnix","flat","currentTargetAmount","fullTargetAmount","roiDec","fetchProtectedPositions","liquidityProtectionSettingsContractAddress","liquidityProtectionStoreContractAddress","liquidityProtectionStoreContract","liquidityProtectionContractAddress","rawPositions","protectionDelay","minProtectionDelay","maxProtectionDelay","positionsRoi","fetchedRewardsMultiplier","fetchedPendingRewards","values","merge","keyBy","initalStake","insuranceStart","fullCoverage","day","week","withdrawProtection","getWithdrawBreakdown","constract","removeLiquidityReturn","expectedAmount","actualAmount","buildProviderStakeCall","fetchStandardRewardsByUser","poolsMap","allPrograms","providerProgramIds","ids","poolTokenStakedWei","program","poolTokenToUnderlying","pendingRewards","fetchAllStandardRewards","programIds","isEnabled","startTime","endTime","rewardRate","utc","buildLatestProgramIdCall","fetchLatestProgramIdsMulticall","standardRewardPrograms$","buildPoolObject","fees_24h","reserveTkn","reserveBnt","supply","buildPoolV3Object","latestProgramIdMap","rewardsPrograms","standardRewardsApr","rewardRate24h","tradingFeesApr","totalApr","tradingFees","autoCompounding","total","poolsNew$","poolsV3$","apiPoolsV3","standardRewardPrograms","latestProgramIds","protectedPositions$","rewards$","fetchPendingRewards","fetchTotalClaimedRewards","claimedRewards","totalRewards","lockedAvailableBnt$","lockedAvailableBalances","fetchProtocolBnBNTAmount","bnBNT","balanceOf","protocolBnBNTAmount$","snapshots$","fetchSnapshotRewards","fetchPoolTokenToUnderlyingMulticall","fetchPortfolioV3Holdings","poolTokenIdsMap","poolTokenIds","poolTokenBalancesMap","poolIdsWithPoolTokenBalance","poolTokenId","poolTokenToUnderlyingMap","fetchPortfolioV3WithdrawalSettings","withdrawalFeePPM","fetchPortfolioV3Withdrawals","withdrawalRequestIds","withdrawalRequest","fetchWithdrawalRequestOutputBreakdown","req","withdrawalAmounts","baseTokenAmount","totalAmount","portfolioHoldings$","portfolioStandardRewards$","portfolioWithdrawals$","portfolioWithdrawalSettings$","getRateAndPriceImapct","networkContractAddress","conversionPath","path","rateShape","calculateSpotPriceAndRate","v2SpotRate","v2Rate","v2PI","spotPrice","v2PriceImpact","v3PoolTradingEnabled","getV3Rate","v3Rate","getV3PriceImpact","v3PI","v3PriceImpact","isV3","log","priceImpact","getRate","rateByPath","calculateMinimumReturn","expectedWei","executeSwapTx","fromAmount","toAmount","fromWei","expectedToWei","minReturn","write","tradeBySourceAmount","findPath","convertByPath","findPoolByToken","fromPool","toPool","fromShape","buildTokenPoolCall","toShape","mCall","fromShape1","bntShape1","bntShape2","toShape2","spot1","spot2","apiData","tradeOutputBySourceAmount","fromBNT","toBNT","tradingFeePPM","baseTokenTradingLiquidity","bntTradingLiquidity","fromLiqudity","toLiqudity","fromTradingFeePPM","toTradingFeePPM","trueAnchors$","converterRegistry","getAnchors","anchorAndConverters$","anchorAddresses","converterRegistryAddress","getConvertersByAnchors","converters","zipAnchorAndConverters","startWith","partialPoolTokens$","anchorAndConverters","anchorAddress","partialPTokens","anchorConverter","anchor","totalSupply","converterAddresses","zip","poolTokens$","partialPoolTokens","percent","tknBalanceWei","bntBalanceWei","SvgTrade","SvgEarn","SvgPortfolio","SvgMore","MobileBottomNav","SvgCoins","SvgDollar","SwapSwitch","SwapHeader","isLimit","setIsLimit","marketActive","limitActive","InputField","setInput","bgGrey","borderGrey","dataCy","customClass","inputFieldStyles","LayoutHeaderMobile","ModalFullscreen","showHeader","SvgEdit","SuggestedTokens","suggestedTokens","suggestedTokenList","Switch","checked","SvgSearch","SearchInput","setValue","SearchableTokenListLayout","manage","setManage","SearchableTokenList","excludedTokens","includedTokens","search","setSearch","setUserLists","tokensLists","sortedTokens","tokenList","isSelected","listId","newUserPreferredListIds","handleTokenlistClick","SvgChevronDown","TokenInputField","border","selectable","setToken","amountUsd","setAmountUsd","disabled","debounce","startEmpty","usdSlippage","fieldBalance","balanceLabel","onInputChange","text","inputValue","reducedBalance","reducedUsdBalance","setMaxAmount","convertedAmount","inputMode","Dropdown","setSelected","openUp","Options","Option","active","SvgClockSolid","_path2","ModalDuration","setDuration","setDays","setHours","setMinutes","daysItems","Array","hoursItems","minutesItems","SvgSync","strokeMiterlimit","SvgLock","ApprovalContract","NULL_APPROVAL_CONTRACTS","getApproval","spender","amountWei","allowanceWei","isApprovalRequired","allowance","setApproval","resolveImmediately","amountFinal","approve","getNetworkContractApproval","getApprovalAddress","setNetworkContractApproval","BancorNetworkV3","ExchangeProxy","Governance","ModalApprove","handleApproved","waitForApproval","SvgDeposit","Field","ModalDepositETH","onConfirm","SwapLimit","setFromToken","setToToken","switchTokens","refreshLimit","setFromAmount","setToAmount","toAmountUsd","setToAmountUsd","fromAmountUsd","setFromAmountUsd","setRate","marketRate","setMarketRate","setPercentage","selPercentage","setSelPercentage","showApproveModal","setShowApproveModal","showEthModal","setShowEthModal","fromError","setFromError","rateWarning","setRateWarning","isLoadingRate","setIsLoadingRate","previousField","lastChangedField","fiatToggle","calculatePercentageByRate","calcFrom","calcTo","calcRate","handleFieldChanged","field","isTooHigh","isTooLow","calculateRateByMarket","handleSwap","updateETHandWETH","showETHtoWETHModal","isInsufficient","handleSwapClick","tokenPair","ratePercentage","conversion_type","conversion_blockchain_network","conversion_token_pair","conversion_from_token","conversion_to_token","conversion_from_amount","conversion_from_amount_usd","conversion_to_amount","conversion_to_amount_usd","conversion_input_type","conversion_rate","conversion_rate_percentage","conversion_experation","conversion_settings","setCurrentConversion","percNum","sel","eq","Speedometer","summary","rotation","score","gradientColour","titleColour","cx","cy","strokeDasharray","strokeDashoffset","x1","y1","x2","y2","gradientTransform","stopColor","stopOpacity","bullish","bearish","toPairs","pick","sort","neutral","linePercentages","count","linePercentage","decPercent","color","LinePercentage","showEmpty","SvgInfoSolid","opacity","InsightCard","tooltip","InsightRow","cards","inOutOfTheMoney","in","between","out","concentration","byTimeHeldComposition","cruiser","trader","hodler","card","SvgLightbulb","SvgIntotheblock","_path3","Insight","fromTokenIntoBlock","toTokenIntoBlock","initialValue","storedValue","setStoredValue","valueToStore","Function","useLocalStorage","isExpanded","setIsExpanded","onTransitionEnd","axiosConfig","process","calculateTimeHeld","timeHeld","sumTimeHeld","calculateInOut","inOut","sumInOut","intoTheBlockByToken","signal","overview","TradeWidgetInput","onFocus","onTokenSelect","disableSelection","isFiat","inputRef","isFocused","setIsFocused","inputFiat","inputTkn","handleFocusChange","focus","blur","handleChange","preventDefault","oppositeUnit","calcOppositeValue","useTknFiatInput","setInputTkn","setInputFiat","onDebounce","inputUnit","isTyping","setIsTyping","debouncedChangeHandler","debouncedSetIsTyping","oppositeValue","queue","PQueue","concurrency","ModalApproveNew","useApproveModal","onComplete","gtmPopupEvent","gtmSelectEvent","tokenIndex","setTokenIndex","setIsLoading","awaitConfirmation","receipts","receipt","onStart","checkApprovalRequired","checkNextToken","nextIndex","showNotification","rejectNotification","stakeNotification","unstakeNotification","stakeFailedNotification","unstakeFailedNotification","swapNotification","stakeRewardsFailedNotification","claimRewardsFailedNotification","withdrawProtectedPosition","withdrawProtectedPositionFailed","addLiquiditySingleNotification","addLiquiditySingleFailedNotification","addLiquidityNotification","amountTkn","amountBnt","addLiquidityFailedNotification","withdrawCancelNotification","initWithdrawNotification","confirmWithdrawNotification","migrateNotification","migrateFailedNotification","confirmJoinNotification","confirmLeaveNotification","confirmClaimNotification","confirmDepositNotification","rewardsStakedToV3Notification","rewardsClaimedNotification","confirmMigrateExtHoldingNotification","failedNotification","TradeWidgetDetails","fromInput","toInput","TradeWidgetCTA","handleCTAClick","isBusy","errorInsufficientBalance","usingWeth","isSwapDisabled","swapButtonText","TradeWidgetSwitchBtn","handleSelectSwitch","TradeWidget","tradeWidget","fromInputTkn","setFromInputTkn","fromInputFiat","setFromInputFiat","toInputTkn","setToInputTkn","toInputFiat","setToInputFiat","setPriceImpact","setIsV3","onFromDebounce","clear","toValue","isZero","toValueFiat","filteredTokens","onTokenChange","fromTokenAddressRef","toTokenAddressRef","useTradeWidget","setIsBusy","handleTrade","ApproveModal","handleSelectFrom","handleSelectTo","useTrade","SwapWidget","ethOrFirst","fromTokenITB","setFromTokenITB","toTokenITB","setToTokenITB","TablePagination","gotoPage","previousPage","canPreviousPage","nextPage","canNextPage","pageCount","pageOptions","setPageSize","pageIndex","pageSize","SvgInfo","TableHeader","headerGroups","columns","getColumn","idToColumn","col","hg","getHeaderProps","getStyleAttr","column","getSortByToggleProps","minWidth","maxWidth","getTooltip","headerGroup","getHeaderGroupProps","isSorted","isSortedDesc","headerClassName","render","TableBody","getTableBodyProps","prepareRow","row","getRowProps","cells","cell","getCellProps","DataTable","defaultSort","stickyColumn","noPagination","useTable","autoResetSortBy","disableSortRemove","autoResetPage","autoResetExpanded","useSortBy","useExpanded","usePagination","getTableProps","useQuery","URLSearchParams","useLocation","Swap","setOrders","setWeth","refreshOrders","handleWithdrawWeth","handleCancelOrders","Header","accessor","Cell","sortDescFirst","original","cellData","disableSortBy","desc","useSwapLimitTable","SwapLimitTable","Page","subtitle","trailingSubtitle","trailingTitle","PageNavLink","hidden","resolved","useResolvedPath","match","useMatch","useMyRewards","proof","hasClaimed","setHasClaimed","handleClaimed","userClaimed","claimed","totalRewardsUsd","claimableRewards","claimableRewardsUsd","canClaim","stakeRewardsToV3","stakeSnapshotRewards","claimRewardsToWallet","claimSnapshotRewards","Portfolio","v1","showV2","updatePortfolioData","holdings","requests","TokenBalance","imgUrl","inverted","CountdownTimer","date","msgEnded","interval","onEnded","countdown","setCountdown","timerEnded","WithdrawItem","openCancelModal","openConfirmModal","dateNow","intervalMs","setNow","useDateNow","isLocked","TokenBalanceLarge","V3WithdrawCancelModal","isModalOpen","setIsModalOpen","withdrawRequest","cancelWithdrawal","txBusy","setTxBusy","compoundingApr","ProgressBar","showPercentage","backgroundColor","V3WithdrawConfirmOutputBreakdown","outputBreakdown","isBntToken","V3WithdrawConfirmInfo","handleCancelClick","V3WithdrawConfirmModal","setOutputBreakdown","missingGovTokenBalance","onModalClose","approveTokens","tokensToApprove","handleWithdrawClick","useV3WithdrawConfirm","isPoolStable","setIsPoolStable","checkPoolStatus","useIsPoolStable","V3Withdraw","isModalCancelOpen","setIsModalCancelOpen","isModalConfirmOpen","setIsModalConfirmOpen","useV3Withdraw","SvgArrow","ModalV3","useDebounce","setState","setDebouncedState","_val","debouncer","_prop","observerErr","borderBoxWarn","useDimensions","debouncedMs","useBorderBoxSize","stateDebounced","setStateDebounced","prevSizeRef","observerRef","warnedRef","unobserve","disconnect","observe","raf","ResizeObserver","requestAnimationFrame","contentBoxSize","borderBoxSize","contentRect","boxSize","warn","inlineSize","blockSize","cancelAnimationFrame","TokenInputV3","useTokenInputV3","containerRef","containerWidth","oppositeRef","oppositeWidth","symbolRef","symbolWidth","maxInputWidth","helperRef","resize","fontSize","textContent","offsetWidth","inputRefCurrent","useResizeTokenInput","TokenInputPercentageV3","handleSetPercentage","ProtectedSettingsV3","asLink","lockDurationInDays","withdrawalFeeInPercent","textClass","ExpandableSection","btnClassName","initiallyExpanded","renderButtonChildren","expanded","setExpanded","DepositV3Modal","renderButton","setAmount","accessFullEarnings","setAccessFullEarnings","extraGasNeeded","setExtraGasNeeded","poolV3Map","isInputError","isETH","depositAndJoin","shouldConnect","canDeposit","handleClick","condition","useConditionalInterval","getGasPrice","gasPrice","extraGasCostUSD","stopPropagation","AvailableItem","navOptions","nextEl","prevEl","disabledClass","V3AvailableToStake","availabelToStake","modules","Navigation","spaceBetween","slidesPerView","grabCursor","slidesPerGroup","navigation","breakpoints","useV3Bonuses","isBonusModalOpen","bonuses","setBonusModalOpen","bonusUsdTotal","group","handleClaim","claimRewards","handleClaimAndEarn","stakeRewards","TokensOverlap","maxLogos","tokenCount","marginLeft","SvgCheck","BonusGroupItems","rewardsGroup","setSelectedIds","selectedIds","addOrRemove","BonusGroup","allIds","isTxClaimBusy","setIsTxClaimBusy","bntDisabled","onClaimClick","onRestakeClick","V3BonusesModal","V3ClaimBonuses","_rect","_path6","_path7","_path8","_rect2","_path9","_path10","_path11","_path12","_path13","SvgHoldingsLight","rx","fillOpacity","SvgHoldingsDark","SvgGift","V3UnstakeModal","programsMerged","activePrograms","inactivePrograms","handleLeaveClick","V3HoldingsItemStaked","isDisabled","ModalFullscreenV3","CirclePercentage","strokeColor","number","SvgLightning","AMMProvider","V3WithdrawStep1Breakdown","percentageUnstaked","percentageStaked","useV3WithdrawStep3","setStep","hasStarted","setPoolTokenAmountWei","setWithdrawalAmountWei","currentPoolTokenBalanceWei","currentTknBalanceWei","currentTknBalance","currentTknBalanceWithTolerance","underlyingToPoolToken","inputAmountInPoolTokenWei","initWithdraw","initWithdrawal","handleButtonClick","V3WithdrawStep1","withdrawalFeeInTkn","multipliedBy","skipStep2","handleNextStep","setBalance","valueTkn","valueFiat","showBreakdown","useV3WithdrawStep1","V3WithdrawStep3","V3WithdrawStep4","V3WithdrawStep2","tokenAmountToUnstakeWei","amountToUnstake","handleLeave","useV3WithdrawStep2","V3WithdrawModal","step","useV3WithdrawModal","V3HoldingsItemUnstaked","txJoinBusy","setTxJoinBusy","handleJoinClick","onStartJoin","V3HoldingsItem","selectedId","setSelectedId","rewardTokenAmountUsd","V3Holdings","holdingsSorted","mockToken","fetchApyVisionUniswap","fetchApyVisionNonUniswap","userPools","fetchExternalHoldings","positionsUni","positionsNonUni","getRektStatus","usdValue","hodlValue","rektUsdValue","getExternalHoldingsNonUni","nonBancorToken","tokenCurrentBalance","totalValueUsd","rektStatus","initialCapitalValueUsd","ammName","Sushiswap","UniswapV2","UniswapV3","getProviderName","poolProviderKey","parseUnits","currentOwnedLpTokens","ammKey","poolTokenAddress","getMigrateFnByAmmProvider","migrateSushiSwapV1Position","migrateUniswapV2Position","V3ExternalHoldingsModal","migrate","migrateFn","tokenName","tokenCurrentPrice","V3ExternalHoldingsItem","initialApyVisionData","useExternalHoldings","apyVisionData","setApyVisionData","token0","token0_id","token1","token1_id","current_day_data","position_usd_value_at_block","hodl_value","getExternalHoldingsUni","V3ExternalHoldings","V3Portfolio","MyStake","MyRewards","ProtectedPositionTableCellAmount","Expander","TableCellExpander","canExpandMultiple","singleContent","groupContent","subMenu","canExpand","toggleRowExpanded","toggleAllRowsExpanded","migrateV2Positions","dict","groupBy","grouped","posStruct","migratePositions","TokenInputPercentage","amountUSD","setAmountUSD","WithdrawLiquidityInfo","protectionNotReached","multiplierWillReset","WithdrawLiquidityWidget","protectedPosition","amountDebounce","setAmountebounce","isPriceDeviationToHigh","setIsPriceDeviationToHigh","breakdown","setBreakdown","gov","withdrawingBNT","emtpyAmount","tokenInsufficent","showVBNTWarning","govTokenBalance","withdrawDisabled","transactionId","handleWithdraw","userSelectedPercentage","UpgradeBntModal","totalBNT","SvgClock","useProtectedPositions","groupedPositions","isGroup","ProtectedPositionTableCellLiquidity","sortType","ProtectedPositionTableCellClaimable","ProtectedPositionTableCellRoi","isOpenWithdraw","setIsOpenWithdraw","isOpenBnt","setIsOpenBnt","isPoolExistV3","isMigrateDisabled","button","ProtectedPositionTableCellActions","ProtectedPositionsTable","ClaimAvailable","availableBNT","noBntToClaim","claimBntNotification","SvgLocked","ClaimLocked","lockedBNT","noBntLocked","lock","PoolTokensCellActions","removeLiquidityNotification","removeLiquidityNotificationFailed","PoolTokensTable","PoolTokens","Widget","goBack","WidgetLoading","SelectPoolModalContent","onSelect","SelectPoolModal","handleOnSelect","SelectPool","RewardsStakeCTA","errorBalance","stakeRewardsNotification","stakePoolLevelRewards","newPoolId","reserveId","btn","RewardsStakeSpaceAvailable","spaceAvailable","setSpaceAvailable","fetchData","useRewardsClaim","setClaimableRewards","setErrorBalance","setBntAmount","setBntAmountUsd","fetchClaimableRewards","RewardsStakeWidget","WidgetError","RewardsStake","useParams","getPoolById","RewardsClaimAmount","RewardsClaimCTA","RewardsClaim","SvgProtected","Operations","DepositMethods","Ticker","speedMs","pause","setPause","setPos","scrollBack","setScrollBack","isMomentumScrolling","setIsMomentumScrolling","getElementById","scrollWidth","clientWidth","scrollPosition","scrollLeft","nextPosition","handleScroll","unpauseOnMomentumEnd","scrollStart","scrollPos","onTouchStart","onTouchEnd","TopMovers","changePositive","seriesOptDefault","lineWidth","crosshairMarkerVisible","priceLineVisible","chartOptDefault","layout","crosshair","vertLine","visible","horzLine","leftPriceScale","borderVisible","rightPriceScale","timeScale","grid","horzLines","vertLines","handleScale","sizeDefault","LineChartSimple","seriesOptions","chartOptions","chartDiv","createRef","chart","createChart","applyOptions","fitContent","addLineSeries","setData","TokenTable","searchInput","setSearchInput","Tokens","FiatBox","fiatIn","operations","fiatOut","logo","buyUrl","sellUrl","smallGap","depositMethods","method","SvgMoonpay","SvgBanxa","gradientUnits","SvgSimplex","SvgRamp","SvgMercuryo","fiats","moonPayLogo","wire","creditCard","debitCard","samsungPay","googlePay","applePay","banxaLogo","ideal","interac","sepa","simplexLogo","rampLogo","openBanking","sepaInstant","fasterPayments","mercuryoLogo","Fiat","getStakedAmount","networkVars","govContract","votesOf","stakeAmount","expandedAmount","stake","unstakeAmount","unstake","getUnstakeTimer","voteLocks","locks","ModalVbnt","stakeBalance","stakeDisabled","fieldBlance","handleStakeUnstake","refreshBalances","checkApprove","VoteCard","content","trailingContent","footer","Vote","setGovToken","setStakeAmount","unstakeTime","setUnstakeTime","isUnlocked","setIsUnlocked","stakeModal","setStakeModal","isStake","setIsStake","refresh","unstakeTimer","stakedAmount","stakedVBNT","html","TermsOfUse","dangerouslySetInnerHTML","__html","subcontent","PrivacyPolicy","NotFound","AdminTknData","allV3Pools","userStandardRewardPrograms","AdminUseMainnet","AdminUseFork","inputRpcUrl","setInputRpcUrl","inputV3ApiUrl","setInputV3ApiUrl","inputV2ApiUrl","setInputV2ApiUrl","saved","setSaved","rpc","AdminControls","Admin","Pools","AddLiquiditySingleInfoBox","AddLiquiditySingleSelectPool","AddLiquiditySingleSpaceAvailable","selectedToken","setSelectedToken","spaceAvailableBnt","setSpaceAvailableBnt","spaceAvailableTkn","setSpaceAvailableTkn","showPriceDeviationWarning","setShowPriceDeviationWarning","setBntNeeded","AddLiquiditySingleAmount","setErrorMsg","isBNTSelected","AddLiquiditySingleCTA","AddLiquiditySingle","setIsBNTSelected","isBNT","addV2Protection","cleanAmount","location","AddLiquidityDualStakeAmount","setTknAmount","bntTknRate","errorBalanceBnt","setErrorBalanceBnt","errorBalanceTkn","setErrorBalanceTkn","tknAmountUsd","setTknAmountUsd","onBntAmountChange","onTknAmountChange","AddLiquidityEmptyCTA","handleAddLiquidity","cleanTkn","cleanBnt","AddLiquidityDualTokenPrices","AddLiquidityDual","reserveBalances","tknReserve","tknWithUsd","AddLiquidityEmptyStep1","tknUsdPrice","setTknUsdPrice","AddLiquidityEmptyStep2","tknWithPrice","AddLiquidityEmpty","AddLiquidity","React","getPoolByIdWithoutV3","isCheckingType","setIsCheckingType","setType","setReserveBalances","checkType","isPoolEmpty","PoolsTableSort","lowVolume","setLowVolume","lowLiquidity","setLowLiquidity","lowEarnRate","setLowEarnRate","Statistics","TopPools","PoolsTable","toolTip","EarnTableV2","aprOne","aprTwo","symbolOne","symbolTwo","formatApr","PoolsTableCellApr","BancorRouter","routes","useRoutesEarn","welcomeElement","portfolioElement","useRoutesPortfolio","pathSplit","searchParams","tradeSearchParams","useRoutesRedirect","useRoutes","App","triedAutoLogin","setTriedAutoLogin","isSafeApp","then","loadedInSafe","isAuthorized","useAutoConnect","unsupportedNetwork","subscribe","twoLists","lockedAvailableBnt","subscribeToObservables","dark","class","reportWebVitals","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","locales","en","he","I18nProvider","messages","defaultLocale","ReactDOM","getLibrary","library","pollingInterval","wss","net","RPC_URLS","InjectedConnector","supportedChainIds","SafeAppConnector","qrcode","WalletLinkConnector","appName","FrameConnector","FortmaticConnector","apiKey","PortisConnector","dAppId","networks","TorusConnector","stakeReserveRewards","totalClaimedRewards","buildRewardsMultiplierCall","buildPendingRewardsCall","_handleSnapshotRewards","Buffer","solidityKeccak256"],"mappings":"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AER,CACED,KAAM,oBACNC,KAAM,WAER,CACED,KAAM,gBACNC,KAAM,YAGVD,KAAM,sBACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,aACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,GACRC,KAAM,6BACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,SAGVE,SAAS,EACTC,gBAAiB,OACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,GACRC,KAAM,iBACNE,QAAS,GACTC,SAAS,EACTC,gBAAiB,aACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,WAER,CACED,KAAM,oBACNC,KAAM,WAER,CACED,KAAM,gBACNC,KAAM,YAGVD,KAAM,WACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,UACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,GACRC,KAAM,kBACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,OACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,SACNC,KAAM,WAER,CACED,KAAM,MACNC,KAAM,WAER,CACED,KAAM,UACNC,KAAM,YAGVD,KAAM,iBACNE,QAAS,GACTC,SAAS,EACTC,gBAAiB,aACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,GACRC,KAAM,eACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,OACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,GACRC,KAAM,kBACNE,QAAS,GACTC,SAAS,EACTC,gBAAiB,aACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,GACRC,KAAM,WACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,OACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,YAGVD,KAAM,aACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,OACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,GACNC,KAAM,YAGVD,KAAM,cACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,SAGVE,SAAS,EACTC,gBAAiB,OACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,WACNC,KAAM,WAER,CACED,KAAM,gBACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,WAER,CACED,KAAM,eACNC,KAAM,YAGVD,KAAM,sBACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,aACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,GACRC,KAAM,QACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,OACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,WAER,CACED,KAAM,eACNC,KAAM,WAER,CACED,KAAM,oBACNC,KAAM,WAER,CACED,KAAM,gBACNC,KAAM,YAGVD,KAAM,cACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,UACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,WAER,CACED,KAAM,eACNC,KAAM,YAGVD,KAAM,qBACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,aACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,GACRC,KAAM,kBACNE,QAAS,GACTC,SAAS,EACTC,gBAAiB,aACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,WAER,CACED,KAAM,eACNC,KAAM,WAER,CACED,KAAM,oBACNC,KAAM,WAER,CACED,KAAM,gBACNC,KAAM,YAGVD,KAAM,gBACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,UACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,WAER,CACED,KAAM,oBACNC,KAAM,WAER,CACED,KAAM,iBACNC,KAAM,WAER,CACED,KAAM,gBACNC,KAAM,YAGVD,KAAM,WACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,UACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,YAGVD,KAAM,kBACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,aACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,WAER,CACED,KAAM,eACNC,KAAM,YAGVD,KAAM,aACNE,QAAS,CACP,CACEF,KAAM,GACNC,KAAM,YAGVE,SAAS,EACTC,gBAAiB,UACjBH,KAAM,YAER,CACEH,UAAU,EACVC,OAAQ,CACN,CACEC,KAAM,QACNC,KAAM,aAER,CACED,KAAM,UACNC,KAAM,WAER,CACED,KAAM,aACNC,KAAM,WAER,CACED,KAAM,oBACNC,KAAM,WAER,CACED,KAAM,iBACNC,KAAM,WAER,CACED,KAAM,gBACNC,KAAM,WAER,CACED,K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TS,aAAc,OACdf,KAAM,aACNC,KAAM,SAGVD,KAAM,aACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,kBACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,kBACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,iBACNC,KAAM,WAGVD,KAAM,aACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,SACdf,KAAM,WACNC,KAAM,UAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,UACNC,KAAM,WAGVD,KAAM,sBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,kBACdf,KAAM,gBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,YAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,kBACdf,KAAM,gBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,YAGVD,KAAM,mBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,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c,UACdf,KAAM,QACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,yBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,yBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,4BACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVD,KAAM,mBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,QACNC,KAAM,YAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,eACNC,KAAM,YAGVD,KAAM,2BACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,eACNC,KAAM,YAGVD,KAAM,yBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,aACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,yBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,yBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,YACdf,KAAM,QACNC,KAAM,aAER,CACEK,SAAS,EACTS,aAAc,OACdf,KAAM,UACNC,KAAM,SAGVD,KAAM,yBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,0BACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,eACNE,QAAS,CACP,CACEa,aAAc,SACdf,KAAM,GACNC,KAAM,WAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,kBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,6BACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,0BACNE,QAAS,CACP,CACEa,aAAc,SACdf,KAAM,GACNC,KAAM,WAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,QACNC,KAAM,SAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,gCACdf,KAAM,YACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,uBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,YAGVD,KAAM,kBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,yBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVG,gBAAiB,UACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,iCACdf,KAAM,QACNC,KAAM,SAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,gCACdf,KAAM,YACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,uBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,YAGVD,KAAM,gBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,yBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,qCACdf,KAAM,SACNC,KAAM,YAGVD,KAAM,yBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,4BACdf,KAAM,cACNC,KAAM,aAER,CACEc,aAAc,4BACdf,KAAM,cACNC,KAAM,aAER,CACEc,aAAc,YACdf,KAAM,gBACNC,KAAM,cAGVD,KAAM,6BACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,4BACdf,KAAM,cACNC,KAAM,aAER,CACEc,aAAc,4BACdf,KAAM,cACNC,KAAM,aAER,CACEc,aAAc,YACdf,KAAM,gBACNC,KAAM,cAGVD,KAAM,2BACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,SACNC,KAAM,YAGVD,KAAM,uBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,qCACdf,KAAM,SACNC,KAAM,WAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,kCACdf,KAAM,aACNC,KAAM,YAGVD,KAAM,mCACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,kCACdf,KAAM,SACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVc,aAAc,oCACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,YACdf,KAAM,kCACNC,KAAM,aAER,CACEc,aAAc,SACdf,KAAM,oBACNC,KAAM,WAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,SACNC,KAAM,WAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,kCACdf,KAAM,aACNC,KAAM,YAGVD,KAAM,iCACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,kCACdf,KAAM,SACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVc,aAAc,oCACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,YACdf,KAAM,kCACNC,KAAM,aAER,CACEc,aAAc,SACdf,KAAM,oBACNC,KAAM,WAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,QACNC,KAAM,UAGVD,KAAM,mBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,YAGVD,KAAM,wBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,YAGVD,KAAM,sBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,iCACdf,KAAM,QACNC,KAAM,UAGVD,KAAM,iBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,QACNC,KAAM,SAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,gCACdf,KAAM,YACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,uBACNC,KAAM,YAGVD,KAAM,iBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,yBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVG,gBAAiB,UACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,QACNC,KAAM,SAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,gCACdf,KAAM,YACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,uBACNC,KAAM,YAGVD,KAAM,uBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVG,gBAAiB,UACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,iCACdf,KAAM,QACNC,KAAM,SAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,gCACdf,KAAM,YACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,uBACNC,KAAM,YAGVD,KAAM,qBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,iCACdf,KAAM,QACNC,KAAM,SAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,gCACdf,KAAM,YACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,uBACNC,KAAM,YAGVD,KAAM,eACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,yBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,QACNC,KAAM,UAGVD,KAAM,oBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,YACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,QACNC,KAAM,UAGVD,KAAM,oBACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,kCACdf,KAAM,SACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVc,aAAc,kCACdf,KAAM,YACNC,KAAM,UAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,mCACdf,KAAM,QACNC,KAAM,SAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,gCACdf,KAAM,YACNC,KAAM,UAGVD,KAAM,6BACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,kCACdf,KAAM,SACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVc,aAAc,kCACdf,KAAM,YACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,iCACNC,KAAM,WAER,CACEc,aAAc,OACdf,KAAM,mBACNC,KAAM,SAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,2BACNE,QAAS,CACP,CACEa,aAAc,SACdf,KAAM,aACNC,KAAM,WAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,iCACdf,KAAM,QACNC,KAAM,UAGVD,KAAM,kBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,YACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,iCACdf,KAAM,QACNC,KAAM,UAGVD,KAAM,kBACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,kCACdf,KAAM,SACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVc,aAAc,kCACdf,KAAM,YACNC,KAAM,UAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEmB,WAAY,CACV,CACEH,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,0BACdf,KAAM,aACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,SACNC,KAAM,UAER,CACEc,aAAc,UACdf,KAAM,OACNC,KAAM,YAGVc,aAAc,iCACdf,KAAM,QACNC,KAAM,SAER,CACEiB,WAAY,CACV,CACEH,aAAc,kCACdf,KAAM,gBACNC,KAAM,SAER,CACEc,aAAc,QACdf,KAAM,IACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,gCACdf,KAAM,YACNC,KAAM,UAGVD,KAAM,2BACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,kCACdf,KAAM,SACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,yBACNC,KAAM,YAGVc,aAAc,kCACdf,KAAM,YACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM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I,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,oBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,eACNC,KAAM,YAGVD,KAAM,mBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,SACNC,KAAM,YAGVD,KAAM,cACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,SACNC,KAAM,YAGVD,KAAM,cACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,0BACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,SACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,SACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,OACdf,KAAM,aACNC,KAAM,QAER,CACEK,SAAS,EACTS,aAAc,OACdf,KAAM,aACNC,KAAM,SAGVD,KAAM,8BACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,0BACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,SACNC,KAA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EK,SAAS,EACTS,aAAc,UACdf,KAAM,UACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,SACNC,KAAM,YAGVD,KAAM,cACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,qBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,cACNC,KAAM,WAGVD,KAAM,sBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,qBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,cACNC,KAAM,WAGVD,KAAM,sBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,qBACNC,KAAM,YAGVD,KAAM,sBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,qBACNE,QAAS,CACP,CAC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,EACTS,aAAc,iBACdf,KAAM,QACNC,KAAM,YAGVD,KAAM,cACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,QACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,YAGVD,KAAM,kBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,QACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,oCACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,sBACNC,KAAM,YAGVD,KAAM,kBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,gBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,YAGVD,KAAM,wBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,OACdf,KAAM,YACNC,KAAM,QAER,CACEK,SAAS,EACTS,aAAc,QACdf,KAAM,SACNC,KAAM,UAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,aACNC,KAAM,UAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,YACNC,KAAM,WAGVD,KAAM,uBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,QACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,gBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,eACNC,KAAM,YAGVD,KAAM,0BACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,kBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,QACNC,KAAM,YAGVD,KAAM,aACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,uBACNE,QAAS,CACP,CACEa,aAAc,SACdf,KAAM,GACNC,KAAM,WAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,YAGVD,KAAM,aACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,YAGVD,KAAM,iBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,OACdf,KAAM,SACNC,KAAM,SAGVD,KAAM,mBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,oBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,0BACNC,KAAM,YAGVD,KAAM,gBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,YAGVD,KAAM,cACNE,QAAS,CACP,CACEa,aAAc,OACdf,KAAM,GACNC,KAAM,SAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEiB,WAAY,CACV,CACEH,aAAc,sBACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,gBACNC,KAAM,UAER,CACEc,aAAc,OACdf,KAAM,iBACNC,KAAM,QAER,CACEc,aAAc,OACdf,KAAM,oBACNC,KAAM,QAER,CACEiB,WAAY,CACV,CACEH,aAAc,SACdf,KAAM,cACNC,KAAM,UAER,CACEiB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,qBACdf,KAAM,OACNC,KAAM,UAGVc,aAAc,qBACdf,KAAM,cACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEiB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,4BACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,gBACNC,KAAM,YAGVc,aAAc,uBACdf,KAAM,YACNC,KAAM,UAGVc,aAAc,cACdf,KAAM,OACNC,KAAM,UAGVD,KAAM,gBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,2BACdf,KAAM,uBACNC,KAAM,YAGVD,KAAM,iBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,WACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,YACNC,KAAM,YAGVD,KAAM,kBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,QACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,YACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,YAGVD,KAAM,WACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,sBACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,gBACNC,KAAM,UAER,CACEc,aAAc,OACdf,KAAM,iBACNC,KAAM,QAER,CACEc,aAAc,OACdf,KAAM,oBACNC,KAAM,QAER,CACEiB,WAAY,CACV,CACEH,aAAc,SACdf,KAAM,cACNC,KAAM,UAER,CACEiB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,IACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,IACNC,KAAM,YAGVc,aAAc,qBACdf,KAAM,OACNC,KAAM,UAGVc,aAAc,qBACdf,KAAM,cACNC,KAAM,SAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEiB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,4BACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,gBACNC,KAAM,YAGVc,aAAc,uBACdf,KAAM,YACNC,KAAM,UAGVc,aAAc,cACdf,KAAM,GACNC,KAAM,UAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,YAGVD,KAAM,gBACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,sBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,4BACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,gBACNC,KAAM,YAGVc,aAAc,uBACdf,KAAM,GACNC,KAAM,UAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,YAGVD,KAAM,YACNE,QAAS,CACP,CACEa,aAAc,sBACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,0BACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,0BACNC,KAAM,YAGVD,KAAM,wBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,kBACNC,KAAM,YAGVD,KAAM,wBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,WACNE,QAAS,CACP,CACEa,aAAc,SACdf,KAAM,GACNC,KAAM,WAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,QACNE,QAAS,CACP,CACEa,aAAc,mBACdf,KAAM,GACNC,KAAM,cAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,SACdf,KAAM,0BACNC,KAAM,WAGVD,KAAM,0BACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,kBACNC,KAAM,YAGVD,KAAM,kBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,SACdf,KAAM,mBACNC,KAAM,WAGVD,KAAM,mBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,iBACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,iBACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,kBACNC,KAAM,YAGVD,KAAM,sBACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,mBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,mBACNC,KAAM,YAGVc,aAAc,2BACdf,KAAM,GACNC,KAAM,UAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,iBACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,iBACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,kBACNC,KAAM,YAGVD,KAAM,sBACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,mBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,mBACNC,KAAM,YAGVc,aAAc,2BACdf,KAAM,GACNC,KAAM,UAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,iBACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,YAGVD,KAAM,iCACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,mBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,mBACNC,KAAM,YAGVc,aAAc,2BACdf,KAAM,GACNC,KAAM,UAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,iBACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,eACNC,KAAM,YAGVD,KAAM,kCACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,SACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,mBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,mBACNC,KAAM,YAGVc,aAAc,2BACdf,KAAM,GACNC,KAAM,UAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,iBACNC,KAAM,YAGVD,KAAM,oBACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,cACNC,KAAM,YAGVD,KAAM,wBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,UACNE,QAAS,CACP,CACEa,aAAc,SACdf,KAAM,GACNC,KAAM,WAGVG,gBAAiB,OACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEc,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,kBACNC,KAAM,YAGVD,KAAM,WACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,kBACNC,KAAM,YAGVD,KAAM,oBACNE,QAAS,CACP,CACEgB,WAAY,CACV,CACEH,aAAc,UACdf,KAAM,cACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,kBACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,YACNC,KAAM,YAGVc,aAAc,2BACdf,KAAM,GACNC,KAAM,UAGVG,gBAAiB,OACjBH,KAAM,aAIJ0B,GACJ,y96CAMIC,GAAc,SAClBC,GADkB,OAEsCA,EAAGC,OAAS,GAEzD9C,GAAb,kDACE,aAA4D,IAAD,iDAA5C+C,EAA4C,yBAA5CA,EAA4C,uBAEvD,EADEH,GAAYG,GACd,6BAASA,IAET,YAAMlC,GAAM8B,GAAWI,EAAK,IAJ2B,eAD7D,0CASE,SACEc,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAjB,GAEA,OAAO,8DACLU,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAjB,GAAa,MA7BnB,kCAgCE,SACEU,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAjB,GAEA,OAAO,4EACLU,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAjB,GAAa,MApDnB,oBAuDE,SAAOzB,GACL,OAAO,8DAAaA,KAxDxB,qBA0DE,SAAQ/D,GACN,OAAO,+DAAcA,MA3DzB,8BA+DE,WACE,OAAO,IAAI6D,IAAMC,UAAUZ,MAhE/B,qBAkEE,SACEa,EACAC,GAEA,OAAO,IAAIC,IAASF,EAASb,GAAMc,OAtEvC,GAAkDyB,KAArCpD,GA6DKqD,SAAWV,GA7DhB3C,GA8DK6B,IAAMhB,GCj7CxB,IAAMA,GAAO,CACX,CACEE,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,QACNC,KAAM,WAER,CACEc,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEc,aAAc,QACdf,KAAM,OACNC,KAAM,UAGVG,gBAAiB,UACjBH,KAAM,eAER,CACEF,OAAQ,GACRC,KAAM,eACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,gBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,YAGVD,KAAM,eACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,SACNC,KAAM,YAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,iBACNC,KAAM,YAGVD,KAAM,WACNC,KAAM,SAER,CACEG,gBAAiB,UACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,QACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,iBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,oBACNC,KAAM,YAGVD,KAAM,YACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,oBACNC,KAAM,WAER,CACEc,aAAc,QACdf,KAAM,OACNC,KAAM,UAGVD,KAAM,mBACNE,QAAS,GACTE,gBAAiB,UACjBH,KAAM,YAER,CACEG,gBAAiB,UACjBH,KAAM,YAIJ0B,GACJ,igOAMIC,GAAc,SAClBC,GADkB,OAEsCA,EAAGC,OAAS,GAEzDuB,GAAb,kDACE,aAA6D,IAAD,iDAA7CtB,EAA6C,yBAA7CA,EAA6C,uBAExD,EADEH,GAAYG,GACd,6BAASA,IAET,YAAMlC,GAAM8B,GAAWI,EAAK,IAJ4B,eAD9D,0CASE,SACEQ,EACAC,EACAC,EACAN,GAEA,OAAO,8DACLI,EACAC,EACAC,EACAN,GAAa,MAnBnB,kCAsBE,SACEI,EACAC,EACAC,EACAN,GAEA,OAAO,4EAA2BI,EAAOC,EAAWC,EAAMN,GAAa,MA5B3E,oBA8BE,SAAOzB,GACL,OAAO,8DAAaA,KA/BxB,qBAiCE,SAAQ/D,GACN,OAAO,+DAAcA,MAlCzB,8BAsCE,WACE,OAAO,IAAI6D,IAAMC,UAAUZ,MAvC/B,qBAyCE,SACEa,EACAC,GAEA,OAAO,IAAIC,IACTF,EACAb,GACAc,OAhDN,GAAmDyB,KAAtCiB,GAoCKhB,SAAWV,GApChB0B,GAqCKxC,IAAMhB,GChMxB,IAAMA,GAAO,CACX,CACEE,OAAQ,GACRC,KAAM,eACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,gBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,YAGVD,KAAM,eACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,SACNC,KAAM,YAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,UACdf,KAAM,iBACNC,KAAM,YAGVD,KAAM,WACNC,KAAM,SAER,CACEG,gBAAiB,UACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,QACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,GACRC,KAAM,iBACNE,QAAS,CACP,CACEa,aAAc,UACdf,KAAM,GACNC,KAAM,YAGVG,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,oBACNC,KAAM,YAGVD,KAAM,YACNE,QAAS,GACTE,gBAAiB,aACjBH,KAAM,YAER,CACEF,OAAQ,CACN,CACEgB,aAAc,UACdf,KAAM,oBACNC,KAAM,WAER,CACEc,aAAc,QACdf,KAAM,OACNC,KAAM,UAGVD,KAAM,mBACNE,QAAS,GACTE,gBAAiB,UACjBH,KAAM,YAER,CACEG,gBAAiB,UACjBH,KAAM,WAER,CACEF,OAAQ,GACRC,KAAM,gBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,qBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,iBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,eACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,oBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,eACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,4BACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,iBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,oBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,eACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,kBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,kBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,uBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,iBACNC,KAAM,SAER,CACEF,OAAQ,GACRC,KAAM,YACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,iBACdf,KAAM,eACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,eACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,YACNC,KAAM,UAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,UACNC,KAAM,WAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,OACdf,KAAM,SACNC,KAAM,QAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,mBACNC,KAAM,YAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,SACdf,KAAM,UACNC,KAAM,UAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,mBACNC,KAAM,YAGVD,KAAM,oBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,YAGVD,KAAM,iBACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,kBACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,iBACNC,KAAM,YAGVD,KAAM,eACNC,KAAM,SAER,CACEI,WAAW,EACXN,OAAQ,CACN,CACEO,SAAS,EACTS,aAAc,iBACdf,KAAM,OACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,YACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KAAM,WACNC,KAAM,WAER,CACEK,SAAS,EACTS,aAAc,UACdf,KA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","file":"static/js/main.9fa8bf95.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/empty-token.b8b3d81c.webp\";","import { EthNetworks } from './types';\nimport { BigNumber } from 'bignumber.js';\nimport emptyTokenLogo from 'assets/logos/empty-token.webp';\nimport { getTenderlyRpcLS } from 'utils/localStorage';\n\nexport interface EthNetworkVariables {\n network: EthNetworks;\n contractRegistry: string;\n bntToken: string;\n converterContractForMaths: string;\n governanceContractAddress: string;\n etherscanUrl: string;\n govToken: string;\n}\n\nexport const bntToken: string = '0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C';\nexport const systemStore: string = '0xc4C5634De585d43DaEC8fA2a6Fb6286cd9B87131';\nexport const ethToken: string = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';\nexport const zeroAddress: string = '0x0000000000000000000000000000000000000000';\nexport const wethToken: string = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';\nexport const multiCallContract: string =\n '0x5ba1e12693dc8f9c48aad8770482f4739beed696';\nexport const ropstenImage: string = emptyTokenLogo;\n\nexport const bntDecimals: number = 18;\nconst gasBuffer = 1.05;\n\nexport const changeGas = (gasEstimation: string) =>\n new BigNumber(gasEstimation).times(gasBuffer).toFixed(0);\n\nexport const getNetworkVariables = (): EthNetworkVariables => {\n return {\n network: EthNetworks.Mainnet,\n contractRegistry: '0x52Ae12ABe5D8BD778BD5397F99cA900624CfADD4',\n bntToken: '0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C',\n govToken: '0x48Fb253446873234F2fEBbF9BdeAA72d9d387f94',\n converterContractForMaths: '0xe870d00176b2c71afd4c43cea550228e22be4abd',\n governanceContractAddress: '0x892f481bd6e9d7d26ae365211d9b45175d5d00e4',\n etherscanUrl: 'https://etherscan.io',\n };\n};\n\nexport const isForkAvailable = !!getTenderlyRpcLS();\n","import BigNumber from 'bignumber.js';\nimport { Token } from 'services/observables/tokens';\nimport { toBigNumber } from 'utils/helperFunctions';\n\nexport const calcReserve = (from: string, to: string, fee: BigNumber) => {\n return new BigNumber(to)\n .div(new BigNumber(from))\n .times(new BigNumber(1).minus(fee));\n};\n\nexport const expandToken = (amount: string | number, precision: number) => {\n const trimmed = new BigNumber(amount).toFixed(precision, 1);\n const inWei = new BigNumber(trimmed)\n .times(new BigNumber(10).pow(precision))\n .toFixed(0);\n return inWei;\n};\n\nexport const shrinkToken = (\n amount: string | number | BigNumber,\n precision: number,\n chopZeros = false\n) => {\n const bigNumAmount = new BigNumber(amount);\n if (bigNumAmount.isEqualTo(0)) return '0';\n const res = bigNumAmount\n .div(new BigNumber(10).pow(precision))\n .toFixed(precision, BigNumber.ROUND_DOWN);\n\n return chopZeros ? new BigNumber(res).toString() : res;\n};\n\nexport const usdByToken = (\n token: Token,\n amount?: string,\n isToken: boolean = true\n): string => {\n if (!token || !token.usdPrice || (!amount && !token.balance)) return '';\n\n const input = Number(amount ? amount : token.balance);\n const tokenPrice = Number(token.usdPrice);\n return (isToken ? input * tokenPrice : input / tokenPrice).toString();\n};\n\nexport const calculatePercentageChange = (\n numberNow: number,\n numberBefore: number\n): number => {\n return Number(((numberNow / numberBefore - 1) * 100).toFixed(2));\n};\n\nexport const reduceBySlippage = (\n value: string | number | BigNumber,\n slippage: string | number | BigNumber\n) => {\n const bigNumValue = new BigNumber(value);\n const bigNumSlippage = new BigNumber(slippage);\n const one = new BigNumber(1);\n return bigNumValue.times(one.minus(bigNumSlippage)).toString();\n};\n\nexport const calcApr = (\n fees: BigNumber | string | number,\n liquidity: BigNumber | string | number\n): number =>\n Number(liquidity) === 0\n ? 0\n : toBigNumber(fees).times(365).div(liquidity).times(100).toNumber();\n","import { Web3Provider } from '@ethersproject/providers';\nimport { EthNetworks } from 'services/web3//types';\nimport { providers } from 'ethers';\nimport { buildAlchemyUrl } from 'services/web3/wallet/connectors';\nimport { isForkAvailable } from './config';\nimport { getTenderlyRpcLS } from 'utils/localStorage';\n\nexport const getProvider = (\n network: EthNetworks = EthNetworks.Mainnet,\n useFork: boolean = isForkAvailable\n): providers.BaseProvider => {\n if (useFork) {\n return new providers.StaticJsonRpcProvider(getTenderlyRpcLS());\n }\n if (process.env.REACT_APP_ALCHEMY_MAINNET) {\n return new providers.WebSocketProvider(buildAlchemyUrl(network));\n }\n\n return providers.getDefaultProvider(network);\n};\n\nexport const web3 = {\n provider: getProvider(),\n};\n\nexport const keepWSOpen = () => {\n if (!(web3.provider instanceof providers.WebSocketProvider)) return;\n\n setInterval(async () => {\n //Extra check since TS doesnt detect things outside interval\n if (web3.provider instanceof providers.WebSocketProvider) {\n if (\n web3.provider._websocket.readyState === WebSocket.OPEN ||\n web3.provider._websocket.readyState === WebSocket.CONNECTING\n )\n return;\n\n try {\n web3.provider._websocket.close();\n } catch (error) {\n console.error('Failed closing websocket', error);\n }\n try {\n console.debug('Reconnecting websocket');\n web3.provider = new providers.WebSocketProvider(\n buildAlchemyUrl(EthNetworks.Mainnet)\n );\n } catch (error) {\n console.error('Failed init web3', error);\n }\n }\n }, 7500);\n};\n\nexport const writeWeb3 = {\n signer: window.ethereum\n ? new Web3Provider(window.ethereum).getSigner()\n : new providers.WebSocketProvider(\n buildAlchemyUrl(EthNetworks.Mainnet)\n ).getSigner(),\n};\n\nexport const setProvider = (\n provider: providers.WebSocketProvider | providers.BaseProvider\n) => {\n web3.provider = provider;\n};\n\nexport const setSigner = (\n signer?: providers.JsonRpcSigner,\n account?: string | null\n) => {\n if (account)\n writeWeb3.signer = new providers.StaticJsonRpcProvider(\n getTenderlyRpcLS()\n ).getUncheckedSigner(account);\n else if (signer) writeWeb3.signer = signer;\n};\n","import {\n Token,\n Token__factory,\n BancorNetworkV3,\n BancorNetworkV3__factory,\n BancorNetworkInfo,\n BancorNetworkInfo__factory,\n NetworkSettings,\n NetworkSettings__factory,\n StakingRewardsClaim,\n StakingRewardsClaim__factory,\n StandardRewards,\n StandardRewards__factory,\n PoolCollectionType1,\n PoolCollectionType1__factory,\n PendingWithdrawals,\n PendingWithdrawals__factory,\n BancorPortal,\n BancorPortal__factory,\n} from 'services/web3/abis/types';\nimport { web3, writeWeb3 } from 'services/web3/index';\nimport { providers } from 'ethers';\nimport { address as bancorNetworkAddress } from 'services/web3/abis/v3/BancorNetworkV3_Proxy.json';\nimport { address as bancorNetworkInfoAddress } from 'services/web3/abis/v3/BancorNetworkInfo_Proxy.json';\nimport { address as networkSettingsAddress } from 'services/web3/abis/v3/NetworkSettings_Proxy.json';\nimport { address as pendingWithdrawalsAddress } from 'services/web3/abis/v3/PendingWithdrawals_Proxy.json';\nimport { address as poolCollectionType1Address } from 'services/web3/abis/v3/PoolCollectionType1.json';\nimport { address as stakingRewardsClaimAddress } from 'services/web3/abis/StakingRewardsClaim.json';\nimport { address as standardRewardsAddress } from 'services/web3/abis/v3/StandardRewards_Proxy.json';\nimport { address as bancorPortalAddress } from 'services/web3/abis/v3/BancorPortal_Proxy.json';\n\nexport class BancorContract {\n constructor(contractAddress: string, contractFactory: any) {\n this.contractAddress = contractAddress;\n this._contractFactory = contractFactory;\n }\n\n public readonly contractAddress: string;\n\n private readonly _contractFactory: any;\n private _lastProvider: providers.BaseProvider | undefined;\n private _lastSigner: providers.JsonRpcSigner | undefined;\n private _read: T | undefined;\n private _write: T | undefined;\n\n get read(): T {\n if (this._lastProvider === web3.provider && this._read) {\n return this._read;\n }\n this._lastProvider = web3.provider;\n this._read = this._contractFactory.connect(\n this.contractAddress,\n web3.provider\n ) as T;\n return this._read;\n }\n\n get write(): T {\n if (this._lastSigner === writeWeb3.signer && this._write) {\n return this._write;\n }\n this._lastSigner = writeWeb3.signer;\n this._write = this._contractFactory.connect(\n this.contractAddress,\n writeWeb3.signer\n ) as T;\n return this._write;\n }\n}\n\nexport abstract class ContractsApi {\n static BancorNetwork = new BancorContract(\n bancorNetworkAddress,\n BancorNetworkV3__factory\n );\n\n static BancorNetworkInfo = new BancorContract(\n bancorNetworkInfoAddress,\n BancorNetworkInfo__factory\n );\n\n static NetworkSettings = new BancorContract(\n networkSettingsAddress,\n NetworkSettings__factory\n );\n\n static StakingRewardsClaim = new BancorContract(\n stakingRewardsClaimAddress,\n StakingRewardsClaim__factory\n );\n\n static StandardRewards = new BancorContract(\n standardRewardsAddress,\n StandardRewards__factory\n );\n\n static PoolCollection = new BancorContract(\n poolCollectionType1Address,\n PoolCollectionType1__factory\n );\n\n static PendingWithdrawals = new BancorContract(\n pendingWithdrawalsAddress,\n PendingWithdrawals__factory\n );\n\n static BancorPortal = new BancorContract(\n bancorPortalAddress,\n BancorPortal__factory\n );\n\n static Token = (tokenAddress: string) => {\n return new BancorContract(tokenAddress, Token__factory);\n };\n}\n","export type EthAddress = string;\n\nexport enum EthNetworks {\n Mainnet = 1,\n Ropsten = 3,\n}\n\nexport enum PoolType {\n Liquid = 0,\n Traditional = 1,\n ChainLink = 2,\n}\n\nexport enum ErrorCode {\n DeniedTx = 4001,\n}\n\nexport enum SignatureType {\n EIP712 = 2,\n}\nexport interface Dictionary {\n [Key: string]: T;\n}\nexport interface RegisteredContracts {\n BancorNetwork: string;\n BancorConverterRegistry: string;\n LiquidityProtection: string;\n LiquidityProtectionStore: string;\n StakingRewards: string;\n}\n\nexport interface ConverterAndAnchor {\n converterAddress: string;\n anchorAddress: string;\n}\n\nexport interface MinimalPool {\n anchorAddress: string;\n converterAddress: string;\n reserves: string[];\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { BancorNetwork, BancorNetworkInterface } from \"../BancorNetwork\";\n\nconst _abi = [\n {\n constant: false,\n inputs: [\n {\n name: \"_onlyOwnerCanUpdateRegistry\",\n type: \"bool\",\n },\n ],\n name: \"restrictRegistryUpdate\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_token\",\n type: \"address\",\n },\n {\n name: \"_register\",\n type: \"bool\",\n },\n ],\n name: \"registerEtherToken\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"getReturnByPath\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_beneficiary\",\n type: \"address\",\n },\n {\n name: \"_affiliateAccount\",\n type: \"address\",\n },\n {\n name: \"_affiliateFee\",\n type: \"uint256\",\n },\n ],\n name: \"claimAndConvertFor2\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"onlyOwnerCanUpdateRegistry\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"updateRegistry\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_affiliateAccount\",\n type: \"address\",\n },\n {\n name: \"_affiliateFee\",\n type: \"uint256\",\n },\n ],\n name: \"convert2\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"maxAffiliateFee\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_token\",\n type: \"address\",\n },\n {\n name: \"_to\",\n type: \"address\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawTokens\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"prevRegistry\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"registry\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"rateByPath\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"etherTokens\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_bancorX\",\n type: \"address\",\n },\n {\n name: \"_conversionId\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_beneficiary\",\n type: \"address\",\n },\n ],\n name: \"completeXConversion\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_beneficiary\",\n type: \"address\",\n },\n {\n name: \"_affiliateAccount\",\n type: \"address\",\n },\n {\n name: \"_affiliateFee\",\n type: \"uint256\",\n },\n ],\n name: \"convertFor2\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_beneficiary\",\n type: \"address\",\n },\n ],\n name: \"claimAndConvertFor\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"restoreRegistry\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_beneficiary\",\n type: \"address\",\n },\n {\n name: \"_affiliateAccount\",\n type: \"address\",\n },\n {\n name: \"_affiliateFee\",\n type: \"uint256\",\n },\n ],\n name: \"convertByPath\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_targetBlockchain\",\n type: \"bytes32\",\n },\n {\n name: \"_targetAccount\",\n type: \"bytes32\",\n },\n {\n name: \"_conversionId\",\n type: \"uint256\",\n },\n ],\n name: \"xConvert\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n ],\n name: \"claimAndConvert\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_beneficiary\",\n type: \"address\",\n },\n ],\n name: \"convertFor\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_targetBlockchain\",\n type: \"bytes32\",\n },\n {\n name: \"_targetAccount\",\n type: \"bytes32\",\n },\n {\n name: \"_conversionId\",\n type: \"uint256\",\n },\n {\n name: \"_affiliateAccount\",\n type: \"address\",\n },\n {\n name: \"_affiliateFee\",\n type: \"uint256\",\n },\n ],\n name: \"xConvert2\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"_sourceToken\",\n type: \"address\",\n },\n {\n name: \"_targetToken\",\n type: \"address\",\n },\n ],\n name: \"conversionPath\",\n outputs: [\n {\n name: \"\",\n type: \"address[]\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n {\n name: \"_affiliateAccount\",\n type: \"address\",\n },\n {\n name: \"_affiliateFee\",\n type: \"uint256\",\n },\n ],\n name: \"claimAndConvert2\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_path\",\n type: \"address[]\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n name: \"_minReturn\",\n type: \"uint256\",\n },\n ],\n name: \"convert\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_maxAffiliateFee\",\n type: \"uint256\",\n },\n ],\n name: \"setMaxAffiliateFee\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n name: \"_registry\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"_smartToken\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"_fromToken\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"_toToken\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"_fromAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n name: \"_toAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n name: \"_trader\",\n type: \"address\",\n },\n ],\n name: \"Conversion\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"_prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n];\n\nexport class BancorNetwork__factory {\n static readonly abi = _abi;\n static createInterface(): BancorNetworkInterface {\n return new utils.Interface(_abi) as BancorNetworkInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): BancorNetwork {\n return new Contract(address, _abi, signerOrProvider) as BancorNetwork;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n ContractRegistry,\n ContractRegistryInterface,\n} from \"../ContractRegistry\";\n\nconst _abi = [\n {\n constant: true,\n inputs: [],\n name: \"BANCOR_CONVERTER_UPGRADER\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"BNT_TOKEN\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"_contractName\",\n type: \"bytes32\",\n },\n ],\n name: \"getAddress\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"CONTRACT_REGISTRY\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_contractName\",\n type: \"bytes32\",\n },\n ],\n name: \"unregisterAddress\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"contractNames\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"BANCOR_CONVERTER_FACTORY\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"BNT_CONVERTER\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_contractName\",\n type: \"bytes32\",\n },\n {\n name: \"_contractAddress\",\n type: \"address\",\n },\n ],\n name: \"registerAddress\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"itemCount\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"BANCOR_FORMULA\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"CONTRACT_FEATURES\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"BANCOR_NETWORK\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"BANCOR_GAS_PRICE_LIMIT\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"_contractName\",\n type: \"bytes32\",\n },\n ],\n name: \"addressOf\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"BANCOR_X\",\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"_contractName\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n name: \"_contractAddress\",\n type: \"address\",\n },\n ],\n name: \"AddressUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"_prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n];\n\nexport class ContractRegistry__factory {\n static readonly abi = _abi;\n static createInterface(): ContractRegistryInterface {\n return new utils.Interface(_abi) as ContractRegistryInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ContractRegistry {\n return new Contract(address, _abi, signerOrProvider) as ContractRegistry;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { Converter, ConverterInterface } from \"../Converter\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"_anchor\",\n type: \"address\",\n },\n {\n internalType: \"contract IContractRegistry\",\n name: \"_registry\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"_maxConversionFee\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"_type\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_anchor\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"bool\",\n name: \"_activated\",\n type: \"bool\",\n },\n ],\n name: \"Activation\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IERC20\",\n name: \"_fromToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IERC20\",\n name: \"_toToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_trader\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_return\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"int256\",\n name: \"_conversionFee\",\n type: \"int256\",\n },\n ],\n name: \"Conversion\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"_prevFee\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"_newFee\",\n type: \"uint32\",\n },\n ],\n name: \"ConversionFeeUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IERC20\",\n name: \"_reserveToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_newBalance\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_newSupply\",\n type: \"uint256\",\n },\n ],\n name: \"LiquidityAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IERC20\",\n name: \"_reserveToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_newBalance\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_newSupply\",\n type: \"uint256\",\n },\n ],\n name: \"LiquidityRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IERC20\",\n name: \"_token1\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IERC20\",\n name: \"_token2\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_rateN\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_rateD\",\n type: \"uint256\",\n },\n ],\n name: \"TokenRateUpdate\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"acceptAnchorOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"acceptTokenOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20[]\",\n name: \"_reserveTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"_reserveAmounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"_minReturn\",\n type: \"uint256\",\n },\n ],\n name: \"addLiquidity\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20[]\",\n name: \"_reserveTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256\",\n name: \"_reserveTokenIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_reserveAmount\",\n type: \"uint256\",\n },\n ],\n name: \"addLiquidityCost\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20[]\",\n name: \"_reserveTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"_reserveAmounts\",\n type: \"uint256[]\",\n },\n ],\n name: \"addLiquidityReturn\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_token\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"_weight\",\n type: \"uint32\",\n },\n ],\n name: \"addReserve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"anchor\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"averageRateInfo\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"connectorTokenCount\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"connectorTokens\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_address\",\n type: \"address\",\n },\n ],\n name: \"connectors\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"conversionFee\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"_trader\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_beneficiary\",\n type: \"address\",\n },\n ],\n name: \"convert\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"converterType\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_connectorToken\",\n type: \"address\",\n },\n ],\n name: \"getConnectorBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"getReturn\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isActive\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isV28OrHigher\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxConversionFee\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"onUpgradeComplete\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"onlyOwnerCanUpdateRegistry\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"prevRegistry\",\n outputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"processNetworkFees\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_token\",\n type: \"address\",\n },\n ],\n name: \"recentAverageRate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"registry\",\n outputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n internalType: \"contract IERC20[]\",\n name: \"_reserveTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"_reserveMinReturnAmounts\",\n type: \"uint256[]\",\n },\n ],\n name: \"removeLiquidity\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"liquidate\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n internalType: \"contract IERC20[]\",\n name: \"_reserveTokens\",\n type: \"address[]\",\n },\n ],\n name: \"removeLiquidityReturn\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_reserveToken\",\n type: \"address\",\n },\n ],\n name: \"reserveBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"reserveBalances\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"reserveTokenCount\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"reserveTokens\",\n outputs: [\n {\n internalType: \"contract IERC20[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_reserveToken\",\n type: \"address\",\n },\n ],\n name: \"reserveWeight\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"restoreRegistry\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_onlyOwnerCanUpdateRegistry\",\n type: \"bool\",\n },\n ],\n name: \"restrictRegistryUpdate\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"_conversionFee\",\n type: \"uint32\",\n },\n ],\n name: \"setConversionFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"sourceAmountAndFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"syncReserveBalances\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"_targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"targetAmountAndFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"token\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferAnchorOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newConverter\",\n type: \"address\",\n },\n ],\n name: \"transferReservesOnUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferTokenOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"updateRegistry\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"upgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nexport class Converter__factory {\n static readonly abi = _abi;\n static createInterface(): ConverterInterface {\n return new utils.Interface(_abi) as ConverterInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): Converter {\n return new Contract(address, _abi, signerOrProvider) as Converter;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n ConverterRegistry,\n ConverterRegistryInterface,\n} from \"../ConverterRegistry\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"_registry\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_anchor\",\n type: \"address\",\n },\n ],\n name: \"ConverterAnchorAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_anchor\",\n type: \"address\",\n },\n ],\n name: \"ConverterAnchorRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_smartToken\",\n type: \"address\",\n },\n ],\n name: \"ConvertibleTokenAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_smartToken\",\n type: \"address\",\n },\n ],\n name: \"ConvertibleTokenRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_liquidityPool\",\n type: \"address\",\n },\n ],\n name: \"LiquidityPoolAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_liquidityPool\",\n type: \"address\",\n },\n ],\n name: \"LiquidityPoolRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_smartToken\",\n type: \"address\",\n },\n ],\n name: \"SmartTokenAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_smartToken\",\n type: \"address\",\n },\n ],\n name: \"SmartTokenRemoved\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverter\",\n name: \"_converter\",\n type: \"address\",\n },\n ],\n name: \"addConverter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"getAnchor\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getAnchorCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getAnchors\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"_anchors\",\n type: \"address[]\",\n },\n ],\n name: \"getConvertersByAnchors\",\n outputs: [\n {\n internalType: \"contract IConverter[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"_smartTokens\",\n type: \"address[]\",\n },\n ],\n name: \"getConvertersBySmartTokens\",\n outputs: [\n {\n internalType: \"contract IConverter[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"getConvertibleToken\",\n outputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"getConvertibleTokenAnchor\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n ],\n name: \"getConvertibleTokenAnchorCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n ],\n name: \"getConvertibleTokenAnchors\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getConvertibleTokenCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"getConvertibleTokenSmartToken\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n ],\n name: \"getConvertibleTokenSmartTokenCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n ],\n name: \"getConvertibleTokenSmartTokens\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getConvertibleTokens\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"getLiquidityPool\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_type\",\n type: \"uint16\",\n },\n {\n internalType: \"contract IERC20Token[]\",\n name: \"_reserveTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint32[]\",\n name: \"_reserveWeights\",\n type: \"uint32[]\",\n },\n ],\n name: \"getLiquidityPoolByConfig\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token[]\",\n name: \"_reserveTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint32[]\",\n name: \"_reserveWeights\",\n type: \"uint32[]\",\n },\n ],\n name: \"getLiquidityPoolByReserveConfig\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getLiquidityPoolCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getLiquidityPools\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"getSmartToken\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getSmartTokenCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getSmartTokens\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_value\",\n type: \"address\",\n },\n ],\n name: \"isAnchor\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverter\",\n name: \"_converter\",\n type: \"address\",\n },\n ],\n name: \"isConverterValid\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_value\",\n type: \"address\",\n },\n ],\n name: \"isConvertibleToken\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_value\",\n type: \"address\",\n },\n ],\n name: \"isConvertibleTokenAnchor\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_convertibleToken\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_value\",\n type: \"address\",\n },\n ],\n name: \"isConvertibleTokenSmartToken\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_value\",\n type: \"address\",\n },\n ],\n name: \"isLiquidityPool\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverter\",\n name: \"_converter\",\n type: \"address\",\n },\n ],\n name: \"isSimilarLiquidityPoolRegistered\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_value\",\n type: \"address\",\n },\n ],\n name: \"isSmartToken\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_type\",\n type: \"uint16\",\n },\n {\n internalType: \"string\",\n name: \"_name\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"_symbol\",\n type: \"string\",\n },\n {\n internalType: \"uint8\",\n name: \"_decimals\",\n type: \"uint8\",\n },\n {\n internalType: \"uint32\",\n name: \"_maxConversionFee\",\n type: \"uint32\",\n },\n {\n internalType: \"contract IERC20Token[]\",\n name: \"_reserveTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint32[]\",\n name: \"_reserveWeights\",\n type: \"uint32[]\",\n },\n ],\n name: \"newConverter\",\n outputs: [\n {\n internalType: \"contract IConverter\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"onlyOwnerCanUpdateRegistry\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"prevRegistry\",\n outputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"registry\",\n outputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverter\",\n name: \"_converter\",\n type: \"address\",\n },\n ],\n name: \"removeConverter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"restoreRegistry\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_onlyOwnerCanUpdateRegistry\",\n type: \"bool\",\n },\n ],\n name: \"restrictRegistryUpdate\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"updateRegistry\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class ConverterRegistry__factory {\n static readonly abi = _abi;\n static createInterface(): ConverterRegistryInterface {\n return new utils.Interface(_abi) as ConverterRegistryInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ConverterRegistry {\n return new Contract(address, _abi, signerOrProvider) as ConverterRegistry;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { ExchangeProxy, ExchangeProxyInterface } from \"../ExchangeProxy\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"zeroExAddress\",\n type: \"address\",\n },\n {\n internalType: \"contract IEtherTokenV06\",\n name: \"weth\",\n type: \"address\",\n },\n {\n internalType: \"contract IStaking\",\n name: \"staking\",\n type: \"address\",\n },\n {\n internalType: \"contract FeeCollectorController\",\n name: \"feeCollectorController\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"protocolFeeMultiplier\",\n type: \"uint32\",\n },\n {\n internalType: \"bytes32\",\n name: \"greedyTokensBloomFilter\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"makerTokenFilledAmount\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"takerTokenFeeFilledAmount\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"protocolFeePaid\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n ],\n name: \"LimitOrderFilled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n ],\n name: \"OrderCancelled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"minValidSalt\",\n type: \"uint256\",\n },\n ],\n name: \"PairCancelledLimitOrders\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"minValidSalt\",\n type: \"uint256\",\n },\n ],\n name: \"PairCancelledRfqOrders\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"makerTokenFilledAmount\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n ],\n name: \"RfqOrderFilled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"origin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address[]\",\n name: \"addrs\",\n type: \"address[]\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n name: \"RfqOrderOriginsAllowed\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"EIP712_DOMAIN_SEPARATOR\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"FEATURE_NAME\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"FEATURE_VERSION\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"GREEDY_TOKENS_BLOOM_FILTER\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"PROTOCOL_FEE_MULTIPLIER\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFillAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"_fillLimitOrder\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"makerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFillAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n ],\n name: \"_fillRfqOrder\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"makerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder[]\",\n name: \"orders\",\n type: \"tuple[]\",\n },\n ],\n name: \"batchCancelLimitOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20TokenV06[]\",\n name: \"makerTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"contract IERC20TokenV06[]\",\n name: \"takerTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"minValidSalts\",\n type: \"uint256[]\",\n },\n ],\n name: \"batchCancelPairLimitOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20TokenV06[]\",\n name: \"makerTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"contract IERC20TokenV06[]\",\n name: \"takerTokens\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"minValidSalts\",\n type: \"uint256[]\",\n },\n ],\n name: \"batchCancelPairRfqOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder[]\",\n name: \"orders\",\n type: \"tuple[]\",\n },\n ],\n name: \"batchCancelRfqOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder[]\",\n name: \"orders\",\n type: \"tuple[]\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature[]\",\n name: \"signatures\",\n type: \"tuple[]\",\n },\n ],\n name: \"batchGetLimitOrderRelevantStates\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"enum LibNativeOrder.OrderStatus\",\n name: \"status\",\n type: \"uint8\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct LibNativeOrder.OrderInfo[]\",\n name: \"orderInfos\",\n type: \"tuple[]\",\n },\n {\n internalType: \"uint128[]\",\n name: \"actualFillableTakerTokenAmounts\",\n type: \"uint128[]\",\n },\n {\n internalType: \"bool[]\",\n name: \"isSignatureValids\",\n type: \"bool[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder[]\",\n name: \"orders\",\n type: \"tuple[]\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature[]\",\n name: \"signatures\",\n type: \"tuple[]\",\n },\n ],\n name: \"batchGetRfqOrderRelevantStates\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"enum LibNativeOrder.OrderStatus\",\n name: \"status\",\n type: \"uint8\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct LibNativeOrder.OrderInfo[]\",\n name: \"orderInfos\",\n type: \"tuple[]\",\n },\n {\n internalType: \"uint128[]\",\n name: \"actualFillableTakerTokenAmounts\",\n type: \"uint128[]\",\n },\n {\n internalType: \"bool[]\",\n name: \"isSignatureValids\",\n type: \"bool[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n ],\n name: \"cancelLimitOrder\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"minValidSalt\",\n type: \"uint256\",\n },\n ],\n name: \"cancelPairLimitOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"minValidSalt\",\n type: \"uint256\",\n },\n ],\n name: \"cancelPairRfqOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n ],\n name: \"cancelRfqOrder\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFillAmount\",\n type: \"uint128\",\n },\n ],\n name: \"fillLimitOrder\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"makerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFillAmount\",\n type: \"uint128\",\n },\n ],\n name: \"fillOrKillLimitOrder\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"makerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFillAmount\",\n type: \"uint128\",\n },\n ],\n name: \"fillOrKillRfqOrder\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"makerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFillAmount\",\n type: \"uint128\",\n },\n ],\n name: \"fillRfqOrder\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"makerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n ],\n name: \"getLimitOrderHash\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n ],\n name: \"getLimitOrderInfo\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"enum LibNativeOrder.OrderStatus\",\n name: \"status\",\n type: \"uint8\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct LibNativeOrder.OrderInfo\",\n name: \"orderInfo\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFeeAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"feeRecipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.LimitOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n ],\n name: \"getLimitOrderRelevantState\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"enum LibNativeOrder.OrderStatus\",\n name: \"status\",\n type: \"uint8\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct LibNativeOrder.OrderInfo\",\n name: \"orderInfo\",\n type: \"tuple\",\n },\n {\n internalType: \"uint128\",\n name: \"actualFillableTakerTokenAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"bool\",\n name: \"isSignatureValid\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getProtocolFeeMultiplier\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"multiplier\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n ],\n name: \"getRfqOrderHash\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n ],\n name: \"getRfqOrderInfo\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"enum LibNativeOrder.OrderStatus\",\n name: \"status\",\n type: \"uint8\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct LibNativeOrder.OrderInfo\",\n name: \"orderInfo\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"makerToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20TokenV06\",\n name: \"takerToken\",\n type: \"address\",\n },\n {\n internalType: \"uint128\",\n name: \"makerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"takerAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"address\",\n name: \"maker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"taker\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"txOrigin\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"pool\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"expiry\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"salt\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct LibNativeOrder.RfqOrder\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"enum LibSignature.SignatureType\",\n name: \"signatureType\",\n type: \"uint8\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct LibSignature.Signature\",\n name: \"signature\",\n type: \"tuple\",\n },\n ],\n name: \"getRfqOrderRelevantState\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"orderHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"enum LibNativeOrder.OrderStatus\",\n name: \"status\",\n type: \"uint8\",\n },\n {\n internalType: \"uint128\",\n name: \"takerTokenFilledAmount\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct LibNativeOrder.OrderInfo\",\n name: \"orderInfo\",\n type: \"tuple\",\n },\n {\n internalType: \"uint128\",\n name: \"actualFillableTakerTokenAmount\",\n type: \"uint128\",\n },\n {\n internalType: \"bool\",\n name: \"isSignatureValid\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"migrate\",\n outputs: [\n {\n internalType: \"bytes4\",\n name: \"success\",\n type: \"bytes4\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"origins\",\n type: \"address[]\",\n },\n {\n internalType: \"bool\",\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n name: \"registerAllowedRfqOrigins\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32[]\",\n name: \"poolIds\",\n type: \"bytes32[]\",\n },\n ],\n name: \"transferProtocolFeesForPools\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class ExchangeProxy__factory {\n static readonly abi = _abi;\n static createInterface(): ExchangeProxyInterface {\n return new utils.Interface(_abi) as ExchangeProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ExchangeProxy {\n return new Contract(address, _abi, signerOrProvider) as ExchangeProxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { Governance, GovernanceInterface } from \"../Governance\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IERC20\",\n name: \"_govToken\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_start\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_duration\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_proposer\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_executor\",\n type: \"address\",\n },\n ],\n name: \"NewProposal\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_minimum\",\n type: \"uint256\",\n },\n ],\n name: \"NewProposalMinimumUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_executor\",\n type: \"address\",\n },\n ],\n name: \"ProposalExecuted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_for\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_against\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"_quorumReached\",\n type: \"bool\",\n },\n ],\n name: \"ProposalFinished\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_quorum\",\n type: \"uint256\",\n },\n ],\n name: \"QuorumUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_user\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"Staked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_user\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"Unstaked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_voter\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"_vote\",\n type: \"bool\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_weight\",\n type: \"uint256\",\n },\n ],\n name: \"Vote\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_voteDuration\",\n type: \"uint256\",\n },\n ],\n name: \"VoteDurationUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_duration\",\n type: \"uint256\",\n },\n ],\n name: \"VoteLockDurationUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"execute\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"exit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"govToken\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newProposalMinimum\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"proposalCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"proposalStats\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"proposals\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"totalVotesFor\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"totalVotesAgainst\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"start\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"end\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"totalAvailableVotes\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"quorum\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"quorumRequired\",\n type: \"uint256\",\n },\n {\n internalType: \"bool\",\n name: \"open\",\n type: \"bool\",\n },\n {\n internalType: \"bool\",\n name: \"executed\",\n type: \"bool\",\n },\n {\n internalType: \"address\",\n name: \"proposer\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"executor\",\n type: \"address\",\n },\n {\n internalType: \"string\",\n name: \"hash\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_executor\",\n type: \"address\",\n },\n {\n internalType: \"string\",\n name: \"_hash\",\n type: \"string\",\n },\n ],\n name: \"propose\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"quorum\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_minimum\",\n type: \"uint256\",\n },\n ],\n name: \"setNewProposalMinimum\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_quorum\",\n type: \"uint256\",\n },\n ],\n name: \"setQuorum\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_voteDuration\",\n type: \"uint256\",\n },\n ],\n name: \"setVoteDuration\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_duration\",\n type: \"uint256\",\n },\n ],\n name: \"setVoteLockDuration\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"stake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"tallyVotes\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalVotes\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"unstake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"voteAgainst\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"voteDuration\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"voteFor\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"voteLockDuration\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"voteLockFraction\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"voteLocks\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_voter\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"votesAgainstOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_voter\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"votesForOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_voter\",\n type: \"address\",\n },\n ],\n name: \"votesOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class Governance__factory {\n static readonly abi = _abi;\n static createInterface(): GovernanceInterface {\n return new utils.Interface(_abi) as GovernanceInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): Governance {\n return new Contract(address, _abi, signerOrProvider) as Governance;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n LiquidityProtection,\n LiquidityProtectionInterface,\n} from \"../LiquidityProtection\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IBancorNetworkV3\",\n name: \"networkV3\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"vaultV3\",\n type: \"address\",\n },\n {\n internalType: \"contract ILiquidityProtectionSettings\",\n name: \"settings\",\n type: \"address\",\n },\n {\n internalType: \"contract ILiquidityProtectionStore\",\n name: \"store\",\n type: \"address\",\n },\n {\n internalType: \"contract ILiquidityProtectionStats\",\n name: \"stats\",\n type: \"address\",\n },\n {\n internalType: \"contract ILiquidityProtectionSystemStore\",\n name: \"systemStore\",\n type: \"address\",\n },\n {\n internalType: \"contract ITokenHolder\",\n name: \"wallet\",\n type: \"address\",\n },\n {\n internalType: \"contract ITokenGovernance\",\n name: \"networkTokenGovernance\",\n type: \"address\",\n },\n {\n internalType: \"contract ITokenGovernance\",\n name: \"govTokenGovernance\",\n type: \"address\",\n },\n {\n internalType: \"contract ICheckpointStore\",\n name: \"lastRemoveCheckpointStore\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"acceptStoreOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"acceptWalletOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"addLiquidity\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"addLiquidityFor\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"startIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"endIndex\",\n type: \"uint256\",\n },\n ],\n name: \"claimBalance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"contract IDSToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"positionIds\",\n type: \"uint256[]\",\n },\n ],\n internalType: \"struct LiquidityProtection.PositionList[]\",\n name: \"positionLists\",\n type: \"tuple[]\",\n },\n ],\n name: \"migratePositions\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor[]\",\n name: \"poolAnchors\",\n type: \"address[]\",\n },\n ],\n name: \"migrateSystemPoolTokens\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"poolAvailableSpace\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IDSToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"reserveAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"poolRateN\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"poolRateD\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"reserveRateN\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"reserveRateD\",\n type: \"uint256\",\n },\n ],\n name: \"poolROI\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint32\",\n name: \"portion\",\n type: \"uint32\",\n },\n ],\n name: \"removeLiquidity\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint32\",\n name: \"portion\",\n type: \"uint32\",\n },\n {\n internalType: \"uint256\",\n name: \"removeTimestamp\",\n type: \"uint256\",\n },\n ],\n name: \"removeLiquidityReturn\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"settings\",\n outputs: [\n {\n internalType: \"contract ILiquidityProtectionSettings\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stats\",\n outputs: [\n {\n internalType: \"contract ILiquidityProtectionStats\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"store\",\n outputs: [\n {\n internalType: \"contract ILiquidityProtectionStore\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"newProvider\",\n type: \"address\",\n },\n ],\n name: \"transferPosition\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"newProvider\",\n type: \"address\",\n },\n {\n internalType: \"contract ITransferPositionCallback\",\n name: \"callback\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"transferPositionAndNotify\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferStoreOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferWalletOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nexport class LiquidityProtection__factory {\n static readonly abi = _abi;\n static createInterface(): LiquidityProtectionInterface {\n return new utils.Interface(_abi) as LiquidityProtectionInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): LiquidityProtection {\n return new Contract(address, _abi, signerOrProvider) as LiquidityProtection;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n LiquidityProtectionSettings,\n LiquidityProtectionSettingsInterface,\n} from \"../LiquidityProtectionSettings\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"contract IContractRegistry\",\n name: \"registry\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IERC20Token\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"disabled\",\n type: \"bool\",\n },\n ],\n name: \"AddLiquidityDisabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevAverageRateMaxDeviation\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newAverageRateMaxDeviation\",\n type: \"uint32\",\n },\n ],\n name: \"AverageRateMaxDeviationUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevDefault\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newDefault\",\n type: \"uint256\",\n },\n ],\n name: \"DefaultNetworkTokenMintingLimitUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevLockDuration\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newLockDuration\",\n type: \"uint256\",\n },\n ],\n name: \"LockDurationUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevMinNetworkCompensation\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newMinNetworkCompensation\",\n type: \"uint256\",\n },\n ],\n name: \"MinNetworkCompensationUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevMin\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newMin\",\n type: \"uint256\",\n },\n ],\n name: \"MinNetworkTokenLiquidityForMintingUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevLimit\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newLimit\",\n type: \"uint256\",\n },\n ],\n name: \"NetworkTokenMintingLimitUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"added\",\n type: \"bool\",\n },\n ],\n name: \"PoolWhitelistUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevMinProtectionDelay\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newMinProtectionDelay\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevMaxProtectionDelay\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newMaxProtectionDelay\",\n type: \"uint256\",\n },\n ],\n name: \"ProtectionDelaysUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract ILiquidityProtectionEventsSubscriber\",\n name: \"subscriber\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"added\",\n type: \"bool\",\n },\n ],\n name: \"SubscriberUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ROLE_OWNER\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20Token\",\n name: \"reserveToken\",\n type: \"address\",\n },\n ],\n name: \"addLiquidityDisabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"addPoolToWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract ILiquidityProtectionEventsSubscriber\",\n name: \"subscriber\",\n type: \"address\",\n },\n ],\n name: \"addSubscriber\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"averageRateMaxDeviation\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultNetworkTokenMintingLimit\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20Token\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"disable\",\n type: \"bool\",\n },\n ],\n name: \"disableAddLiquidity\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"isPoolSupported\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"isPoolWhitelisted\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"lockDuration\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxProtectionDelay\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"minNetworkCompensation\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"minNetworkTokenLiquidityForMinting\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"minProtectionDelay\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"networkToken\",\n outputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"networkTokenMintingLimits\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"onlyOwnerCanUpdateRegistry\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"poolWhitelist\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"prevRegistry\",\n outputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"registry\",\n outputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"removePoolFromWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract ILiquidityProtectionEventsSubscriber\",\n name: \"subscriber\",\n type: \"address\",\n },\n ],\n name: \"removeSubscriber\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"restoreRegistry\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_onlyOwnerCanUpdateRegistry\",\n type: \"bool\",\n },\n ],\n name: \"restrictRegistryUpdate\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"deviation\",\n type: \"uint32\",\n },\n ],\n name: \"setAverageRateMaxDeviation\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"setDefaultNetworkTokenMintingLimit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"duration\",\n type: \"uint256\",\n },\n ],\n name: \"setLockDuration\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"setMinNetworkCompensation\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"setMinNetworkTokenLiquidityForMinting\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"setNetworkTokenMintingLimit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"minDelay\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"maxDelay\",\n type: \"uint256\",\n },\n ],\n name: \"setProtectionDelays\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"subscribers\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"updateRegistry\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class LiquidityProtectionSettings__factory {\n static readonly abi = _abi;\n static createInterface(): LiquidityProtectionSettingsInterface {\n return new utils.Interface(_abi) as LiquidityProtectionSettingsInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): LiquidityProtectionSettings {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as LiquidityProtectionSettings;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n LiquidityProtectionStore,\n LiquidityProtectionStoreInterface,\n} from \"../LiquidityProtectionStore\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_expirationTime\",\n type: \"uint256\",\n },\n ],\n name: \"BalanceLocked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"BalanceUnlocked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"_poolAnchor\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"_added\",\n type: \"bool\",\n },\n ],\n name: \"PoolWhitelistUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IDSToken\",\n name: \"_poolToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IERC20Token\",\n name: \"_reserveToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_poolAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_reserveAmount\",\n type: \"uint256\",\n },\n ],\n name: \"ProtectionAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IDSToken\",\n name: \"_poolToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IERC20Token\",\n name: \"_reserveToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_poolAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_reserveAmount\",\n type: \"uint256\",\n },\n ],\n name: \"ProtectionRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_prevPoolAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_prevReserveAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_newPoolAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_newReserveAmount\",\n type: \"uint256\",\n },\n ],\n name: \"ProtectionUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"contract IERC20Token\",\n name: \"_token\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_prevAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_newAmount\",\n type: \"uint256\",\n },\n ],\n name: \"SystemBalanceUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_expirationTime\",\n type: \"uint256\",\n },\n ],\n name: \"addLockedBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"_poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"addPoolToWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n internalType: \"contract IDSToken\",\n name: \"_poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20Token\",\n name: \"_reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_poolAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_reserveAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_reserveRateN\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_reserveRateD\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_timestamp\",\n type: \"uint256\",\n },\n ],\n name: \"addProtectedLiquidity\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_token\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"decSystemBalance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_token\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"incSystemBalance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"_poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"isPoolWhitelisted\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"lockedBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n ],\n name: \"lockedBalanceCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_startIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_endIndex\",\n type: \"uint256\",\n },\n ],\n name: \"lockedBalanceRange\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"protectedLiquidity\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"contract IDSToken\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20Token\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n ],\n name: \"protectedLiquidityCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"protectedLiquidityId\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n ],\n name: \"protectedLiquidityIds\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"removeLockedBalance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"_poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"removePoolFromWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n ],\n name: \"removeProtectedLiquidity\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_token\",\n type: \"address\",\n },\n ],\n name: \"systemBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IDSToken\",\n name: \"_poolToken\",\n type: \"address\",\n },\n ],\n name: \"totalProtectedPoolAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IDSToken\",\n name: \"_poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20Token\",\n name: \"_reserveToken\",\n type: \"address\",\n },\n ],\n name: \"totalProtectedReserveAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_newPoolAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_newReserveAmount\",\n type: \"uint256\",\n },\n ],\n name: \"updateProtectedLiquidityAmounts\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_index\",\n type: \"uint256\",\n },\n ],\n name: \"whitelistedPool\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"whitelistedPoolCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"whitelistedPools\",\n outputs: [\n {\n internalType: \"contract IConverterAnchor[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"_token\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawTokens\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class LiquidityProtectionStore__factory {\n static readonly abi = _abi;\n static createInterface(): LiquidityProtectionStoreInterface {\n return new utils.Interface(_abi) as LiquidityProtectionStoreInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): LiquidityProtectionStore {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as LiquidityProtectionStore;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n LiquidityProtectionSystemStore,\n LiquidityProtectionSystemStoreInterface,\n} from \"../LiquidityProtectionSystemStore\";\n\nconst _abi = [\n {\n inputs: [],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newAmount\",\n type: \"uint256\",\n },\n ],\n name: \"NetworkTokensMintedUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IERC20Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newAmount\",\n type: \"uint256\",\n },\n ],\n name: \"SystemBalanceUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ROLE_OWNER\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ROLE_SUPERVISOR\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"decNetworkTokensMinted\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"decSystemBalance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"incNetworkTokensMinted\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"incSystemBalance\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n ],\n name: \"networkTokensMinted\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IERC20Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"systemBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class LiquidityProtectionSystemStore__factory {\n static readonly abi = _abi;\n static createInterface(): LiquidityProtectionSystemStoreInterface {\n return new utils.Interface(_abi) as LiquidityProtectionSystemStoreInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): LiquidityProtectionSystemStore {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as LiquidityProtectionSystemStore;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { Multicall, MulticallInterface } from \"../Multicall\";\n\nconst _abi = [\n {\n inputs: [\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"returnData\",\n type: \"bytes[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"blockAndAggregate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n {\n components: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"returnData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n ],\n name: \"getBlockHash\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getBlockNumber\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockCoinbase\",\n outputs: [\n {\n internalType: \"address\",\n name: \"coinbase\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockDifficulty\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"difficulty\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockGasLimit\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"gaslimit\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockTimestamp\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"timestamp\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"addr\",\n type: \"address\",\n },\n ],\n name: \"getEthBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getLastBlockHash\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"requireSuccess\",\n type: \"bool\",\n },\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryAggregate\",\n outputs: [\n {\n components: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"returnData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"requireSuccess\",\n type: \"bool\",\n },\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryBlockAndAggregate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n {\n components: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"returnData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class Multicall__factory {\n static readonly abi = _abi;\n static createInterface(): MulticallInterface {\n return new utils.Interface(_abi) as MulticallInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): Multicall {\n return new Contract(address, _abi, signerOrProvider) as Multicall;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n StakingRewards,\n StakingRewardsInterface,\n} from \"../StakingRewards\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IStakingRewardsStore\",\n name: \"store\",\n type: \"address\",\n },\n {\n internalType: \"contract ITokenGovernance\",\n name: \"networkTokenGovernance\",\n type: \"address\",\n },\n {\n internalType: \"contract ICheckpointStore\",\n name: \"lastRemoveTimes\",\n type: \"address\",\n },\n {\n internalType: \"contract IContractRegistry\",\n name: \"registry\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"RewardsClaimed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IDSToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"newId\",\n type: \"uint256\",\n },\n ],\n name: \"RewardsStaked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ROLE_PUBLISHER\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ROLE_SUPERVISOR\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ROLE_UPDATER\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"claimRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract IConverterAnchor\",\n name: \"poolAnchor\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"onAddingLiquidity\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract IConverterAnchor\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"onRemovingLiquidity\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"onlyOwnerCanUpdateRegistry\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract IDSToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n ],\n name: \"pendingPoolRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract IDSToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"reserveToken\",\n type: \"address\",\n },\n ],\n name: \"pendingReserveRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n ],\n name: \"pendingRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"prevRegistry\",\n outputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"registry\",\n outputs: [\n {\n internalType: \"contract IContractRegistry\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"restoreRegistry\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"restrictOwnerOnly\",\n type: \"bool\",\n },\n ],\n name: \"restrictRegistryUpdate\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract IDSToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"reserveToken\",\n type: \"address\",\n },\n ],\n name: \"rewardsMultiplier\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IDSToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract IReserveToken\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"maxAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"contract IDSToken\",\n name: \"newPoolToken\",\n type: \"address\",\n },\n ],\n name: \"stakeReserveRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"maxAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"contract IDSToken\",\n name: \"newPoolToken\",\n type: \"address\",\n },\n ],\n name: \"stakeRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"store\",\n outputs: [\n {\n internalType: \"contract IStakingRewardsStore\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"providers\",\n type: \"address[]\",\n },\n {\n internalType: \"contract IDSToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n ],\n name: \"storePoolRewards\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n ],\n name: \"totalClaimedRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"updateRegistry\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class StakingRewards__factory {\n static readonly abi = _abi;\n static createInterface(): StakingRewardsInterface {\n return new utils.Interface(_abi) as StakingRewardsInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): StakingRewards {\n return new Contract(address, _abi, signerOrProvider) as StakingRewards;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n Overrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n StakingRewardsClaim,\n StakingRewardsClaimInterface,\n} from \"../StakingRewardsClaim\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IBancorNetworkV3\",\n name: \"initNetworkV3\",\n type: \"address\",\n },\n {\n internalType: \"contract ITokenGovernance\",\n name: \"initBNTGovernance\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"initMerkleRoot\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"AlreadyClaimed\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidClaim\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"RewardsClaimed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"RewardsStaked\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"fullAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32[]\",\n name: \"proof\",\n type: \"bytes32[]\",\n },\n ],\n name: \"claimRewards\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasClaimed\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"merkleRoot\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"fullAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32[]\",\n name: \"proof\",\n type: \"bytes32[]\",\n },\n ],\n name: \"stakeRewards\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalClaimed\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x61010060405234801561001157600080fd5b5060405161098f38038061098f83398101604081905261003091610110565b8261003a816100d1565b82610044816100d1565b6001600160a01b03808616608052841660a081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015610094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b89190610153565b6001600160a01b031660c052505060e052506101779050565b6001600160a01b0381166100f85760405163e6c4247b60e01b815260040160405180910390fd5b50565b6001600160a01b03811681146100f857600080fd5b60008060006060848603121561012557600080fd5b8351610130816100fb565b6020850151909350610141816100fb565b80925050604084015190509250925092565b60006020828403121561016557600080fd5b8151610170816100fb565b9392505050565b60805160a05160c05160e0516107c46101cb60003960008181605e015261023c01526000818161038a01526104190152600081816102e2015261052401526000818161035b015261044801526107c46000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632eb4a7ab1461005c57806373b2e80e14610091578063d54ad2a1146100cd578063d64bc331146100d5578063e07582a7146100ea575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020015b60405180910390f35b6100bd61009f366004610673565b6001600160a01b031660009081526001602052604090205460ff1690565b6040519015158152602001610088565b60005461007e565b6100e86100e3366004610695565b6100fd565b005b6100e86100f8366004610695565b61011d565b8261010781610136565b6101163386868686600061015a565b5050505050565b8261012781610136565b6101163386868686600161015a565b8060000361015757604051637c946ed760e01b815260040160405180910390fd5b50565b846001600160a01b0316866001600160a01b03161461018c57604051634ca8886760e01b815260040160405180910390fd5b6001600160a01b03851660009081526001602052604090205460ff16156101c657604051630c8d9eab60e31b815260040160405180910390fd5b6040516bffffffffffffffffffffffff19606087901b166020820152603481018590526000906054016040516020818303038152906040528051906020012090506102678484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f000000000000000000000000000000000000000000000000000000000000000092508591506105cd9050565b61028457604051633b4f091f60e21b815260040160405180910390fd5b6001600160a01b03861660009081526001602081905260408220805460ff19169091179055805486919081906102bb908490610735565b909155505081156104fe576040516340c10f1960e01b8152306004820152602481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b505060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018990527f000000000000000000000000000000000000000000000000000000000000000016925063095ea7b391506044016020604051808303816000875af11580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f9919061074d565b5060405163b3db428b60e01b81526001600160a01b0387811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018790527f0000000000000000000000000000000000000000000000000000000000000000169063b3db428b906064016020604051808303816000875af1158015610491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b5919061076f565b50856001600160a01b03167fee7393505f4f8617cad79e74b3325ee5423113e8026ff3ae90ff72f8c0afcc61866040516104f191815260200190565b60405180910390a26105c4565b6040516340c10f1960e01b81526001600160a01b038781166004830152602482018790527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561056857600080fd5b505af115801561057c573d6000803e3d6000fd5b50505050856001600160a01b03167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe866040516105bb91815260200190565b60405180910390a25b50505050505050565b6000826105da85846105e3565b14949350505050565b600081815b845181101561064f57600085828151811061060557610605610788565b6020026020010151905080831161062b576000838152602082905260409020925061063c565b600081815260208490526040902092505b50806106478161079e565b9150506105e8565b509392505050565b80356001600160a01b038116811461066e57600080fd5b919050565b60006020828403121561068557600080fd5b61068e82610657565b9392505050565b600080600080606085870312156106ab57600080fd5b6106b485610657565b935060208501359250604085013567ffffffffffffffff808211156106d857600080fd5b818701915087601f8301126106ec57600080fd5b8135818111156106fb57600080fd5b8860208260051b850101111561071057600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156107485761074861071f565b500190565b60006020828403121561075f57600080fd5b8151801515811461068e57600080fd5b60006020828403121561078157600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000600182016107b0576107b061071f565b506001019056fea164736f6c634300080d000a\";\n\ntype StakingRewardsClaimConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: StakingRewardsClaimConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class StakingRewardsClaim__factory extends ContractFactory {\n constructor(...args: StakingRewardsClaimConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n initNetworkV3: string,\n initBNTGovernance: string,\n initMerkleRoot: BytesLike,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n initNetworkV3,\n initBNTGovernance,\n initMerkleRoot,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n initNetworkV3: string,\n initBNTGovernance: string,\n initMerkleRoot: BytesLike,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(\n initNetworkV3,\n initBNTGovernance,\n initMerkleRoot,\n overrides || {}\n );\n }\n attach(address: string): StakingRewardsClaim {\n return super.attach(address) as StakingRewardsClaim;\n }\n connect(signer: Signer): StakingRewardsClaim__factory {\n return super.connect(signer) as StakingRewardsClaim__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): StakingRewardsClaimInterface {\n return new utils.Interface(_abi) as StakingRewardsClaimInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): StakingRewardsClaim {\n return new Contract(address, _abi, signerOrProvider) as StakingRewardsClaim;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { Token, TokenInterface } from \"../Token\";\n\nconst _abi = [\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_spender\",\n type: \"address\",\n },\n {\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n name: \"success\",\n type: \"bool\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_disable\",\n type: \"bool\",\n },\n ],\n name: \"disableTransfers\",\n outputs: [],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_from\",\n type: \"address\",\n },\n {\n name: \"_to\",\n type: \"address\",\n },\n {\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n name: \"success\",\n type: \"bool\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"version\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"standard\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_token\",\n type: \"address\",\n },\n {\n name: \"_to\",\n type: \"address\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawTokens\",\n outputs: [],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_to\",\n type: \"address\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"issue\",\n outputs: [],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_from\",\n type: \"address\",\n },\n {\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"destroy\",\n outputs: [],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_to\",\n type: \"address\",\n },\n {\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n name: \"success\",\n type: \"bool\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"transfersEnabled\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n payable: false,\n type: \"function\",\n },\n {\n inputs: [\n {\n name: \"_name\",\n type: \"string\",\n },\n {\n name: \"_symbol\",\n type: \"string\",\n },\n {\n name: \"_decimals\",\n type: \"uint8\",\n },\n ],\n payable: false,\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n name: \"_token\",\n type: \"address\",\n },\n ],\n name: \"NewSmartToken\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"Issuance\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"Destruction\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n name: \"_prevOwner\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"_newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"_from\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"_to\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"_owner\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"_spender\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n];\n\nexport class Token__factory {\n static readonly abi = _abi;\n static createInterface(): TokenInterface {\n return new utils.Interface(_abi) as TokenInterface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): Token {\n return new Contract(address, _abi, signerOrProvider) as Token;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n BancorNetworkInfoProxy,\n BancorNetworkInfoProxyInterface,\n} from \"../BancorNetworkInfoProxy\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype BancorNetworkInfoProxyConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: BancorNetworkInfoProxyConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class BancorNetworkInfoProxy__factory extends ContractFactory {\n constructor(...args: BancorNetworkInfoProxyConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): BancorNetworkInfoProxy {\n return super.attach(address) as BancorNetworkInfoProxy;\n }\n connect(signer: Signer): BancorNetworkInfoProxy__factory {\n return super.connect(signer) as BancorNetworkInfoProxy__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): BancorNetworkInfoProxyInterface {\n return new utils.Interface(_abi) as BancorNetworkInfoProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): BancorNetworkInfoProxy {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as BancorNetworkInfoProxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n BancorNetworkInfo,\n BancorNetworkInfoInterface,\n} from \"../BancorNetworkInfo\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n {\n inputs: [],\n name: \"AlreadyInitialized\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidParam\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidToken\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"bnt\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"bntGovernance\",\n outputs: [\n {\n internalType: \"contract ITokenGovernance\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"bntPool\",\n outputs: [\n {\n internalType: \"contract IBNTPool\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"depositingEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"externalProtectionVault\",\n outputs: [\n {\n internalType: \"contract IExternalProtectionVault\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"externalRewardsVault\",\n outputs: [\n {\n internalType: \"contract IExternalRewardsVault\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"isPoolStable\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"isReadyForWithdrawal\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"masterVault\",\n outputs: [\n {\n internalType: \"contract IMasterVault\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"network\",\n outputs: [\n {\n internalType: \"contract IBancorNetwork\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"networkSettings\",\n outputs: [\n {\n internalType: \"contract INetworkSettings\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pendingWithdrawals\",\n outputs: [\n {\n internalType: \"contract IPendingWithdrawals\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"poolMigrator\",\n outputs: [\n {\n internalType: \"contract IPoolMigrator\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"poolToken\",\n outputs: [\n {\n internalType: \"contract IPoolToken\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"poolTokenToUnderlying\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"postUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"stakedBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"targetAmount\",\n type: \"uint256\",\n },\n ],\n name: \"tradeInputByTargetAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"sourceAmount\",\n type: \"uint256\",\n },\n ],\n name: \"tradeOutputBySourceAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"tradingEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"tradingFeePPM\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"tradingLiquidity\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"bntTradingLiquidity\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"baseTokenTradingLiquidity\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct TradingLiquidity\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"underlyingToPoolToken\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"vbnt\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"vbntGovernance\",\n outputs: [\n {\n internalType: \"contract ITokenGovernance\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawalAmounts\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"totalAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"baseTokenAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"bntAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct WithdrawalAmounts\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype BancorNetworkInfoConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: BancorNetworkInfoConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class BancorNetworkInfo__factory extends ContractFactory {\n constructor(...args: BancorNetworkInfoConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): BancorNetworkInfo {\n return super.attach(address) as BancorNetworkInfo;\n }\n connect(signer: Signer): BancorNetworkInfo__factory {\n return super.connect(signer) as BancorNetworkInfo__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): BancorNetworkInfoInterface {\n return new utils.Interface(_abi) as BancorNetworkInfoInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): BancorNetworkInfo {\n return new Contract(address, _abi, signerOrProvider) as BancorNetworkInfo;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n BancorNetworkV3Proxy,\n BancorNetworkV3ProxyInterface,\n} from \"../BancorNetworkV3Proxy\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nexport class BancorNetworkV3Proxy__factory {\n static readonly abi = _abi;\n static createInterface(): BancorNetworkV3ProxyInterface {\n return new utils.Interface(_abi) as BancorNetworkV3ProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): BancorNetworkV3Proxy {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as BancorNetworkV3Proxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n BancorNetworkV3,\n BancorNetworkV3Interface,\n} from \"../BancorNetworkV3\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n {\n inputs: [],\n name: \"AlreadyExists\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"AlreadyInitialized\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DeadlineExpired\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DoesNotExist\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InsufficientFlashLoanReturn\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidPoolCollection\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidToken\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidType\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"NativeTokenAmountMismatch\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"NotEmpty\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"NotWhitelisted\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"Overflow\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"PermitUnsupported\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"borrower\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"feeAmount\",\n type: \"uint256\",\n },\n ],\n name: \"FlashLoanCompleted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"availableAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"originalAmount\",\n type: \"uint256\",\n },\n ],\n name: \"FundsMigrated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"poolType\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"contract IPoolCollection\",\n name: \"prevPoolCollection\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IPoolCollection\",\n name: \"newPoolCollection\",\n type: \"address\",\n },\n ],\n name: \"LatestPoolCollectionReplaced\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"caller\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"recipient\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"NetworkFeesWithdrawn\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IPoolCollection\",\n name: \"poolCollection\",\n type: \"address\",\n },\n ],\n name: \"PoolAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"poolType\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"contract IPoolCollection\",\n name: \"poolCollection\",\n type: \"address\",\n },\n ],\n name: \"PoolCollectionAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"poolType\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"contract IPoolCollection\",\n name: \"poolCollection\",\n type: \"address\",\n },\n ],\n name: \"PoolCollectionRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"sourceAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"targetAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bntAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"targetFeeAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bntFeeAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"trader\",\n type: \"address\",\n },\n ],\n name: \"TokensTraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IPoolCollection\",\n name: \"poolCollection\",\n type: \"address\",\n },\n ],\n name: \"addPoolCollection\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"cancelWithdrawal\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"collectionByPool\",\n outputs: [\n {\n internalType: \"contract IPoolCollection\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"poolType\",\n type: \"uint16\",\n },\n {\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"createPool\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"poolType\",\n type: \"uint16\",\n },\n {\n internalType: \"contract Token[]\",\n name: \"tokens\",\n type: \"address[]\",\n },\n ],\n name: \"createPools\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"deposit\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"depositFor\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"depositForPermitted\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"depositPermitted\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"contract IFlashLoanRecipient\",\n name: \"recipient\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"flashLoan\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"initWithdrawal\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"initWithdrawalPermitted\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IBNTPool\",\n name: \"initBNTPool\",\n type: \"address\",\n },\n {\n internalType: \"contract IPendingWithdrawals\",\n name: \"initPendingWithdrawals\",\n type: \"address\",\n },\n {\n internalType: \"contract IPoolMigrator\",\n name: \"initPoolMigrator\",\n type: \"address\",\n },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isPaused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"isPoolValid\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"poolType\",\n type: \"uint16\",\n },\n ],\n name: \"latestPoolCollection\",\n outputs: [\n {\n internalType: \"contract IPoolCollection\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"liquidityPools\",\n outputs: [\n {\n internalType: \"contract Token[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"availableAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"originalAmount\",\n type: \"uint256\",\n },\n ],\n name: \"migrateLiquidity\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token[]\",\n name: \"pools\",\n type: \"address[]\",\n },\n ],\n name: \"migratePools\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pendingNetworkFeeAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"poolCollections\",\n outputs: [\n {\n internalType: \"contract IPoolCollection[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"postUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IPoolCollection\",\n name: \"poolCollection\",\n type: \"address\",\n },\n {\n internalType: \"contract IPoolCollection\",\n name: \"newLatestPoolCollection\",\n type: \"address\",\n },\n ],\n name: \"removePoolCollection\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"resume\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleEmergencyStopper\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleMigrationManager\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleNetworkFeeManager\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IPoolCollection\",\n name: \"poolCollection\",\n type: \"address\",\n },\n ],\n name: \"setLatestPoolCollection\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"sourceAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"minReturnAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"beneficiary\",\n type: \"address\",\n },\n ],\n name: \"tradeBySourceAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"sourceAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"minReturnAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"beneficiary\",\n type: \"address\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"tradeBySourceAmountPermitted\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"targetAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"maxSourceAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"beneficiary\",\n type: \"address\",\n },\n ],\n name: \"tradeByTargetAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"targetAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"maxSourceAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"beneficiary\",\n type: \"address\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"tradeByTargetAmountPermitted\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"withdraw\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"recipient\",\n type: \"address\",\n },\n ],\n name: \"withdrawNetworkFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype BancorNetworkV3ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: BancorNetworkV3ConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class BancorNetworkV3__factory extends ContractFactory {\n constructor(...args: BancorNetworkV3ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): BancorNetworkV3 {\n return super.attach(address) as BancorNetworkV3;\n }\n connect(signer: Signer): BancorNetworkV3__factory {\n return super.connect(signer) as BancorNetworkV3__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): BancorNetworkV3Interface {\n return new utils.Interface(_abi) as BancorNetworkV3Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): BancorNetworkV3 {\n return new Contract(address, _abi, signerOrProvider) as BancorNetworkV3;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n BancorPortalProxy,\n BancorPortalProxyInterface,\n} from \"../BancorPortalProxy\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype BancorPortalProxyConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: BancorPortalProxyConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class BancorPortalProxy__factory extends ContractFactory {\n constructor(...args: BancorPortalProxyConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): BancorPortalProxy {\n return super.attach(address) as BancorPortalProxy;\n }\n connect(signer: Signer): BancorPortalProxy__factory {\n return super.connect(signer) as BancorPortalProxy__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): BancorPortalProxyInterface {\n return new utils.Interface(_abi) as BancorPortalProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): BancorPortalProxy {\n return new Contract(address, _abi, signerOrProvider) as BancorPortalProxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { BancorPortal, BancorPortalInterface } from \"../BancorPortal\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n {\n inputs: [],\n name: \"AlreadyInitialized\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"NoPairForTokens\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"UnsupportedTokens\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"contract IUniswapV2Pair\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"tokenA\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"tokenB\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountA\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountB\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"depositedA\",\n type: \"bool\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"depositedB\",\n type: \"bool\",\n },\n ],\n name: \"SushiSwapV2PositionMigrated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"contract IUniswapV2Pair\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"tokenA\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"tokenB\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountA\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountB\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"depositedA\",\n type: \"bool\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"depositedB\",\n type: \"bool\",\n },\n ],\n name: \"UniswapV2PositionMigrated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token0\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"token1\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"migrateSushiSwapV1Position\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"amountA\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amountB\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct UniswapV2PositionMigration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token0\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"token1\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"migrateUniswapV2Position\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"amountA\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amountB\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct UniswapV2PositionMigration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"postUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype BancorPortalConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: BancorPortalConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class BancorPortal__factory extends ContractFactory {\n constructor(...args: BancorPortalConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): BancorPortal {\n return super.attach(address) as BancorPortal;\n }\n connect(signer: Signer): BancorPortal__factory {\n return super.connect(signer) as BancorPortal__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): BancorPortalInterface {\n return new utils.Interface(_abi) as BancorPortalInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): BancorPortal {\n return new Contract(address, _abi, signerOrProvider) as BancorPortal;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n NetworkSettingsProxy,\n NetworkSettingsProxyInterface,\n} from \"../NetworkSettingsProxy\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype NetworkSettingsProxyConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: NetworkSettingsProxyConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class NetworkSettingsProxy__factory extends ContractFactory {\n constructor(...args: NetworkSettingsProxyConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): NetworkSettingsProxy {\n return super.attach(address) as NetworkSettingsProxy;\n }\n connect(signer: Signer): NetworkSettingsProxy__factory {\n return super.connect(signer) as NetworkSettingsProxy__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): NetworkSettingsProxyInterface {\n return new utils.Interface(_abi) as NetworkSettingsProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): NetworkSettingsProxy {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as NetworkSettingsProxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n NetworkSettings,\n NetworkSettingsInterface,\n} from \"../NetworkSettings\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n {\n inputs: [],\n name: \"AlreadyExists\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"AlreadyInitialized\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DoesNotExist\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidExternalAddress\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidFee\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidParam\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"NotWhitelisted\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevFeePPM\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"DefaultFlashLoanFeePPMUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevFeePPM\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"FlashLoanFeePPMUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevLimit\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newLimit\",\n type: \"uint256\",\n },\n ],\n name: \"FundingLimitUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevLiquidity\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newLiquidity\",\n type: \"uint256\",\n },\n ],\n name: \"MinLiquidityForTradingUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevFeePPM\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"NetworkFeePPMUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"TokenAddedToWhitelist\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"TokenRemovedFromWhitelist\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevBurnRewardPPM\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newBurnRewardPPM\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevBurnRewardMaxAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newBurnRewardMaxAmount\",\n type: \"uint256\",\n },\n ],\n name: \"VortexBurnRewardUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevFeePPM\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"WithdrawalFeePPMUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"addTokenToWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"addTokenToWhitelistWithLimit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token[]\",\n name: \"tokens\",\n type: \"address[]\",\n },\n ],\n name: \"addTokensToWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultFlashLoanFeePPM\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"flashLoanFeePPM\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"isTokenWhitelisted\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"minLiquidityForTrading\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"networkFeePPM\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"poolFundingLimit\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"postUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"protectedTokenWhitelist\",\n outputs: [\n {\n internalType: \"contract Token[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"removeTokenFromWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"newDefaultFlashLoanFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"setDefaultFlashLoanFeePPM\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"newFlashLoanFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"setFlashLoanFeePPM\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"setFundingLimit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token[]\",\n name: \"pools\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n ],\n name: \"setFundingLimits\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"setMinLiquidityForTrading\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"newNetworkFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"setNetworkFeePPM\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint32\",\n name: \"burnRewardPPM\",\n type: \"uint32\",\n },\n {\n internalType: \"uint256\",\n name: \"burnRewardMaxAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct VortexRewards\",\n name: \"rewards\",\n type: \"tuple\",\n },\n ],\n name: \"setVortexRewards\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"newWithdrawalFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"setWithdrawalFeePPM\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"vortexRewards\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint32\",\n name: \"burnRewardPPM\",\n type: \"uint32\",\n },\n {\n internalType: \"uint256\",\n name: \"burnRewardMaxAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct VortexRewards\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"withdrawalFeePPM\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype NetworkSettingsConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: NetworkSettingsConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class NetworkSettings__factory extends ContractFactory {\n constructor(...args: NetworkSettingsConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): NetworkSettings {\n return super.attach(address) as NetworkSettings;\n }\n connect(signer: Signer): NetworkSettings__factory {\n return super.connect(signer) as NetworkSettings__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): NetworkSettingsInterface {\n return new utils.Interface(_abi) as NetworkSettingsInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): NetworkSettings {\n return new Contract(address, _abi, signerOrProvider) as NetworkSettings;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n PendingWithdrawalsProxy,\n PendingWithdrawalsProxyInterface,\n} from \"../PendingWithdrawalsProxy\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype PendingWithdrawalsProxyConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: PendingWithdrawalsProxyConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class PendingWithdrawalsProxy__factory extends ContractFactory {\n constructor(...args: PendingWithdrawalsProxyConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): PendingWithdrawalsProxy {\n return super.attach(address) as PendingWithdrawalsProxy;\n }\n connect(signer: Signer): PendingWithdrawalsProxy__factory {\n return super.connect(signer) as PendingWithdrawalsProxy__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): PendingWithdrawalsProxyInterface {\n return new utils.Interface(_abi) as PendingWithdrawalsProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): PendingWithdrawalsProxy {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as PendingWithdrawalsProxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n PendingWithdrawals,\n PendingWithdrawalsInterface,\n} from \"../PendingWithdrawals\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n {\n inputs: [],\n name: \"AlreadyExists\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"AlreadyInitialized\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DoesNotExist\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidPool\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"Overflow\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"WithdrawalNotAllowed\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevLockDuration\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newLockDuration\",\n type: \"uint32\",\n },\n ],\n name: \"LockDurationUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"requestId\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"reserveTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"timeElapsed\",\n type: \"uint32\",\n },\n ],\n name: \"WithdrawalCancelled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"requestId\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"reserveTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"timeElapsed\",\n type: \"uint32\",\n },\n ],\n name: \"WithdrawalCompleted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"requestId\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"reserveTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawalInitiated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"cancelWithdrawal\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"completeWithdrawal\",\n outputs: [\n {\n components: [\n {\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct CompletedWithdrawal\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"initWithdrawal\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"isReadyForWithdrawal\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"lockDuration\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"postUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"newLockDuration\",\n type: \"uint32\",\n },\n ],\n name: \"setLockDuration\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawalRequest\",\n outputs: [\n {\n components: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"reserveToken\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"createdAt\",\n type: \"uint32\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"reserveTokenAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct WithdrawalRequest\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n ],\n name: \"withdrawalRequestCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n ],\n name: \"withdrawalRequestIds\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype PendingWithdrawalsConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: PendingWithdrawalsConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class PendingWithdrawals__factory extends ContractFactory {\n constructor(...args: PendingWithdrawalsConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): PendingWithdrawals {\n return super.attach(address) as PendingWithdrawals;\n }\n connect(signer: Signer): PendingWithdrawals__factory {\n return super.connect(signer) as PendingWithdrawals__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): PendingWithdrawalsInterface {\n return new utils.Interface(_abi) as PendingWithdrawalsInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): PendingWithdrawals {\n return new Contract(address, _abi, signerOrProvider) as PendingWithdrawals;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n PoolCollectionType1,\n PoolCollectionType1Interface,\n} from \"../PoolCollectionType1\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"contract IBancorNetwork\",\n name: \"initNetwork\",\n type: \"address\",\n },\n {\n internalType: \"contract IERC20\",\n name: \"initBNT\",\n type: \"address\",\n },\n {\n internalType: \"contract INetworkSettings\",\n name: \"initNetworkSettings\",\n type: \"address\",\n },\n {\n internalType: \"contract IMasterVault\",\n name: \"initMasterVault\",\n type: \"address\",\n },\n {\n internalType: \"contract IBNTPool\",\n name: \"initBNTPool\",\n type: \"address\",\n },\n {\n internalType: \"contract IExternalProtectionVault\",\n name: \"initExternalProtectionVault\",\n type: \"address\",\n },\n {\n internalType: \"contract IPoolTokenFactory\",\n name: \"initPoolTokenFactory\",\n type: \"address\",\n },\n {\n internalType: \"contract IPoolMigrator\",\n name: \"initPoolMigrator\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"AlreadyEnabled\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"AlreadyExists\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DepositLimitExceeded\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DepositingDisabled\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DoesNotExist\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InsufficientLiquidity\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InsufficientSourceAmount\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InsufficientTargetAmount\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidFee\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidPoolCollection\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidRate\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidStakedBalance\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"NotWhitelisted\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"Overflow\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"PoolCollectionWithdrawalInputInvalid\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"RateUnstable\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"SameOwner\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"TradingDisabled\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevFeePPM\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"DefaultTradingFeePPMUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevDepositLimit\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newDepositLimit\",\n type: \"uint256\",\n },\n ],\n name: \"DepositLimitUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"bool\",\n name: \"newStatus\",\n type: \"bool\",\n },\n ],\n name: \"DepositingEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"prevOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnerUpdate\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"PoolCreated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"TokensDeposited\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"externalProtectionBaseTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bntAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"withdrawalFeeAmount\",\n type: \"uint256\",\n },\n ],\n name: \"TokensWithdrawn\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"liquidity\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"stakedBalance\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"poolTokenSupply\",\n type: \"uint256\",\n },\n ],\n name: \"TotalLiquidityUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"bool\",\n name: \"newStatus\",\n type: \"bool\",\n },\n {\n indexed: true,\n internalType: \"uint8\",\n name: \"reason\",\n type: \"uint8\",\n },\n ],\n name: \"TradingEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"prevFeePPM\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"newFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"TradingFeePPMUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevLiquidity\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newLiquidity\",\n type: \"uint256\",\n },\n ],\n name: \"TradingLiquidityUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"createPool\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultTradingFeePPM\",\n outputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"depositFor\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"disableTrading\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"status\",\n type: \"bool\",\n },\n ],\n name: \"enableDepositing\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"bntVirtualBalance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"baseTokenVirtualBalance\",\n type: \"uint256\",\n },\n ],\n name: \"enableTrading\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"isPoolValid\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n components: [\n {\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"tradingFeePPM\",\n type: \"uint32\",\n },\n {\n internalType: \"bool\",\n name: \"tradingEnabled\",\n type: \"bool\",\n },\n {\n internalType: \"bool\",\n name: \"depositingEnabled\",\n type: \"bool\",\n },\n {\n components: [\n {\n internalType: \"uint32\",\n name: \"blockNumber\",\n type: \"uint32\",\n },\n {\n components: [\n {\n internalType: \"uint112\",\n name: \"n\",\n type: \"uint112\",\n },\n {\n internalType: \"uint112\",\n name: \"d\",\n type: \"uint112\",\n },\n ],\n internalType: \"struct Fraction112\",\n name: \"rate\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct AverageRate\",\n name: \"averageRate\",\n type: \"tuple\",\n },\n {\n internalType: \"uint256\",\n name: \"depositLimit\",\n type: \"uint256\",\n },\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"bntTradingLiquidity\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"baseTokenTradingLiquidity\",\n type: \"uint128\",\n },\n {\n internalType: \"uint256\",\n name: \"stakedBalance\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct PoolLiquidity\",\n name: \"liquidity\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct Pool\",\n name: \"data\",\n type: \"tuple\",\n },\n ],\n name: \"migratePoolIn\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"contract IPoolCollection\",\n name: \"targetPoolCollection\",\n type: \"address\",\n },\n ],\n name: \"migratePoolOut\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"newOwner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"feeAmount\",\n type: \"uint256\",\n },\n ],\n name: \"onFeesCollected\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"poolCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"poolData\",\n outputs: [\n {\n components: [\n {\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"tradingFeePPM\",\n type: \"uint32\",\n },\n {\n internalType: \"bool\",\n name: \"tradingEnabled\",\n type: \"bool\",\n },\n {\n internalType: \"bool\",\n name: \"depositingEnabled\",\n type: \"bool\",\n },\n {\n components: [\n {\n internalType: \"uint32\",\n name: \"blockNumber\",\n type: \"uint32\",\n },\n {\n components: [\n {\n internalType: \"uint112\",\n name: \"n\",\n type: \"uint112\",\n },\n {\n internalType: \"uint112\",\n name: \"d\",\n type: \"uint112\",\n },\n ],\n internalType: \"struct Fraction112\",\n name: \"rate\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct AverageRate\",\n name: \"averageRate\",\n type: \"tuple\",\n },\n {\n internalType: \"uint256\",\n name: \"depositLimit\",\n type: \"uint256\",\n },\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"bntTradingLiquidity\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"baseTokenTradingLiquidity\",\n type: \"uint128\",\n },\n {\n internalType: \"uint256\",\n name: \"stakedBalance\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct PoolLiquidity\",\n name: \"liquidity\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct Pool\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"poolLiquidity\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"bntTradingLiquidity\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"baseTokenTradingLiquidity\",\n type: \"uint128\",\n },\n {\n internalType: \"uint256\",\n name: \"stakedBalance\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct PoolLiquidity\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"poolToken\",\n outputs: [\n {\n internalType: \"contract IPoolToken\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmountToDistribute\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"protocolPoolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"poolTokenAmountToBurn\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"poolTokenToUnderlying\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"poolType\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pools\",\n outputs: [\n {\n internalType: \"contract Token[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"newDefaultTradingFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"setDefaultTradingFeePPM\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"newDepositLimit\",\n type: \"uint256\",\n },\n ],\n name: \"setDepositLimit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"newTradingFeePPM\",\n type: \"uint32\",\n },\n ],\n name: \"setTradingFeePPM\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"sourceAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"minReturnAmount\",\n type: \"uint256\",\n },\n ],\n name: \"tradeBySourceAmount\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tradingFeeAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"networkFeeAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct TradeAmountAndFee\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"targetAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"maxSourceAmount\",\n type: \"uint256\",\n },\n ],\n name: \"tradeByTargetAmount\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tradingFeeAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"networkFeeAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct TradeAmountAndFee\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"targetAmount\",\n type: \"uint256\",\n },\n ],\n name: \"tradeInputAndFeeByTargetAmount\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tradingFeeAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"networkFeeAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct TradeAmountAndFee\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"sourceToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"targetToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"sourceAmount\",\n type: \"uint256\",\n },\n ],\n name: \"tradeOutputAndFeeBySourceAmount\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tradingFeeAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"networkFeeAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct TradeAmountAndFee\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"ownerCandidate\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"underlyingToPoolToken\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"contextId\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"withdraw\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawalAmounts\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"totalAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"baseTokenAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"bntAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct WithdrawalAmounts\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x6101806040523480156200001257600080fd5b5060405162005aea38038062005aea8339810160408190526200003591620002aa565b62000040336200019d565b876200004c81620001f7565b876200005881620001f7565b876200006481620001f7565b876200007081620001f7565b876200007c81620001f7565b876200008881620001f7565b876200009481620001f7565b87620000a081620001f7565b8f6001600160a01b03166080816001600160a01b0316815250508e6001600160a01b031660a0816001600160a01b0316815250508d6001600160a01b031660c0816001600160a01b0316815250508c6001600160a01b031660e0816001600160a01b0316815250508b6001600160a01b0316610100816001600160a01b0316815250508a6001600160a01b0316610120816001600160a01b031681525050896001600160a01b0316610140816001600160a01b031681525050886001600160a01b0316610160816001600160a01b031681525050620001876107d06200022260201b60201c565b505050505050505050505050505050506200036b565b600080546001600160a01b038381166001600160a01b031980841682178555600180549091169055604051919092169283917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a9190a35050565b6001600160a01b0381166200021f5760405163e6c4247b60e01b815260040160405180910390fd5b50565b60055463ffffffff90811690821681036200023b575050565b6005805463ffffffff191663ffffffff84811691821790925560408051928416835260208301919091527fb804b0ec3f0ea43004870df377170ce44cb789adca16d23286e337605558117f910160405180910390a15050565b6001600160a01b03811681146200021f57600080fd5b600080600080600080600080610100898b031215620002c857600080fd5b8851620002d58162000294565b60208a0151909850620002e88162000294565b60408a0151909750620002fb8162000294565b60608a01519096506200030e8162000294565b60808a0151909550620003218162000294565b60a08a0151909450620003348162000294565b60c08a0151909350620003478162000294565b60e08a01519092506200035a8162000294565b809150509295985092959890939650565b60805160a05160c05160e0516101005161012051610140516101605161565c6200048e60003960008181611a740152611be5015260006110490152600081816129710152613030015260008181611f5d0152818161201d015281816120ef01528181612db301528181612e4d01528181612ea101528181612f730152613b9e015260008181611e690152818161288701528181612ece01528181613000015281816130e001526135d201526000818161071001528181610f9f015281816117d2015281816129a20152818161318c0152613cff0152600081816123e40152613f4501526000818161065101528181610aaa01528181610dff01528181610f58015281816114a00152818161193201528181611abe0152612c6b015261565c6000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80639049f9d21161011a578063c5c51dca116100ad578063ee4808fe1161007c578063ee4808fe146104d7578063f2fde38b146104ea578063f525cb68146104fd578063f6c5786114610505578063fba8cdee1461054357600080fd5b8063c5c51dca1461048b578063d3df2424146104a0578063d4ee1d90146104b3578063e6a6a202146104c457600080fd5b80639fc19231116100e95780639fc19231146103d6578063a135ef17146103ee578063b1dd61b614610471578063b7fafb7a1461047857600080fd5b80639049f9d21461038a5780639181d2e31461039d578063921a929e146103b05780639f5c734b146103c357600080fd5b8063541868c81161019257806379ba50971161016157806379ba50971461034b57806381417585146103535780638da5cb5b146103665780638e0cc1761461037757600080fd5b8063541868c8146102cb57806354fd4d50146102de5780635768adcf146102f457806372d960e11461033857600080fd5b806327910565116101ce578063279105651461026457806334afba2b146102775780634ceea7531461029757806352c8f990146102b857600080fd5b8063136efb7a146102005780631510748b146102295780631c754cae1461023e578063272d177d14610251575b600080fd5b61021361020e366004614e93565b610556565b6040516102209190614eb0565b60405180910390f35b61023c610237366004614f5e565b61064f565b005b61023c61024c366004614f8a565b6106af565b61023c61025f366004614f5e565b6108d8565b61023c610272366004614e93565b610953565b61028a610285366004614fbf565b610976565b6040516102209190615000565b6102aa6102a5366004614f5e565b6109eb565b604051908152602001610220565b61028a6102c6366004615021565b610a84565b61028a6102d9366004614f5e565b610b38565b60025b60405161ffff9091168152602001610220565b610320610302366004614e93565b6001600160a01b039081166000908152600260205260409020541690565b6040516001600160a01b039091168152602001610220565b61028a610346366004614fbf565b610cb8565b61023c610d34565b61023c610361366004615091565b610d76565b6000546001600160a01b0316610320565b6102aa6103853660046150ca565b610dfb565b61023c610398366004614e93565b610f56565b61023c6103ab366004615124565b611315565b6102aa6103be366004614f8a565b6113c6565b6102aa6103d13660046150ca565b61149c565b60055460405163ffffffff9091168152602001610220565b6104646103fc366004614e93565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394909416845260028252928290208251938401835260048101546001600160801b038082168652600160801b9091041691840191909152600501549082015290565b6040516102209190615152565b60016102e1565b61028a610486366004615021565b61190c565b6104936119b8565b6040516102209190615181565b61023c6104ae3660046151ce565b611a68565b6001546001600160a01b0316610320565b61023c6104d23660046151fc565b611bd9565b6102aa6104e5366004614f5e565b611c8a565b61023c6104f8366004614e93565b611d19565b6102aa611d72565b610533610513366004614e93565b6001600160a01b0390811660009081526002602052604090205416151590565b6040519015158152602001610220565b61023c61055136600461523f565b611d83565b61055e614cc8565b506001600160a01b03908116600090815260026020818152604092839020835160e0810185528154958616815263ffffffff600160a01b870481168285015260ff600160c01b88048116151583880152600160c81b9097049096161515606080830191909152855180870187526001840154909716875285518087018752948301546001600160701b038082168752600160701b9091041685850152868401949094526080810195909552600381015460a08601528351928301845260048101546001600160801b038082168552600160801b9091041691830191909152600501549181019190915260c082015290565b7f000000000000000000000000000000000000000000000000000000000000000061067981611d9e565b81156106aa57600061068a84611dca565b9050828160040160010160008282546106a39190615272565b9091555050505b505050565b6106b7611e07565b60408051808201909152828152602081018290526106d481611e32565b60006106df85611dca565b8054909150600160c01b900460ff161561070c57604051637952fbad60e11b815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166387ba006a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610790919061528a565b6040805160608101825260048501546001600160801b038082168352600160801b9091041660208201526005850154918101919091529091506107db90600090889085908786611e58565b60048201546001600160801b03168111156108095760405163bb55fd2760e01b815260040160405180910390fd5b604051806040016040528061081b4390565b63ffffffff16815260200161082f856122b1565b905280516001808501805463ffffffff90931663ffffffff1990931692909217909155602091820151805160028601805492909401516001600160701b03908116600160701b026001600160e01b031990931691161717909155825460ff60c01b1916600160c01b17835560405181906001600160a01b038916907f162ed187f3ed3879ae360c5df2a0a5dcaac7a208a9d762c2cbbfb1f5fad8b81d90600090a4505050505050565b6108e0611e07565b60006108eb83611dca565b60038101549091508281036109005750505050565b6003820183905560408051828152602081018590526001600160a01b038616917ff1c2cc08203aa526d8f6835b1bc1a534e2aea3340fd723ce834129285e2e517191015b60405180910390a250505b5050565b61095b611e07565b600061096682611dca565b905061094f600083836001612311565b61099a60405180606001604052806000815260200160008152602001600081525090565b816109a481612335565b60006109b68187878760001984612356565b90506109c181612594565b60408051606080820183528351825283015160208201526080909201519082015295945050505050565b6001600160a01b038083166000908152600260209081526040808320805482516318160ddd60e01b8152925194959194610a7a94889492909316926318160ddd92600480820193918290030181865afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a70919061528a565b60058401546126b5565b9150505b92915050565b610aa860405180606001604052806000815260200160008152602001600081525090565b7f0000000000000000000000000000000000000000000000000000000000000000610ad281611d9e565b83610adc81612335565b83610ae681612335565b6000610af78a8a8a8a8a6001612356565b9050610b02816126f8565b60405180606001604052808260200151815260200182606001518152602001826080015181525094505050505095945050505050565b610b5c60405180606001604052806000815260200160008152602001600081525090565b82610b6681612834565b82610b7081612335565b6000610c6686610b7f88611dca565b6040805160e08101825282546001600160a01b038116825263ffffffff600160a01b8204811660208085019190915260ff600160c01b84048116151585870152600160c81b909304909216151560608085019190915284518086018652600187015490921682528451808601865260028701546001600160701b038082168352600160701b9091041681850152828401526080840191909152600385015460a08401528351908101845260048501546001600160801b038082168352600160801b90910416918101919091526005909301549183019190915260c08101919091528761285b565b905060405180606001604052808260c001518360e00151610c8791906152a3565b815260200182604001518360000151610ca09190615272565b81526020018260200151815250935050505092915050565b610cdc60405180606001604052806000815260200160008152602001600081525090565b81610ce681612335565b6000610cf781878787600180612356565b9050610d0281612594565b604051806060016040528082602001518152602001826060015181526020018260800151815250925050509392505050565b6001546001600160a01b03163314610d5f57604051634ca8886760e01b815260040160405180910390fd5b600154610d74906001600160a01b0316612b41565b565b610d7e611e07565b6000610d8983611dca565b8054909150821515600160c81b90910460ff16151503610da857505050565b805460ff60c81b1916600160c81b8315159081029190911782556040516001600160a01b038516907fa606e6917bc476eb72d24f486596af7f564fb7b50f73135c81c0e8e0553430cd90600090a3505050565b60007f0000000000000000000000000000000000000000000000000000000000000000610e2781611d9e565b84610e3181612834565b83610e3b81612335565b6000610e4687611dca565b6040805160e08101825282546001600160a01b038116825263ffffffff600160a01b8204811660208085019190915260ff600160c01b84048116151585870152600160c81b909304909216151560608085019190915284518086018652600187015490921682528451808601865260028701546001600160701b038082168352600160701b9091041681850152828401526080840191909152600385015460a08401528351908101845260048501546001600160801b038082168352600160801b909104169181019190915260058401549281019290925260c0810191909152909150600090610f389089908961285b565b9050610f488a8a8a858b86612b9b565b519998505050505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000610f8081611d9e565b60405163b5af090f60e01b81526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b5af090f90602401602060405180830381865afa158015610fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100a91906152ba565b61102757604051630b094f2760e31b815260040160405180910390fd5b604051632b625f2360e01b81526001600160a01b0383811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690632b625f23906024016020604051808303816000875af1158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b891906152d7565b9050806001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b50506040805160e0810182526001600160a01b038516815260055463ffffffff16602080830191909152600082840181905260016060840152835180850190945280845294509092506080830191908101611186604080518082018252600080825260209182018190528251808401909352825260019082015290565b9052815260006020808301829052604080516060810182528381529182018390528181019290925291015290506111bd84826132e3565b836001600160a01b0316826001600160a01b03167f4f2ce4e40f623ca765fc0167a25cb7842ceaafb8d82d3dec26ca0d0e0d2d489660405160405180910390a360405160009081906001600160a01b038716907f162ed187f3ed3879ae360c5df2a0a5dcaac7a208a9d762c2cbbfb1f5fad8b81d908390a4836001600160a01b03167fa2d66c1e2cc4b2cc5daaabc06447542e989ed748a9fb22476b6c913dcc1c7f4b6000836020015160405161128792919063ffffffff92831681529116602082015260400190565b60405180910390a280606001511515846001600160a01b03167fa606e6917bc476eb72d24f486596af7f564fb7b50f73135c81c0e8e0553430cd60405160405180910390a3836001600160a01b03167ff1c2cc08203aa526d8f6835b1bc1a534e2aea3340fd723ce834129285e2e517160008360a00151604051610944929190918252602082015260400190565b61131d611e07565b806113278161341c565b600061133284611dca565b805490915063ffffffff600160a01b90910481169084168103611356575050505050565b815463ffffffff60a01b1916600160a01b63ffffffff86811691820292909217845560408051928416835260208301919091526001600160a01b038716917fa2d66c1e2cc4b2cc5daaabc06447542e989ed748a9fb22476b6c913dcc1c7f4b910160405180910390a25050505050565b6000826000036113d857506000611495565b6001600160a01b038085166000908152600260209081526040808320805482516318160ddd60e01b81529251919516926318160ddd92600480820193918290030181865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611452919061528a565b9050600061146082876152f4565b905061148f818361147188826152a3565b600587015461148091906152f4565b61148a9085615272565b613446565b93505050505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006114c881611d9e565b846114d281612834565b836114dc81612335565b60006114e787611dca565b8054909150600160c81b900460ff16611513576040516303a5be3f60e31b815260040160405180910390fd5b60058101548154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048281019260209291908290030181865afa158015611561573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611585919061528a565b90506000611594898385613515565b905060006115a28a85615272565b905084600301548111156115c957604051630d5befc560e31b815260040160405180910390fd5b6000856004016040518060600160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b0316815260200160018201548152505090508186600401600101819055508560000160009054906101000a90046001600160a01b03166001600160a01b03166340c10f198e856040518363ffffffff1660e01b81526004016116a99291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050506118578e8d88896004016040518060600160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820154815250506117d08b6001016001016040518060400160405290816000820160009054906101000a90046001600160701b03166001600160701b03166001600160701b0316815260200160008201600e9054906101000a90046001600160701b03166001600160701b03166001600160701b031681525050613549565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166387ba006a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611852919061528a565b611e58565b8b6001600160a01b03168d6001600160a01b03168f7fecb7e4cd1580472adaeba712b36acf94439b2e1760af55fedb61960ca4422af38e876040516118a6929190918252602082015260400190565b60405180910390a46118fa8e8d6118bd8688615272565b6040805160608101825260048c01546001600160801b038082168352600160801b90910416602082015260058c0154918101919091528590613585565b50909c9b505050505050505050505050565b61193060405180606001604052806000815260200160008152602001600081525090565b7f000000000000000000000000000000000000000000000000000000000000000061195a81611d9e565b8361196481612335565b8361196e81612335565b600061197f8a8a8a8a8a6000612356565b905061198a816126f8565b6040805160608082018352835182528301516020820152608090920151908201529998505050505050505050565b606060006119c6600361361e565b905060008167ffffffffffffffff8111156119e3576119e3615313565b604051908082528060200260200182016040528015611a0c578160200160208202803683370190505b50905060005b82811015611a6157611a25600382613628565b828281518110611a3757611a37615329565b6001600160a01b039092166020928302919091019091015280611a598161533f565b915050611a12565b5092915050565b80611a7281612834565b7f0000000000000000000000000000000000000000000000000000000000000000611a9c81611d9e565b60405163673cea6960e01b8152600160048201526001600160a01b03808516917f00000000000000000000000000000000000000000000000000000000000000009091169063673cea6990602401602060405180830381865afa158015611b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2b91906152d7565b6001600160a01b031614611b525760405163386c33d760e11b815260040160405180910390fd5b6001600160a01b0380851660009081526002602052604090205416611b7685613634565b60405163f2fde38b60e01b81526001600160a01b03858116600483015282169063f2fde38b906024015b600060405180830381600087803b158015611bba57600080fd5b505af1158015611bce573d6000803e3d6000fd5b505050505050505050565b81611be381612834565b7f0000000000000000000000000000000000000000000000000000000000000000611c0d81611d9e565b611c2584611c20368690038601866154a4565b6132e3565b611c326020840184614e93565b6001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c6c57600080fd5b505af1158015611c80573d6000803e3d6000fd5b5050505050505050565b6001600160a01b038083166000908152600260209081526040808320805482516318160ddd60e01b8152925194959194610a7a94889492909316926318160ddd92600480820193918290030181865afa158015611ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0f919061528a565b6005840154613515565b611d21611e07565b6000546001600160a01b0390811690821603611d5057604051630a98f1f360e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000611d7e600361361e565b905090565b611d8b611e07565b80611d958161341c565b61094f826136b7565b336001600160a01b03821614611dc757604051634ca8886760e01b815260040160405180910390fd5b50565b6001600160a01b03808216600090815260026020526040812080549192909116610a7e5760405163b0ce759160e01b815260040160405180910390fd5b6000546001600160a01b03163314610d7457604051634ca8886760e01b815260040160405180910390fd5b611e3b81613728565b611dc757604051636a43f8d160e01b815260040160405180910390fd5b6000611e8d6001600160a01b0387167f0000000000000000000000000000000000000000000000000000000000000000613745565b905080600003611eaa57611ea48787876002612311565b506122a9565b6001604080518082018252600188015463ffffffff168152815180830190925260028801546001600160701b038082168452600160701b90910416602083810191909152810191909152611eff9086906137e9565b6002811115611f1057611f10615565565b03611f1b57506122a9565b611f2483613728565b611f3557611ea48787876002612311565b604051638d0c782760e01b81526001600160a01b038781166004830152600091611fd29184917f000000000000000000000000000000000000000000000000000000000000000090911690638d0c782790602401602060405180830381865afa158015611fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fca919061528a565b878787613895565b8051909150611fe25750506122a9565b806020015160000361200257611ffb8888886002612311565b50506122a9565b84600001516001600160801b0316816020015111156120d4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371c0feb7898988600001516001600160801b0316856020015161206991906152a3565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b1580156120b757600080fd5b505af11580156120cb573d6000803e3d6000fd5b505050506121a2565b84600001516001600160801b0316816020015110156121a2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631ebda06d8989846020015189600001516001600160801b031661213b91906152a3565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b15801561218957600080fd5b505af115801561219d573d6000803e3d6000fd5b505050505b60006121bb826020015186602001518760000151613446565b9050600060405180606001604052806121d785602001516139a3565b6001600160801b031681526020016121ee846139a3565b6001600160801b0390811682526040808b01516020938401528351848401518316600160801b029216919091176004808d01919091558382015160058d01558b5482516318160ddd60e01b815292519495506122a4948f948f946001600160a01b03909316936318160ddd938082019391908290030181865afa158015612279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229d919061528a565b8a85613585565b505050505b505050505050565b604080518082019091526000808252602082015260006122d8836001600160701b03613a14565b9050604051806040016040528082600001516001600160701b0316815260200182602001516001600160701b0316815250915050919050565b600482015461232f908590859085906001600160801b031685613a81565b50505050565b80600003611dc757604051637c946ed760e01b815260040160405180910390fd5b6123d7604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600015158152602001600015158152602001600063ffffffff168152602001600080191681525090565b6001600160a01b038681167f0000000000000000000000000000000000000000000000000000000000000000821690811491871614818015612417575080155b156124395760016101208401526001600160a01b03871661010084015261247f565b811580156124445750805b156124665760006101208401526001600160a01b03881661010084015261247f565b60405163b0ce759160e01b815260040160405180910390fd5b600061248f846101000151611dca565b8054909150600160c01b900460ff166124bb5760405163bcb8b8fb60e01b815260040160405180910390fd5b61018084018a9052841580156101408601526124d9578684526124e1565b602084018790525b60408481018790528154600160a01b900463ffffffff16610160860152805160608101825260048301546001600160801b038082168352600160801b9091041660208201526005830154918101919091526101208501511561255f5780516001600160801b0390811660a087015260208201511660c086015261257d565b60208101516001600160801b0390811660a087015281511660c08601525b6040015160e0850152509198975050505050505050565b604080518082019091526000808252602082015281610140015115612605576125d08260a001518360c001518461016001518560000151613bcd565b805160208401819052604084015191925010156126005760405163f31ee7a560e01b815260040160405180910390fd5b61264e565b6126228260a001518360c001518461016001518560200151613c5f565b80518084526040840151919250111561264e5760405163681c2ccd60e11b815260040160405180910390fd5b60208101516060830152815160a08301805161266b908390615272565b905250602082015160c0830180516126849083906152a3565b905250610120820151156126ac5781606001518260e0018181516126a89190615272565b9052505b61094f82613cfb565b6000826000036126e55781156126de57604051636a9c61e160e01b815260040160405180910390fd5b5082611495565b6126f0848385613446565b949350505050565b6101008101516001600160a01b0316600090815260026020908152604091829020825160608101845260048201546001600160801b038082168352600160801b909104811682850190815260058401548387015285518087019096528251821686525116928401929092529161276f908390613e47565b61277883612594565b600060405180606001604052806127a686610120015161279c578660c001516139a3565b8660a001516139a3565b6001600160801b031681526020016127d58661012001516127cb578660a001516139a3565b8660c001516139a3565b6001600160801b031681526020018560e0015181525090506128038461018001518561010001518484613f07565b805160208201516001600160801b03908116600160801b029116176004840155604001516005909201919091555050565b6001600160a01b038116611dc75760405163e6c4247b60e01b815260040160405180910390fd5b612863614d2c565b60c0830151602001516000906001600160801b03166128ab6001600160a01b0387167f0000000000000000000000000000000000000000000000000000000000000000613745565b6128b591906152a3565b9050600084600001516001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291f919061528a565b9050600061293685838860c00151604001516126b5565b60c087015180516020820151604090920151929350600092612a2e926001600160801b0392831692169087906129956001600160a01b038e167f0000000000000000000000000000000000000000000000000000000000000000613745565b8c6020015163ffffffff167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632aac012c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a22919061557b565b63ffffffff168961402b565b905060405180610160016040528082606001518152602001826080015181526020018260a0015181526020018260400151815260200182600001518152602001826020015181526020018260c001518152602001838152602001848152602001826040015160200151612ac25760408301515160c08a015160200151612abd91906001600160801b0316615272565b612ae4565b60408301515160c08a015160200151612ae491906001600160801b03166152a3565b8152602001826000015160200151612b175782515160c08a015151612b1291906001600160801b0316615272565b612b33565b82515160c08a015151612b3391906001600160801b03166152a3565b905298975050505050505050565b600080546001600160a01b038381166001600160a01b031980841682178555600180549091169055604051919092169283917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a9190a35050565b604080516060810182526004850180546001600160801b038082168452600160801b909104166020808401919091526005870154838501528351808501855260018089015463ffffffff168252855180870190965260028901546001600160701b038082168852600160701b909104168684015291810194909452909290612c2383836137e9565b6002811115612c3457612c34615565565b03612c52576040516301a6272960e41b815260040160405180910390fd5b855460405163079cc67960e41b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201889052909116906379cc679090604401600060405180830381600087803b158015612cbf57600080fd5b505af1158015612cd3573d6000803e3d6000fd5b50505050600085856101000151612cea91906152a3565b9050612d00846001015482876101000151613446565b6001850155610120850151612d14906139a3565b84546001600160801b03918216600160801b029116178455610140850151612d3b906139a3565b84546fffffffffffffffffffffffffffffffff19166001600160801b039190911617845560a08501515115612e17578460a0015160200151612d7f57612d7f615598565b60a085015151604051631ebda06d60e01b8152600481018c90526001600160a01b038a8116602483015260448201929092527f000000000000000000000000000000000000000000000000000000000000000090911690631ebda06d906064015b600060405180830381600087803b158015612dfa57600080fd5b505af1158015612e0e573d6000803e3d6000fd5b50505050612f3d565b60808501515115612f3d5784608001516020015115612e8457608085015151604051631538c64b60e31b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9c6325890602401612de0565b6080850151516040516340c10f1960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916340c10f1991612f0a917f0000000000000000000000000000000000000000000000000000000000000000916004016001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612f2457600080fd5b505af1158015612f38573d6000803e3d6000fd5b505050505b602085015115612fd25760208501516040516340c10f1960e01b81526001600160a01b038b8116600483015260248201929092527f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b158015612fb957600080fd5b505af1158015612fcd573d6000803e3d6000fd5b505050505b6040850151156130a8576040858101519051631c20fadd60e01b81526001600160a01b038a811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015260448201929092527f000000000000000000000000000000000000000000000000000000000000000090911690631c20fadd90606401600060405180830381600087803b15801561307657600080fd5b505af115801561308a573d6000803e3d6000fd5b505050508460400151856000018181516130a49190615272565b9052505b84511561313f578451604051631c20fadd60e01b81526001600160a01b038a811660048301528b8116602483015260448201929092527f000000000000000000000000000000000000000000000000000000000000000090911690631c20fadd90606401600060405180830381600087803b15801561312657600080fd5b505af115801561313a573d6000803e3d6000fd5b505050505b84610120015160000361318a57604080518082018252600080825260209182018190528251808401909352825260019101526002870180546001600160e01b031916600160701b1790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166387ba006a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320c919061528a565b856101400151101561322b5761322b8a89898861014001516002613a81565b845160408087015160208089015160c08a015184519586529185018b905292840191909152606083019190915260808201526001600160a01b03808a1691908b16908c907feab8ac9e9478a4b3c37a794ecef629b8a8bbcd96f9eaeac8ed26054d144da52d9060a00160405180910390a46040805160608101825260048901546001600160801b038082168352600160801b9091041660208201526005890154918101919091526122a4908b908a9084908790613585565b6132ee6003836142ad565b61330b5760405163119b4fd360e11b815260040160405180910390fd5b6001600160a01b0391821660009081526002602081815260409283902084518154838701518688015160608901511515600160c81b0260ff60c81b19911515600160c01b029190911661ffff60c01b1963ffffffff938416600160a01b026001600160c01b031990951695909b1694909417929092179890981691909117178155608085015180516001830180549190981663ffffffff19909116179096559481015180519286018054918301516001600160701b03908116600160701b026001600160e01b03199093169416939093171790915560a0830151600385015560c0909201518051928101516001600160801b03908116600160801b0293169290921760048401550151600590910155565b620f424063ffffffff82161115611dc7576040516358d620b360e01b815260040160405180910390fd5b60008061345385856142c2565b80519091506000036134775782816020015161346f91906155c4565b915050611495565b8051831161349857604051631a93c68960e11b815260040160405180910390fd5b60006134a5868686614349565b905060006134b38383614364565b80519091506000036134d9578481602001516134cf91906155c4565b9350505050611495565b60008581038616906134eb83836143e9565b905060006135016134fc848a6155c4565b614420565b90508181025b9a9950505050505050505050565b60008260000361353e5781156126de57604051636a9c61e160e01b815260040160405180910390fd5b6126f084848461444b565b6040805180820182526000808252602091820152815180830190925282516001600160701b039081168352928101519092169181019190915290565b61359185858484613f07565b8160400151816040015114613617576001600160a01b038416857f67c4863f17da9847c57c9fa043e63a0ddf4f5a86fd63a6f71ea69057a11c411a6135f6837f0000000000000000000000000000000000000000000000000000000000000000613745565b60408086015181519283526020830152810187905260600160405180910390a35b5050505050565b6000610a7e825490565b6000611495838361449b565b61363f6003826144c5565b61365c5760405163b0ce759160e01b815260040160405180910390fd5b6001600160a01b03166000908152600260208190526040822080546001600160d01b031916815560018101805463ffffffff1916905590810180546001600160e01b0319169055600381018290556004810182905560050155565b60055463ffffffff90811690821681036136cf575050565b6005805463ffffffff191663ffffffff84811691821790925560408051928416835260208301919091527fb804b0ec3f0ea43004870df377170ce44cb789adca16d23286e337605558117f910160405180910390a15050565b60006137378260200151151590565b8015610a7e57505051151590565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0384160361377c57506001600160a01b03811631610a7e565b826040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa1580156137c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611495919061528a565b6040805180820190915282516001600160801b039081168252602080850151909116818301528201516000919061381f82613728565b1580613831575061382f816144da565b155b1561384157600092505050610a7e565b4363ffffffff16846000015163ffffffff1614613865576138628183614509565b90505b61387a61387182613549565b8361271061453b565b1561388a57600292505050610a7e565b506001949350505050565b604080518082019091526000808252602082015260006138dc6138c18886600001518760200151613446565b86516138d79089906001600160801b0316615272565b6145dd565b90508281101561390257505060408051808201909152600181526000602082015261399a565b84516001600160801b031660000361394f5760006139216002856152f4565b9050818111156139485750506040805180820190915260008082526020820152905061399a565b9050613981565b84516001600160801b031681106139815761397e81600287600001516001600160801b03166138d791906152f4565b90505b6040805180820190915260018152602081019190915290505b95945050505050565b60006001600160801b03821115613a105760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840160405180910390fd5b5090565b60408051808201909152600080825260208201526000613a45613a3f856000015186602001516145f3565b84614603565b90506040518060400160405280828660000151613a6291906155c4565b8152602001828660200151613a7791906155c4565b9052949350505050565b600060048401819055604080518082018252828152815180830183528381526020908101849052825180840190935292825260018284015291820152805160018501805463ffffffff90921663ffffffff19909216919091179055602090810151805160028601805492909301516001600160701b03908116600160701b026001600160e01b0319909316911617179055825460ff600160c01b9091041615613b6b57825460ff60c01b1916835560405160ff8216906000906001600160a01b038716907f162ed187f3ed3879ae360c5df2a0a5dcaac7a208a9d762c2cbbfb1f5fad8b81d908390a45b811561361757604051631ebda06d60e01b8152600481018690526001600160a01b038581166024830152604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631ebda06d90606401611ba0565b6040805180820190915260008082526020820152841580613bec575083155b15613c0a5760405163bb55fd2760e01b815260040160405180910390fd5b6000613c1b858461148a818a615272565b90506000613c338263ffffffff8716620f4240613446565b905060405180604001604052808284613c4c91906152a3565b8152602001919091529695505050505050565b604080518082019091526000808252602082015284600003613c945760405163bb55fd2760e01b815260040160405180910390fd5b6000613cb98363ffffffff8616613cae87620f42406155d8565b63ffffffff16613446565b90506000613cc78285615272565b90506000613cda888361148a818b6152a3565b60408051808201909152908152602081019390935250909695505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636161b6266040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d7f919061557b565b90508063ffffffff16600003613d93575050565b6000613db383606001518363ffffffff16620f424063ffffffff16613446565b9050808360c001818151613dc791906152a3565b905250610120830151613de05760809092019190915250565b613df58360c001518460a00151600084613bcd565b51608084015260c083018051829190613e0f908390615272565b905250608083015160a084018051613e289083906152a3565b90525060e083018051829190613e3f9083906152a3565b905250505050565b6001820154439063ffffffff8083169116146106aa5760408051808201825263ffffffff83168152815180830190925260028501546001600160701b038082168452600160701b90910416602083810191909152909190820190613eab9085614509565b9052805160018501805463ffffffff90921663ffffffff19909216919091179055602090810151805160028601805492909301516001600160701b03908116600160701b026001600160e01b0319909316911617179055505050565b815181516001600160801b03908116911614613f995781518151604080516001600160801b0393841681529290911660208301526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116929086169187917f6e96dc5343d067ec486a9920e0304c3610ed05c65e45cc029d9b9fe7ecfa7620910160405180910390a45b81602001516001600160801b031681602001516001600160801b03161461232f57826001600160a01b0316836001600160a01b0316857f6e96dc5343d067ec486a9920e0304c3610ed05c65e45cc029d9b9fe7ecfa76208560200151856020015160405161401d9291906001600160801b0392831681529116602082015260400190565b60405180910390a450505050565b614033614ddd565b6001600160801b0389118061404e57506001600160801b0388115b8061405f57506001600160801b0387115b8061407057506001600160801b0386115b8061408157506001600160801b0385115b8061408e5750620f424084115b8061409b5750620f424083115b806140a557508582115b156140c3576040516318b103bd60e21b815260040160405180910390fd5b6000620f42406140d385826152a3565b6140dd90856152f4565b6140e791906155c4565b90506140f3888a615272565b620f424061410186826152a3565b61410b908a6152f4565b61411591906155c4565b1115614216576000614127898b615272565b620f424061413587826152a3565b61413f908b6152f4565b61414991906155c4565b61415391906152a3565b905060006141618a8c615272565b61416b908a6152a3565b90506141798b8b8b88614635565b801561418f575061418f8b8a84848b8b8b61465f565b156141aa576141a38c8c8b858b8a896146c1565b935061420f565b8b156141dc576141bd8c8c8c8c8761479a565b93506141cd8c8c8b84878d61481b565b60a0860152608085015261420f565b886141e78b856152f4565b6141f191906155c4565b60608501526142048c8c8b84878d61481b565b60a086015260808501525b5050614291565b600061422b6142258a8c615272565b89614890565b905060008111801561424457506142448a8a8a87614635565b801561425957506142598a89838989896148aa565b156142755761426e8b8b8a848a8a8a89614934565b925061428f565b8a156142875761426e8b8b8b856149e2565b606083018290525b505b61429b81846152a3565b60c08301525098975050505050505050565b6000611495836001600160a01b038416614a53565b604080518082019091526000808252602082015260006142e28484614aa2565b9050838302808210614317576040518060400160405280828461430591906152a3565b81526020018281525092505050610a7e565b6040518060400160405280600161432e8585900390565b61433891906152a3565b815260200191909152949350505050565b60008180614359576143596155ae565b838509949350505050565b6040805180820190915260008082526020820152818360200151106143b1576040518060400160405280846000015181526020018385602001516143a891906152a3565b90529050610a7e565b6040518060400160405280600185600001516143cd91906152a3565b81526020016143e0856020015185900390565b90529392505050565b6000806144016143fb848084036155c4565b60010190565b905082846020015161441391906155c4565b8451820217949350505050565b60006001815b6008811015611a615783820260020382029150806144438161533f565b915050614426565b600080614459858585613446565b90506000614468868686614349565b11156126f057600019811061449057604051631a93c68960e11b815260040160405180910390fd5b61346f816001615272565b60008260000182815481106144b2576144b2615329565b9060005260206000200154905092915050565b6000611495836001600160a01b038416614ab1565b60006144f282602001516001600160701b0316151590565b8015610a7e575050516001600160701b0316151590565b604080518082019091526000808252602082015261149561453661452c85613549565b8460046001614ba4565b6122b1565b8251600090819061456d9061455385620f42406155d8565b63ffffffff16866020015161456891906152f4565b6142c2565b905060006145928660200151620f424063ffffffff16876000015161456891906152f4565b86519091506000906145c0906145ab87620f42406155fd565b63ffffffff16886020015161456891906152f4565b90506145cc8383614c40565b801561148f575061148f8282614c40565b60008183106145ec5781611495565b5090919050565b6000818310156145ec5781611495565b600061460f8284615625565b1561461b57600161461e565b60005b60ff1661462b83856155c4565b6114959190615272565b600061464182846152a3565b61464b90856152f4565b61465583876152f4565b1095945050505050565b60008061468d61466f898b6152f4565b614679868b6152f4565b614683888b6152f4565b6145689190615272565b905060006146b561469e858a6152f4565b6146ab88620f42406152a3565b614568908a6152f4565b90506135078282614c54565b6146c9614ddd565b60006146d885620f42406152a3565b6146e290876152f4565b90506000614700896146f7620f42408b6152f4565b87856001614c7c565b9050614745614719614712878d6152f4565b8484613446565b604080518082019091526000808252602082015250604080518082019091529081526000602082015290565b835261478161475586898b613446565b604080518082019091526000808252602082015250604080518082019091529081526001602082015290565b6040840152505060608101919091529695505050505050565b6147a2614ddd565b60006147ca6147b187856152f4565b6147bb85876152a3565b6147c590886152f4565b614890565b90506147de614755888361148a888b6152f4565b80835260208301526147f361475585836155c4565b604083015261480c836148068789615272565b86613446565b60608301525095945050505050565b6000808061482986866152f4565b9050600061483788866152f4565b9050808211156148725760008a11614850576000614868565b6148688a61485e83856152a3565b61148a8b8d6152f4565b9350849250614883565b6000935061488088836155c4565b92505b5050965096945050505050565b60008183116148a0576000611495565b61149582846152a3565b6000806148e66148ba888a6152f4565b620f42406148c8878b6152f4565b6148d2898b6152f4565b6148dc9190615272565b61456891906152f4565b9050600061491b6148f785896152f4565b61490488620f42406152a3565b61490e888c6152f4565b6148d2620f42408c6152f4565b90506149278282614c54565b9998505050505050505050565b61493c614ddd565b600061494885896152f4565b614955620f4240896152f4565b61495f9190615272565b9050600061499f8a61497489620f42406152a3565b61497e908c6152f4565b8761498c8b620f42406152a3565b61499690876152f4565b620f4240614ca7565b90506149b1614755614712878e6152f4565b83526149c8614719868461148a620f42408e6152f4565b604084015250506060810191909152979650505050505050565b6149ea614ddd565b60006149f68385614890565b9050614a06614755878388613446565b8083526020830152614a3e81604080518082019091526000808252602082015250604080518082019091529081526001602082015290565b60408301525060608101919091529392505050565b6000818152600183016020526040812054614a9a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a7e565b506000610a7e565b60006000198284099392505050565b60008181526001830160205260408120548015614b9a576000614ad56001836152a3565b8554909150600090614ae9906001906152a3565b9050818114614b4e576000866000018281548110614b0957614b09615329565b9060005260206000200154905080876000018481548110614b2c57614b2c615329565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614b5f57614b5f615639565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a7e565b6000915050610a7e565b604080518082019091526000808252602082015260405180604001604052808386600001518860200151614bd891906152f4565b614be291906152f4565b602087015188518791614bf4916152f4565b614bfe91906152f4565b614c089190615272565b8152602001614c178486615272565b86602001518860200151614c2b91906152f4565b614c3591906152f4565b905295945050505050565b6000614c4c8383614c54565b159392505050565b8051825160009110806114955750815183511480156114955750506020908101519101511190565b6000614c89848484613446565b614c9386886152f4565b614c9d91906152a3565b9695505050505050565b6000614cb4848484613446565b614cbe86886152f4565b614c9d9190615272565b6040805160e081018252600080825260208201819052918101829052606081019190915260808101614cf8614e4c565b815260200160008152602001614d27604080516060810182526000808252602082018190529181019190915290565b905290565b604051806101600160405280600081526020016000815260200160008152602001614d6c6040518060400160405280600081526020016000151581525090565b8152602001614d906040518060400160405280600081526020016000151581525090565b8152602001614db46040518060400160405280600081526020016000151581525090565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161012081018252600060e082018181526101008301829052825282518084018452818152602080820183905280840191909152835180850185528281529081019190915290918201908152602001600081526020016000815260200160008152602001600081525090565b6040518060400160405280600063ffffffff168152602001614d27604080518082019091526000808252602082015290565b6001600160a01b0381168114611dc757600080fd5b600060208284031215614ea557600080fd5b813561149581614e7e565b81516001600160a01b0316815260208083015163ffffffff908116828401526040808501511515818501526060808601511515908501526080808601518051909316908501529082015180516001600160701b0390811660a080870191909152918401511660c0808601919091529085015160e085015284015180516001600160801b0390811661010086015292810151909216610120840152810151610140830152610160820190611a61565b60008060408385031215614f7157600080fd5b8235614f7c81614e7e565b946020939093013593505050565b600080600060608486031215614f9f57600080fd5b8335614faa81614e7e565b95602085013595506040909401359392505050565b600080600060608486031215614fd457600080fd5b8335614fdf81614e7e565b92506020840135614fef81614e7e565b929592945050506040919091013590565b81518152602080830151908201526040808301519082015260608101610a7e565b600080600080600060a0868803121561503957600080fd5b85359450602086013561504b81614e7e565b9350604086013561505b81614e7e565b94979396509394606081013594506080013592915050565b8015158114611dc757600080fd5b803561508c81615073565b919050565b600080604083850312156150a457600080fd5b82356150af81614e7e565b915060208301356150bf81615073565b809150509250929050565b600080600080608085870312156150e057600080fd5b8435935060208501356150f281614e7e565b9250604085013561510281614e7e565b9396929550929360600135925050565b63ffffffff81168114611dc757600080fd5b6000806040838503121561513757600080fd5b823561514281614e7e565b915060208301356150bf81615112565b81516001600160801b039081168252602080840151909116908201526040808301519082015260608101610a7e565b6020808252825182820181905260009190848201906040850190845b818110156151c25783516001600160a01b03168352928401929184019160010161519d565b50909695505050505050565b600080604083850312156151e157600080fd5b82356151ec81614e7e565b915060208301356150bf81614e7e565b60008082840361018081121561521157600080fd5b833561521c81614e7e565b9250610160601f198201121561523157600080fd5b506020830190509250929050565b60006020828403121561525157600080fd5b813561149581615112565b634e487b7160e01b600052601160045260246000fd5b600082198211156152855761528561525c565b500190565b60006020828403121561529c57600080fd5b5051919050565b6000828210156152b5576152b561525c565b500390565b6000602082840312156152cc57600080fd5b815161149581615073565b6000602082840312156152e957600080fd5b815161149581614e7e565b600081600019048311821515161561530e5761530e61525c565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016153515761535161525c565b5060010190565b6040805190810167ffffffffffffffff8111828210171561538957634e487b7160e01b600052604160045260246000fd5b60405290565b80356001600160701b038116811461508c57600080fd5b600081830360608112156153b957600080fd5b6153c1615358565b915082356153ce81615112565b82526040601f19820112156153e257600080fd5b506153eb615358565b6153f76020840161538f565b81526154056040840161538f565b60208201528060208301525092915050565b80356001600160801b038116811461508c57600080fd5b60006060828403121561544057600080fd5b6040516060810181811067ffffffffffffffff8211171561547157634e487b7160e01b600052604160045260246000fd5b60405290508061548083615417565b815261548e60208401615417565b6020820152604083013560408201525092915050565b600061016082840312156154b757600080fd5b60405160e0810181811067ffffffffffffffff821117156154e857634e487b7160e01b600052604160045260246000fd5b60405282356154f681614e7e565b8152602083013561550681615112565b6020820152604083013561551981615073565b604082015261552a60608401615081565b606082015261553c84608085016153a6565b608082015260e083013560a082015261555984610100850161542e565b60c08201529392505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561558d57600080fd5b815161149581615112565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826155d3576155d36155ae565b500490565b600063ffffffff838116908316818110156155f5576155f561525c565b039392505050565b600063ffffffff80831681851680830382111561561c5761561c61525c565b01949350505050565b600082615634576156346155ae565b500690565b634e487b7160e01b600052603160045260246000fdfea164736f6c634300080d000a\";\n\ntype PoolCollectionType1ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: PoolCollectionType1ConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class PoolCollectionType1__factory extends ContractFactory {\n constructor(...args: PoolCollectionType1ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n initNetwork: string,\n initBNT: string,\n initNetworkSettings: string,\n initMasterVault: string,\n initBNTPool: string,\n initExternalProtectionVault: string,\n initPoolTokenFactory: string,\n initPoolMigrator: string,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n initNetwork,\n initBNT,\n initNetworkSettings,\n initMasterVault,\n initBNTPool,\n initExternalProtectionVault,\n initPoolTokenFactory,\n initPoolMigrator,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n initNetwork: string,\n initBNT: string,\n initNetworkSettings: string,\n initMasterVault: string,\n initBNTPool: string,\n initExternalProtectionVault: string,\n initPoolTokenFactory: string,\n initPoolMigrator: string,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(\n initNetwork,\n initBNT,\n initNetworkSettings,\n initMasterVault,\n initBNTPool,\n initExternalProtectionVault,\n initPoolTokenFactory,\n initPoolMigrator,\n overrides || {}\n );\n }\n attach(address: string): PoolCollectionType1 {\n return super.attach(address) as PoolCollectionType1;\n }\n connect(signer: Signer): PoolCollectionType1__factory {\n return super.connect(signer) as PoolCollectionType1__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): PoolCollectionType1Interface {\n return new utils.Interface(_abi) as PoolCollectionType1Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): PoolCollectionType1 {\n return new Contract(address, _abi, signerOrProvider) as PoolCollectionType1;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n StandardRewardsProxy,\n StandardRewardsProxyInterface,\n} from \"../StandardRewardsProxy\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype StandardRewardsProxyConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: StandardRewardsProxyConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class StandardRewardsProxy__factory extends ContractFactory {\n constructor(...args: StandardRewardsProxyConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): StandardRewardsProxy {\n return super.attach(address) as StandardRewardsProxy;\n }\n connect(signer: Signer): StandardRewardsProxy__factory {\n return super.connect(signer) as StandardRewardsProxy__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): StandardRewardsProxyInterface {\n return new utils.Interface(_abi) as StandardRewardsProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): StandardRewardsProxy {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as StandardRewardsProxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n StandardRewards,\n StandardRewardsInterface,\n} from \"../StandardRewards\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"AccessDenied\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidAddress\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"beacon\",\n type: \"address\",\n },\n ],\n name: \"BeaconUpgraded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n {\n inputs: [],\n name: \"AlreadyExists\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"AlreadyInitialized\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ArrayNotUnique\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DoesNotExist\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InsufficientFunds\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidParam\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"NativeTokenAmountMismatch\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"NotWhitelisted\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"PermitUnsupported\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"PoolMismatch\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ProgramDisabled\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ProgramInactive\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"RewardsTokenMismatch\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"RewardsTooHigh\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"programId\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"rewardsToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"totalRewards\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"startTime\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"endTime\",\n type: \"uint32\",\n },\n ],\n name: \"ProgramCreated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"programId\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"status\",\n type: \"bool\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"remainingRewards\",\n type: \"uint256\",\n },\n ],\n name: \"ProgramEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"programId\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"endTime\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"remainingRewards\",\n type: \"uint256\",\n },\n ],\n name: \"ProgramTerminated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"programId\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"prevStake\",\n type: \"uint256\",\n },\n ],\n name: \"ProviderJoined\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"programId\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"remainingStake\",\n type: \"uint256\",\n },\n ],\n name: \"ProviderLeft\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"programId\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"RewardsClaimed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"programId\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"RewardsStaked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"claimRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"rewardsToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"totalRewards\",\n type: \"uint256\",\n },\n {\n internalType: \"uint32\",\n name: \"startTime\",\n type: \"uint32\",\n },\n {\n internalType: \"uint32\",\n name: \"endTime\",\n type: \"uint32\",\n },\n ],\n name: \"createProgram\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"depositAndJoin\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"depositAndJoinPermitted\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"bool\",\n name: \"status\",\n type: \"bool\",\n },\n ],\n name: \"enableProgram\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getRoleMember\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n ],\n name: \"getRoleMemberCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"hasRole\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"isProgramActive\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"isProgramEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"join\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"joinPermitted\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n ],\n name: \"latestProgramId\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n name: \"leave\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"pendingRewards\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"postUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"programIds\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"programRewards\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint32\",\n name: \"lastUpdateTime\",\n type: \"uint32\",\n },\n {\n internalType: \"uint256\",\n name: \"rewardPerToken\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct Rewards\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"programStake\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"programs\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"contract Token\",\n name: \"pool\",\n type: \"address\",\n },\n {\n internalType: \"contract IPoolToken\",\n name: \"poolToken\",\n type: \"address\",\n },\n {\n internalType: \"contract Token\",\n name: \"rewardsToken\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"isEnabled\",\n type: \"bool\",\n },\n {\n internalType: \"uint32\",\n name: \"startTime\",\n type: \"uint32\",\n },\n {\n internalType: \"uint32\",\n name: \"endTime\",\n type: \"uint32\",\n },\n {\n internalType: \"uint256\",\n name: \"rewardRate\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"remainingRewards\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct ProgramData[]\",\n name: \"\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n ],\n name: \"providerProgramIds\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"providerRewards\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"rewardPerTokenPaid\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"pendingRewards\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"reserved0\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"stakedAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct ProviderRewards\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"provider\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"providerStake\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"role\",\n type: \"bytes32\",\n },\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"roleAdmin\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"stakeRewards\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"stakedRewardAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"poolTokenAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct StakeAmounts\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"terminateProgram\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"providers\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n ],\n name: \"transferProviderVBNT\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"initAdmin\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n];\n\nconst _bytecode =\n \"0x60a060405260405162000dfe38038062000dfe83398101604081905262000026916200050e565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005ee565b60008051602062000db78339815191521462000075576200007562000614565b6200008382826000620000b4565b508290506200009281620000f1565b6001600160a01b038316608052620000aa836200011c565b505050506200067d565b620000bf8362000174565b600082511180620000cd5750805b15620000ec57620000ea8383620001b660201b620002641760201c565b505b505050565b6001600160a01b038116620001195760405163e6c4247b60e01b815260040160405180910390fd5b50565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f62000147620001e5565b604080516001600160a01b03928316815291841660208301520160405180910390a162000119816200021e565b6200017f81620002d3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001de838360405180606001604052806027815260200162000dd76027913962000376565b9392505050565b60006200020f60008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002895760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002b260008051602062000d9783398151915260001b6200045c60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002e9816200045f60201b620002901760201c565b6200034d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000280565b80620002b260008051602062000db783398151915260001b6200045c60201b6200020a1760201c565b60606001600160a01b0384163b620003e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000280565b600080856001600160a01b031685604051620003fd91906200062a565b600060405180830381855af49150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b509092509050620004528282866200046e565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200047f575081620001de565b825115620004905782518084602001fd5b8160405162461bcd60e51b815260040162000280919062000648565b80516001600160a01b0381168114620004c457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004fc578181015183820152602001620004e2565b83811115620000ea5750506000910152565b6000806000606084860312156200052457600080fd5b6200052f84620004ac565b92506200053f60208501620004ac565b60408501519092506001600160401b03808211156200055d57600080fd5b818601915086601f8301126200057257600080fd5b815181811115620005875762000587620004c9565b604051601f8201601f19908116603f01168101908382118183101715620005b257620005b2620004c9565b81604052828152896020848701011115620005cc57600080fd5b620005df836020830160208801620004df565b80955050505050509250925092565b6000828210156200060f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200063e818460208701620004df565b9190910192915050565b602081526000825180602084015262000669816040850160208701620004df565b601f01601f19169190910160400192915050565b6080516106dc620006bb6000396000818160f70152818161014d015281816101cf015281816102190152818161024201526102a901526106dc6000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100be57610052565b36610052576100506100d3565b005b6100506100d3565b34801561006657600080fd5b5061005061007536600461058f565b6100ed565b6100506100883660046105aa565b610143565b34801561009957600080fd5b506100a26101c3565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ca57600080fd5b506100a261020d565b6100db61029f565b6100eb6100e66102e8565b61031b565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361013b576101388160405180602001604052806000815250600061033f565b50565b6101386100d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036101bb576101b68383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033f915050565b505050565b6101b66100d3565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610202576101fd6102e8565b905090565b61020a6100d3565b90565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361020257507f000000000000000000000000000000000000000000000000000000000000000090565b606061028983836040518060600160405280602781526020016106a96027913961036a565b9392505050565b6001600160a01b03163b151590565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036100eb57604051634ca8886760e01b815260040160405180910390fd5b60006101fd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e80801561033a573d6000f35b3d6000fd5b6103488361044c565b6000825111806103555750805b156101b6576103648383610264565b50505050565b60606001600160a01b0384163b6103d75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516103f29190610659565b600060405180830381855af49150503d806000811461042d576040519150601f19603f3d011682016040523d82523d6000602084013e610432565b606091505b509150915061044282828661048c565b9695505050505050565b610455816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561049b575081610289565b8251156104ab5782518084602001fd5b8160405162461bcd60e51b81526004016103ce9190610675565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461058a57600080fd5b919050565b6000602082840312156105a157600080fd5b61028982610573565b6000806000604084860312156105bf57600080fd5b6105c884610573565b9250602084013567ffffffffffffffff808211156105e557600080fd5b818601915086601f8301126105f957600080fd5b81358181111561060857600080fd5b87602082850101111561061a57600080fd5b6020830194508093505050509250925092565b60005b83811015610648578181015183820152602001610630565b838111156103645750506000910152565b6000825161066b81846020870161062d565b9190910192915050565b602081526000825180602084015261069481604085016020870161062d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080d000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564\";\n\ntype StandardRewardsConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: StandardRewardsConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class StandardRewards__factory extends ContractFactory {\n constructor(...args: StandardRewardsConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n logic,\n initAdmin,\n data,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n logic: string,\n initAdmin: string,\n data: BytesLike,\n overrides?: PayableOverrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(logic, initAdmin, data, overrides || {});\n }\n attach(address: string): StandardRewards {\n return super.attach(address) as StandardRewards;\n }\n connect(signer: Signer): StandardRewards__factory {\n return super.connect(signer) as StandardRewards__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): StandardRewardsInterface {\n return new utils.Interface(_abi) as StandardRewardsInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): StandardRewards {\n return new Contract(address, _abi, signerOrProvider) as StandardRewards;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { Weth, WethInterface } from \"../Weth\";\n\nconst _abi = [\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"guy\",\n type: \"address\",\n },\n {\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"src\",\n type: \"address\",\n },\n {\n name: \"dst\",\n type: \"address\",\n },\n {\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"withdraw\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"dst\",\n type: \"address\",\n },\n {\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n payable: true,\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"src\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"guy\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"src\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"dst\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"dst\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"src\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"wad\",\n type: \"uint256\",\n },\n ],\n name: \"Withdrawal\",\n type: \"event\",\n },\n];\n\nexport class Weth__factory {\n static readonly abi = _abi;\n static createInterface(): WethInterface {\n return new utils.Interface(_abi) as WethInterface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): Weth {\n return new Contract(address, _abi, signerOrProvider) as Weth;\n }\n}\n","import { DarkMode, initialState as UserState } from 'store/user/user';\nimport { Notification } from 'store/notification/notification';\n\nconst selected_lists = 'userTokenLists';\nconst autoLogin = 'loginAuto';\nconst darkMode = 'userDarkMode';\nconst slippageTolerance = 'slippageTolerance';\nconst usdToggle = 'usdToggle';\nconst notifications = 'notifications';\nconst tenderlyRpcUrl = 'tenderlyRpcUrl';\nconst v3ApiUrl = 'v3ApiUrl';\nconst v2ApiUrl = 'v2ApiUrl';\n\nexport const getTokenListLS = (): string[] => {\n const list = localStorage.getItem(selected_lists);\n return list ? JSON.parse(list) : [];\n};\n\nexport const setTokenListLS = (userListIds: string[]) => {\n localStorage.setItem(selected_lists, JSON.stringify(userListIds));\n};\n\nexport const getAutoLoginLS = (): boolean => {\n const auto = localStorage.getItem(autoLogin);\n return auto && JSON.parse(auto);\n};\n\nexport const setAutoLoginLS = (flag: boolean) => {\n localStorage.setItem(autoLogin, JSON.stringify(flag));\n};\n\nexport const getDarkModeLS = (): DarkMode => {\n const darkLS = localStorage.getItem(darkMode);\n if (darkLS) return Number(darkLS);\n\n return DarkMode.System;\n};\n\nexport const setDarkModeLS = (mode: DarkMode) => {\n localStorage.setItem(darkMode, Number(mode).toString());\n};\n\nexport const getSlippageToleranceLS = (): number => {\n const slippage = localStorage.getItem(slippageTolerance);\n if (slippage) return JSON.parse(slippage);\n\n return UserState.slippageTolerance;\n};\n\nexport const setSlippageToleranceLS = (flag: number) => {\n localStorage.setItem(slippageTolerance, JSON.stringify(flag));\n};\n\nexport const getUsdToggleLS = (): boolean => {\n const usd = localStorage.getItem(usdToggle);\n return usd && JSON.parse(usd);\n};\n\nexport const setUsdToggleLS = (flag: boolean) => {\n localStorage.setItem(usdToggle, JSON.stringify(flag));\n};\n\nexport const getNotificationsLS = (): Notification[] => {\n const notify = localStorage.getItem(notifications);\n return notify ? JSON.parse(notify) : [];\n};\n\nexport const setNotificationsLS = (notify: Notification[]) => {\n localStorage.setItem(notifications, JSON.stringify(notify));\n};\n\nexport const getTenderlyRpcLS = (): string => {\n return localStorage.getItem(tenderlyRpcUrl) || '';\n};\n\nexport const setTenderlyRpcLS = (url?: string) => {\n if (url) {\n localStorage.setItem(tenderlyRpcUrl, url);\n } else {\n localStorage.removeItem(tenderlyRpcUrl);\n }\n};\n\nexport const getV3ApiUrlLS = (): string => {\n return (\n localStorage.getItem(v3ApiUrl) ||\n 'https://v3-staging-ptdczarhfq-nw.a.run.app/v3/'\n );\n};\n\nexport const setV3ApiUrlLS = (url?: string) => {\n if (url) {\n localStorage.setItem(v3ApiUrl, url);\n } else {\n localStorage.removeItem(v3ApiUrl);\n }\n};\n\nexport const getV2ApiUrlLS = (): string => {\n return (\n localStorage.getItem(v2ApiUrl) ||\n 'https://v3-staging-ptdczarhfq-nw.a.run.app/'\n );\n};\n\nexport const setV2ApiUrlLS = (url?: string) => {\n if (url) {\n localStorage.setItem(v2ApiUrl, url);\n } else {\n localStorage.removeItem(v2ApiUrl);\n }\n};\n","import { setAccount } from 'store/user/user';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, shareReplay } from 'rxjs/operators';\n\nconst userReceiver$ = new BehaviorSubject('');\nconst balancesReceiver$ = new BehaviorSubject(false);\nconst positionsReceiver$ = new BehaviorSubject(false);\nconst rewardsReceiver$ = new BehaviorSubject(false);\nconst lockedBntReceiver$ = new BehaviorSubject(false);\n\nexport const user$ = userReceiver$.pipe(distinctUntilChanged(), shareReplay(1));\n\nexport const setUser = (\n userAddress: string | undefined | null,\n dispatch: any\n) => {\n dispatch(setAccount(userAddress));\n if (typeof userAddress === 'string') userReceiver$.next(userAddress);\n else userReceiver$.next('');\n};\n\nexport const loadingBalances$ = balancesReceiver$.pipe(\n distinctUntilChanged(),\n shareReplay(1)\n);\n\nexport const setLoadingBalances = (loading: boolean) => {\n balancesReceiver$.next(loading);\n};\n\nexport const loadingPositions$ = positionsReceiver$.pipe(\n distinctUntilChanged(),\n shareReplay(1)\n);\n\nexport const setLoadingPositions = (loading: boolean) => {\n positionsReceiver$.next(loading);\n};\n\nexport const loadingRewards$ = rewardsReceiver$.pipe(\n distinctUntilChanged(),\n shareReplay(1)\n);\n\nexport const setLoadingRewards = (loading: boolean) => {\n rewardsReceiver$.next(loading);\n};\n\nexport const loadingLockedBnt$ = lockedBntReceiver$.pipe(\n distinctUntilChanged(),\n shareReplay(1)\n);\n\nexport const setLoadingLockedBnt = (loading: boolean) => {\n lockedBntReceiver$.next(loading);\n};\n","import { switchMapIgnoreThrow } from './customOperators';\nimport {\n distinctUntilChanged,\n map,\n pluck,\n shareReplay,\n switchMap,\n} from 'rxjs/operators';\nimport { isEqual } from 'lodash';\nimport { getContractAddressesForChainOrThrow } from '@0x/contract-addresses';\nimport { Contract, utils } from 'ethers';\nimport { RegisteredContracts } from 'services/web3/types';\nimport {\n ContractRegistry__factory,\n LiquidityProtection__factory,\n} from 'services/web3/abis/types';\nimport { web3 } from 'services/web3';\nimport { getNetworkVariables } from 'services/web3/config';\nimport { multicall } from 'services/web3/multicall/multicall';\nimport { user$ } from 'services/observables/user';\n\nconst zeroXContracts$ = user$.pipe(\n switchMapIgnoreThrow(async () => getContractAddressesForChainOrThrow(1))\n);\n\nexport const exchangeProxy$ = zeroXContracts$.pipe(\n pluck('exchangeProxy'),\n map(utils.getAddress),\n shareReplay(1)\n);\n\nexport const contractAddresses$ = user$.pipe(\n switchMapIgnoreThrow(() => fetchContractAddresses()),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\nconst fetchContractAddresses = async (): Promise => {\n const networkVariables = getNetworkVariables();\n const contract = ContractRegistry__factory.connect(\n networkVariables.contractRegistry,\n web3.provider\n );\n\n try {\n const addresses = await multicall([\n buildAddressCall(contract, 'BancorNetwork'),\n buildAddressCall(contract, 'BancorConverterRegistry'),\n buildAddressCall(contract, 'LiquidityProtectionStore'),\n buildAddressCall(contract, 'LiquidityProtection'),\n buildAddressCall(contract, 'StakingRewards'),\n ]);\n\n if (addresses)\n return {\n BancorNetwork: addresses[0].toString(),\n BancorConverterRegistry: addresses[1].toString(),\n LiquidityProtectionStore: addresses[2].toString(),\n LiquidityProtection: addresses[3].toString(),\n StakingRewards: addresses[4].toString(),\n };\n } catch (error) {\n console.error(error);\n }\n return {\n BancorNetwork: '',\n BancorConverterRegistry: '',\n LiquidityProtectionStore: '',\n LiquidityProtection: '',\n StakingRewards: '',\n };\n};\n\nconst buildAddressCall = (registry: Contract, contract: string) => ({\n contractAddress: registry.address,\n interface: registry.interface,\n methodName: 'addressOf',\n methodParameters: [utils.formatBytes32String(contract)],\n});\n\nexport const bancorNetwork$ = contractAddresses$.pipe(pluck('BancorNetwork'));\n\nexport const liquidityProtection$ = contractAddresses$.pipe(\n pluck('LiquidityProtection')\n);\n\nexport const bancorConverterRegistry$ = contractAddresses$.pipe(\n pluck('BancorConverterRegistry')\n);\n\nexport const stakingRewards$ = contractAddresses$.pipe(pluck('StakingRewards'));\n\nexport const liquidityProtectionStore$ = liquidityProtection$.pipe(\n switchMap(async (liquidityProtection) => {\n const contract = LiquidityProtection__factory.connect(\n liquidityProtection,\n web3.provider\n );\n try {\n return await contract.store();\n } catch (error) {\n console.error(error);\n }\n\n return '';\n }),\n map(utils.getAddress),\n distinctUntilChanged(),\n shareReplay(1)\n);\n\nexport const settingsContractAddress$ = liquidityProtection$.pipe(\n switchMap(async (liquidityProtection) => {\n const contract = LiquidityProtection__factory.connect(\n liquidityProtection,\n web3.provider\n );\n\n try {\n return utils.getAddress(await contract.settings());\n } catch (error) {\n console.error(error);\n }\n\n return '';\n }),\n shareReplay(1)\n);\n","import { Observable } from 'rxjs';\nimport { switchMap, filter } from 'rxjs/operators';\n\nexport const switchMapIgnoreThrow =\n (switchMapProm: (data: T) => Promise) =>\n (source: Observable): Observable =>\n source.pipe(\n switchMap((x) =>\n switchMapProm(x).catch((e: any) => {\n console.error('Observable failed: ', e);\n return 'DONT THROW' as unknown as Y;\n })\n ),\n filter((x) => !(typeof x === 'string' && x === 'DONT THROW'))\n );\n","import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { RootState } from 'store';\nimport {\n setDarkModeLS,\n setSlippageToleranceLS,\n setUsdToggleLS,\n} from 'utils/localStorage';\nimport { LocaleType } from '../../i18n';\n\nexport enum DarkMode {\n Dark,\n Light,\n System,\n}\n\nexport interface UserState {\n account: string | null | undefined;\n darkMode: DarkMode;\n walletModal: boolean;\n slippageTolerance: number;\n usdToggle: boolean;\n locale: LocaleType;\n loadingBalances: boolean;\n forceV3Routing: boolean;\n}\n\nexport const initialState: UserState = {\n account: undefined,\n darkMode: DarkMode.System,\n walletModal: false,\n slippageTolerance: 0.005,\n usdToggle: false,\n locale: 'en',\n loadingBalances: false,\n forceV3Routing: false,\n};\n\nconst userSlice = createSlice({\n name: 'user',\n initialState,\n reducers: {\n setAccount: (state, action) => {\n state.account = action.payload;\n },\n setDarkMode: (state, action: PayloadAction) => {\n state.darkMode = action.payload;\n setDarkModeCss(action.payload);\n setDarkModeLS(action.payload);\n },\n setSlippageTolerance: (state, action) => {\n setSlippageToleranceLS(action.payload);\n state.slippageTolerance = action.payload;\n },\n setLocale: (state, action) => {\n state.locale = action.payload;\n },\n openWalletModal: (state, action) => {\n state.walletModal = action.payload;\n },\n setUsdToggle: (state, action: PayloadAction) => {\n setUsdToggleLS(action.payload);\n state.usdToggle = action.payload;\n },\n setLoadingBalances: (state, action) => {\n state.loadingBalances = action.payload;\n },\n setForceV3Routing: (state, action) => {\n state.forceV3Routing = action.payload;\n },\n },\n});\n\nexport const getDarkMode = createSelector(\n (state: RootState) => state.user.darkMode,\n (mode: DarkMode): boolean => {\n return (\n (mode === DarkMode.System &&\n window.matchMedia('(prefers-color-scheme:dark)').matches) ||\n mode === DarkMode.Dark\n );\n }\n);\n\nconst setDarkModeCss = (mode: DarkMode) => {\n const root = window.document.documentElement;\n if (\n (mode === DarkMode.System &&\n window.matchMedia('(prefers-color-scheme:dark)').matches) ||\n mode === DarkMode.Dark\n )\n root.classList.add('dark');\n else root.classList.remove('dark');\n};\n\nexport const {\n setAccount,\n setDarkMode,\n setSlippageTolerance,\n setLocale,\n openWalletModal,\n setUsdToggle,\n setLoadingBalances,\n setForceV3Routing,\n} = userSlice.actions;\n\nexport const user = userSlice.reducer;\n","import { web3 } from 'services/web3';\nimport { Multicall__factory } from 'services/web3/abis/types';\nimport { multiCallContract } from 'services/web3/config';\nimport { Interface } from '@ethersproject/abi';\n\nexport interface MultiCall {\n contractAddress: string;\n interface: Interface;\n methodName: string;\n methodParameters: any[];\n}\n\nexport const multicall = async (calls: MultiCall[], blockHeight?: number) => {\n const multicallContract = Multicall__factory.connect(\n multiCallContract,\n web3.provider\n );\n\n try {\n const encoded = calls.map((call) => ({\n target: call.contractAddress.toLocaleLowerCase(),\n callData: call.interface.encodeFunctionData(\n call.methodName,\n call.methodParameters\n ),\n }));\n const encodedRes = await multicallContract.tryAggregate(false, encoded, {\n blockTag: blockHeight,\n });\n\n return encodedRes.map((call, i) => {\n if (!call.success) return [];\n\n return calls[i].interface.decodeFunctionResult(\n calls[i].methodName,\n call.returnData\n );\n });\n } catch (error) {\n console.error(error);\n }\n};\n","import BigNumber from 'bignumber.js';\nimport { BigNumber as BigNumberEther } from 'ethers';\nimport numeral from 'numeral';\nimport { EthNetworks } from 'services/web3/types';\nimport { shrinkToken } from './formulas';\nimport dayjs from './dayjs';\nimport { Pool } from 'services/observables/pools';\nimport { APIPool } from 'services/api/bancorApi/bancorApi.types';\n\nconst oneMillion = new BigNumber(1000000);\n\nexport const ppmToDec = (ppm: number | string | BigNumber) =>\n new BigNumber(ppm).div(oneMillion);\n\nexport const decToPpm = (dec: number | string | BigNumber): string =>\n new BigNumber(dec).times(oneMillion).toFixed(0);\n\nexport const prettifyNumber = (\n num: number | string | BigNumber,\n usd = false\n): string => {\n const bigNum = new BigNumber(num);\n if (usd) {\n if (bigNum.lte(0)) return '$0.00';\n else if (bigNum.lt(0.01)) return '< $0.01';\n else if (bigNum.gt(100)) return numeral(bigNum).format('$0,0', Math.floor);\n else return numeral(bigNum).format('$0,0.00', Math.floor);\n } else {\n if (bigNum.lte(0)) return '0';\n else if (bigNum.gte(1000)) return numeral(bigNum).format('0,0', Math.floor);\n else if (bigNum.gte(2))\n return numeral(bigNum).format('0,0.[00]', Math.floor);\n else if (bigNum.lt(0.000001)) return '< 0.000001';\n else return numeral(bigNum).format('0.[000000]', Math.floor);\n }\n};\n\nexport const formatDuration = (duration: plugin.Duration): string => {\n let sentence = '';\n const days = duration.days();\n const minutes = duration.minutes();\n const hours = duration.hours();\n if (days > 0) sentence += days + ' Days';\n if (hours > 0) sentence += ' ' + hours + ' Hours';\n if (minutes > 0) sentence += ' ' + minutes + ' Minutes';\n return sentence;\n};\n\nexport const formatTime = (ms: number): string => {\n const countdown = dayjs.duration(ms).format('HH mm ss');\n let [hours, minutes, seconds] = countdown.split(' ').map((x) => parseInt(x));\n const days = Math.floor(ms / (1000 * 60 * 60 * 24));\n if (!days && !hours && !minutes) {\n return `${seconds}s`;\n } else if (!days && !hours) {\n return `${minutes}m ${seconds}s`;\n } else if (!days) {\n return `${hours}h ${minutes}m ${seconds}s`;\n } else {\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n};\n\nexport const isUnsupportedNetwork = (\n network: EthNetworks | undefined\n): boolean => {\n return network !== undefined && EthNetworks[network] === undefined;\n};\n\nexport const calculateBntNeededToOpenSpace = (\n bntBalance: string,\n tknBalance: string,\n networkTokensMinted: string,\n networkTokenMintingLimits: string\n): string => {\n return new BigNumber(bntBalance)\n .div(tknBalance)\n .plus(networkTokensMinted)\n .minus(networkTokenMintingLimits)\n .toString();\n};\n\nexport const calculatePriceDeviationTooHigh = (\n averageRate: BigNumber,\n primaryReserveBalance: BigNumber,\n secondaryReserveBalance: BigNumber,\n averageRateMaxDeviation: BigNumber\n): boolean => {\n const spotRate = primaryReserveBalance.dividedBy(secondaryReserveBalance);\n\n const averageRateMaxDeviationBase = new BigNumber(oneMillion).minus(\n averageRateMaxDeviation\n );\n\n const threshold = averageRate.dividedBy(spotRate);\n\n const withinLowerThreshold = threshold.isGreaterThan(\n averageRateMaxDeviationBase.dividedBy(oneMillion)\n );\n\n const withinHigherThreshold = oneMillion\n .dividedBy(averageRateMaxDeviationBase)\n .isGreaterThan(threshold);\n\n return !(withinLowerThreshold && withinHigherThreshold);\n};\n\nexport const rewindBlocksByDays = (\n currentBlock: number,\n days: number,\n secondsPerBlock = 13.3\n) => {\n if (!Number.isInteger(currentBlock))\n throw new Error('Current block should be an integer');\n const secondsToRewind = dayjs.duration(days, 'days').asSeconds();\n const blocksToRewind = parseInt(String(secondsToRewind / secondsPerBlock));\n return currentBlock - blocksToRewind;\n};\n\nexport const getFutureTime = (duration: plugin.Duration) =>\n dayjs().add(duration).unix();\n\nexport const calculateProgressLevel = (\n startTimeSeconds: number,\n endTimeSeconds: number\n) => {\n if (endTimeSeconds < startTimeSeconds)\n throw new Error('End time should be greater than start time');\n const totalWaitingTime = endTimeSeconds - startTimeSeconds;\n const now = dayjs().unix();\n if (now >= endTimeSeconds) return 1;\n const timeWaited = now - startTimeSeconds;\n return timeWaited / totalWaitingTime;\n};\n\nexport const calculateAPR = (\n roi: number | string | BigNumber,\n magnitude: number | string | BigNumber\n) => ppmToDec(roi).minus(1).times(magnitude);\n\nexport const calcUsdPrice = (\n amount: number | string | BigNumber,\n price: string | number | BigNumber | null,\n decimals: number\n) => new BigNumber(shrinkToken(amount, decimals)).times(price ?? 0).toString();\n\nexport const IS_IN_IFRAME = window.self !== window.top;\n\nexport const findPoolByConverter = (\n converter: string,\n pools: Pool[],\n apiPools: APIPool[]\n): APIPool | Pool | undefined => {\n const poolExists = pools.find((x) => x.converter_dlt_id === converter);\n\n if (poolExists) {\n return poolExists;\n } else {\n return apiPools.find((x) => x.converter_dlt_id === converter);\n }\n};\n\nexport const calcFiatValue = (\n amount: number | string | BigNumber,\n price: string | number | BigNumber | null\n) =>\n new BigNumber(amount)\n .times(price ?? 0)\n .toFixed(2)\n .toString();\n\nexport const calcTknValue = (\n amount: number | string,\n price: string | number | BigNumber | null,\n decimals: number\n) =>\n new BigNumber(amount)\n .div(price ?? 0)\n .toFixed(decimals)\n .toString();\n\nexport const toBigNumber = (\n num: BigNumberEther | string | number | BigNumber\n): BigNumber => new BigNumber(num.toString());\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBell(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.35307 0.00903974C5.20872 0.201353 2.03074 3.76395 2.03074 7.88427V11.6151L0.670126 14.346C0.670126 14.3508 0.665319 14.3556 0.665319 14.3604C0.117225 15.5239 1.00187 16.923 2.29037 16.923H6.64626C6.64626 18.6105 8.03092 20 9.72327 20C11.4156 20 12.8003 18.6105 12.8003 16.923H17.1562C18.4447 16.923 19.3293 15.5239 18.7812 14.3604C18.7812 14.3556 18.7764 14.3508 18.7764 14.346L17.4158 11.6151V7.69195C17.4158 3.32644 13.757 -0.202505 9.35307 0.00903974ZM9.42519 1.54274C12.9734 1.37446 15.8773 4.18224 15.8773 7.69195V11.793C15.8773 11.9132 15.9061 12.0286 15.959 12.1344L17.3918 15.0191C17.4831 15.2162 17.3773 15.3845 17.1562 15.3845H2.29037C2.06921 15.3845 1.96343 15.2162 2.05478 15.0191L3.48752 12.1344C3.5404 12.0286 3.56925 11.9132 3.56925 11.793V7.88427C3.56925 4.55244 6.12221 1.69659 9.42519 1.54274ZM8.18477 16.923H11.2618C11.2618 17.7788 10.5839 18.4615 9.72327 18.4615C8.86267 18.4615 8.18477 17.7788 8.18477 16.923Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBell);\nexport default __webpack_public_path__ + \"static/media/bell.c631865a.svg\";\nexport { ForwardRef as ReactComponent };","export const UnsupportedNetwork = () => {\n return

UnsupportedNetwork

;\n};\n","import { Transition } from '@headlessui/react';\nimport { Fragment } from 'react';\n\ninterface DropdownTransitionProps {\n children: JSX.Element | JSX.Element[];\n}\n\nexport const DropdownTransition = ({ children }: DropdownTransitionProps) => {\n return (\n \n {children}\n \n );\n};\n","import { createSlice, nanoid, PayloadAction } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\n\nexport enum NotificationType {\n info,\n success,\n error,\n pending,\n}\n\nexport interface BaseNotification {\n type?: NotificationType;\n title: string;\n msg: string;\n showSeconds?: number;\n txHash?: string;\n updatedInfo?: UpdatedInfo;\n}\n\ninterface UpdatedInfo {\n successTitle?: string;\n successMsg?: string;\n errorTitle?: string;\n errorMsg?: string;\n}\n\nexport interface Notification extends BaseNotification {\n id: string;\n timestamp: number;\n}\n\nexport interface NotificationState {\n notifications: Notification[];\n}\n\nexport const initialState: NotificationState = {\n notifications: [],\n};\n\nconst defaultShowSeconds = ({ type }: BaseNotification) => {\n switch (type) {\n case NotificationType.success:\n return 10;\n default:\n return 8;\n }\n};\n\nconst notificationSlice = createSlice({\n name: 'notification',\n initialState,\n reducers: {\n setNotifications: (state, action) => {\n state.notifications = action.payload;\n },\n addNotification: (state, action: PayloadAction) => {\n const length = state.notifications.unshift({\n id: nanoid(),\n type: NotificationType.info,\n timestamp: dayjs().unix(),\n showSeconds: defaultShowSeconds(action.payload),\n ...action.payload,\n });\n\n if (length > 100) {\n state.notifications.pop();\n }\n },\n removeNotification: (state, action: PayloadAction) => {\n const index = state.notifications.findIndex(\n (notification) => notification.id === action.payload\n );\n if (index > -1) state.notifications.splice(index, 1);\n },\n hideAlert: (state, action: PayloadAction) => {\n const index = state.notifications.findIndex(\n (notification) => notification.id === action.payload\n );\n if (index > -1) state.notifications[index].showSeconds = 0;\n },\n setStatus: (\n state,\n action: PayloadAction<{\n id: string;\n type: NotificationType;\n title?: string;\n msg?: string;\n }>\n ) => {\n const index = state.notifications.findIndex(\n (notification) => notification.id === action.payload.id\n );\n if (index > -1) {\n const oldNotification = state.notifications[index];\n const notification = {\n id: oldNotification.id,\n type: action.payload.type,\n title: action.payload.title\n ? action.payload.title\n : oldNotification.title,\n msg: action.payload.msg ? action.payload.msg : oldNotification.msg,\n showSeconds: oldNotification.showSeconds,\n txHash: oldNotification.txHash,\n timestamp: oldNotification.timestamp,\n };\n state.notifications[index] = notification;\n }\n },\n },\n});\n\nexport const {\n setNotifications,\n addNotification,\n removeNotification,\n hideAlert,\n setStatus,\n} = notificationSlice.actions;\n\nexport const notification = notificationSlice.reducer;\n","import { createSelector } from '@reduxjs/toolkit';\nimport { RootState } from 'store';\nimport { Token } from 'services/observables/tokens';\nimport { orderBy, uniqBy } from 'lodash';\nimport { PoolV3 } from 'services/observables/pools';\nimport BigNumber from 'bignumber.js';\n\nexport const getAllTokensMap = createSelector(\n [(state: RootState) => state.bancor.allTokens],\n (allTokens: Token[]): Map => {\n return new Map(allTokens.map((token) => [token.address, token]));\n }\n);\n\nexport const getTokensV3Map = createSelector(\n [(state: RootState) => state.pool.v3Pools],\n (pools: PoolV3[]): Map => {\n return new Map(pools.map((pool) => [pool.poolDltId, pool.reserveToken]));\n }\n);\n\nexport const getAvailableToStakeTokens = createSelector(\n [\n (state: RootState) => state.pool.v3Pools,\n (state: RootState) => getTokensV3Map(state),\n ],\n (pools: PoolV3[], allTokensMap: Map) => {\n const poolsWithApr = pools\n .map((pool) => {\n const token = allTokensMap.get(pool.poolDltId);\n\n return {\n token: token!,\n pool,\n };\n })\n .filter((p) => !!p && !!p.token && !!Number(p.token.balance));\n\n return orderBy(poolsWithApr, 'tknApr', 'desc');\n }\n);\n\nexport const getV3Tokens = createSelector(\n [(state: RootState) => state.pool.v3Pools],\n (pools: PoolV3[]): Token[] => {\n return pools.map((pool) => pool.reserveToken);\n }\n);\n\nexport const getTokenTableData = createSelector(\n [\n (state: RootState) => state.bancor.allTokens,\n (state: RootState) => getV3Tokens(state),\n ],\n (tokens: Token[], v3Tokens: Token[]) => {\n const tokensMap = new Map(tokens.map((token) => [token.address, token]));\n const v3TokensMap = new Map(\n v3Tokens.map((token) => [token.address, token])\n );\n const ids = uniqBy(\n [...tokens.map((t) => t.address), ...v3Tokens.map((t) => t.address)],\n (id) => id\n );\n return ids\n .map((id) => {\n const token = tokensMap.get(id);\n const v3Token = v3TokensMap.get(id);\n\n if (!token && !v3Token) {\n return undefined;\n }\n\n if (!(token && v3Token)) {\n return v3Token || token;\n }\n\n const merged: Token = {\n ...v3Token,\n price_history_7d: token.price_history_7d,\n usd_volume_24: new BigNumber(token.usd_volume_24)\n .plus(v3Token.usd_volume_24)\n .toString(),\n liquidity: new BigNumber(token.liquidity)\n .plus(v3Token.liquidity)\n .toString(),\n };\n\n return merged;\n })\n .filter((t) => !!t) as Token[];\n }\n);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCirclecheck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 0C6.729 0 0 6.729 0 15C0 23.271 6.729 30 15 30C23.271 30 30 23.271 30 15C30 12.5933 29.4165 10.3254 28.4048 8.30713L26.7217 9.99023C27.3817 11.5285 27.75 13.2218 27.75 15C27.75 22.0305 22.0305 27.75 15 27.75C7.9695 27.75 2.25 22.0305 2.25 15C2.25 7.9695 7.9695 2.25 15 2.25C18.3345 2.25 21.3642 3.5469 23.6382 5.6499L25.229 4.05908C22.5463 1.54883 18.9548 0 15 0ZM26.603 5.23975C26.3109 5.24826 26.0335 5.37014 25.8296 5.57959L13.125 18.2842L10.1704 15.3296C10.0667 15.2216 9.94258 15.1354 9.80519 15.076C9.66779 15.0167 9.51993 14.9853 9.37026 14.9838C9.22059 14.9822 9.07213 15.0106 8.93355 15.0672C8.79498 15.1238 8.66909 15.2074 8.56325 15.3133C8.45741 15.4191 8.37376 15.545 8.31718 15.6836C8.26061 15.8221 8.23225 15.9706 8.23377 16.1203C8.23529 16.2699 8.26666 16.4178 8.32604 16.5552C8.38542 16.6926 8.47162 16.8167 8.57959 16.9204L12.3296 20.6704C12.5406 20.8813 12.8267 20.9998 13.125 20.9998C13.4233 20.9998 13.7094 20.8813 13.9204 20.6704L27.4204 7.17041C27.5827 7.01234 27.6935 6.80896 27.7383 6.58688C27.7831 6.3648 27.7598 6.13437 27.6715 5.92575C27.5832 5.71712 27.4339 5.54002 27.2433 5.41762C27.0526 5.29522 26.8295 5.23322 26.603 5.23975Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCirclecheck);\nexport default __webpack_public_path__ + \"static/media/circlecheck.aef27b4a.svg\";\nexport { ForwardRef as ReactComponent };","import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { KeeprDaoToken } from 'services/api/keeperDao';\nimport { Token, TokenList, TokenMinimal } from 'services/observables/tokens';\nimport { RootState } from 'store';\nimport { orderBy } from 'lodash';\nimport { getAllTokensMap } from 'store/bancor/token';\nimport { utils } from 'ethers';\n\nimport { Statistic } from 'services/observables/statistics';\nimport { NotificationType } from 'store/notification/notification';\n\ninterface BancorState {\n tokenLists: TokenList[];\n tokens: Token[];\n keeperDaoTokens: KeeprDaoToken[];\n allTokenListTokens: TokenMinimal[];\n allTokens: Token[];\n isLoadingTokens: boolean;\n statistics: Statistic[];\n}\n\nexport const initialState: BancorState = {\n tokenLists: [],\n tokens: [],\n allTokens: [],\n keeperDaoTokens: [],\n allTokenListTokens: [],\n isLoadingTokens: true,\n statistics: [],\n};\n\nconst bancorSlice = createSlice({\n name: 'bancor',\n initialState,\n reducers: {\n setTokens: (state, action) => {\n state.tokens = action.payload;\n },\n setAllTokens: (state, action) => {\n state.allTokens = action.payload;\n state.isLoadingTokens = false;\n },\n setTokenLists: (state, action) => {\n state.tokenLists = action.payload;\n },\n setAllTokenListTokens: (state, action) => {\n state.allTokenListTokens = action.payload;\n },\n setKeeperDaoTokens: (state, action) => {\n state.keeperDaoTokens = action.payload;\n },\n setStatisticsV3: (state, action: PayloadAction) => {\n state.statistics = action.payload;\n },\n },\n});\n\nexport const {\n setTokens,\n setTokenLists,\n setAllTokens,\n setStatisticsV3,\n setAllTokenListTokens,\n setKeeperDaoTokens,\n} = bancorSlice.actions;\n\nexport const getTokenById = createSelector(\n (state: RootState) => getAllTokensMap(state),\n (_: any, id: string) => id,\n (allTokensMap: Map, id: string): Token | undefined => {\n if (!id) return undefined;\n return allTokensMap.get(utils.getAddress(id));\n }\n);\n\nexport const getTopMovers = createSelector(\n (state: RootState) => state.bancor.tokens,\n (tokens: Token[]) => {\n const filtered = tokens.filter(\n (t) => t.isProtected && Number(t.liquidity ?? 0) > 100000\n );\n return orderBy(filtered, 'price_change_24', 'desc').slice(0, 20);\n }\n);\n\nexport const bancor = bancorSlice.reducer;\n\nexport const getIsAppBusy = createSelector(\n [\n (state: RootState) => state.v3Portfolio.isPortfolioLoading,\n (state: RootState) => state.notification.notifications,\n ],\n (isPortfolioLoading, notifications): boolean => {\n const hasPendingTx = notifications.some(\n (n) => n.type === NotificationType.pending\n );\n return isPortfolioLoading || hasPendingTx;\n }\n);\n","import { createSelector, createSlice } from '@reduxjs/toolkit';\nimport { Token } from 'services/observables/tokens';\nimport { Statistic } from 'services/observables/statistics';\nimport { RootState } from 'store';\nimport { isEqual, orderBy } from 'lodash';\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\nimport { Pool, PoolV3 } from 'services/observables/pools';\nimport { bntToken } from 'services/web3/config';\n\ninterface PoolState {\n v2Pools: Pool[];\n v3Pools: PoolV3[];\n isLoadingV3Pools: boolean;\n statistics: Statistic[];\n}\n\nconst initialState: PoolState = {\n v2Pools: [],\n v3Pools: [],\n isLoadingV3Pools: true,\n statistics: [],\n};\n\nconst poolSlice = createSlice({\n name: 'pool',\n initialState,\n reducers: {\n setv2Pools: (state, action) => {\n state.v2Pools = action.payload;\n },\n setv3Pools: (state, action) => {\n state.v3Pools = action.payload;\n state.isLoadingV3Pools = false;\n },\n setStats: (state, action) => {\n state.statistics = action.payload;\n },\n },\n});\n\nexport interface TopPool {\n tknSymbol: string;\n tknLogoURI: string;\n apr: number;\n poolName: string;\n}\n\nexport const getPools = createSelector(\n (state: RootState) => state.pool.v2Pools,\n (state: RootState) => state.bancor.tokens,\n (pools: Pool[], tokens: Token[]) => {\n const pools_token_list = pools.filter((pool) => {\n return (\n tokens.findIndex(\n (token) => pool.reserves[0].address === token.address\n ) !== -1\n );\n });\n return orderBy(pools_token_list, 'liquidity', 'desc');\n }\n);\n\nexport const getPoolsV3Map = createSelector(\n [(state: RootState) => state.pool.v3Pools],\n (pools: PoolV3[]): Map => {\n return new Map(pools.map((pool) => [pool.poolDltId, pool]));\n }\n);\n\nexport const getV2PoolsWithoutV3 = createSelector(\n (state: RootState) => state.pool.v2Pools,\n (state: RootState) => state.pool.v3Pools,\n (poolsV2: Pool[], poolsV3: PoolV3[]) => {\n return poolsV2.filter(\n (v2Pool) =>\n poolsV3.findIndex(\n (v3Pool) => v2Pool.reserves[0].address === v3Pool.reserveToken.address\n ) === -1\n );\n }\n);\n\nexport const getProtectedPools = createSelector(getPools, (pools: Pool[]) =>\n pools.filter((p) => p.isProtected)\n);\n\nexport const getTopPools = createSelector(getPools, (pools: Pool[]) => {\n const filteredPools = pools\n .filter((p) => p.isProtected && p.liquidity > 100000)\n .map((p) => {\n return {\n tknSymbol: p.reserves[0].symbol,\n tknLogoURI: p.reserves[0].logoURI,\n tknApr: p.apr + (p.reserves[0].rewardApr || 0),\n bntSymbol: p.reserves[1].symbol,\n bntLogoURI: p.reserves[1].logoURI,\n bntApr: p.apr + (p.reserves[1].rewardApr || 0),\n poolName: p.name,\n };\n });\n const winningBntPool = orderBy(filteredPools, 'bntApr', 'desc').slice(0, 1);\n const topPools: TopPool[] = filteredPools.map((p) => {\n return {\n tknSymbol: p.tknSymbol,\n tknLogoURI: p.tknLogoURI,\n poolName: p.poolName,\n apr: p.tknApr,\n };\n });\n if (winningBntPool.length === 1) {\n topPools.push({\n tknSymbol: winningBntPool[0].bntSymbol,\n tknLogoURI: winningBntPool[0].bntLogoURI,\n apr: winningBntPool[0].bntApr,\n poolName: winningBntPool[0].poolName,\n });\n }\n return orderBy(topPools, 'apr', 'desc').slice(0, 20);\n});\n\nexport const getTopPoolsV3 = createSelector(\n (state: RootState) => state.pool.v3Pools,\n (pools: PoolV3[]) => {\n return orderBy(pools, 'apr', 'desc').slice(0, 20);\n }\n);\n\nexport const getIsV3Exist = createSelector(\n [(state: RootState) => getPoolsV3Map(state), (_: any, id: string) => id],\n (pools: Map, id): boolean => {\n return !!pools.get(id);\n }\n);\n\nexport const getBNTPoolV3 = createSelector(\n (state: RootState) => getPoolsV3Map(state),\n (pools: Map): PoolV3 | undefined => pools.get(bntToken)\n);\n\nexport interface SelectedPool {\n status: 'loading' | 'ready';\n pool?: Pool;\n}\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, isEqual);\n\nexport const getPoolById = (id: string) =>\n createDeepEqualSelector(\n (state: RootState) => state.pool.v2Pools,\n (pools: Pool[]) => {\n if (pools.length === 0) {\n return { status: 'loading' } as SelectedPool;\n }\n\n const pool = pools.find((p) => p.pool_dlt_id === id);\n return { status: 'ready', pool } as SelectedPool;\n }\n );\n\nexport const getPoolByIdWithoutV3 = (id: string) =>\n createDeepEqualSelector(getV2PoolsWithoutV3, (pools: Pool[]) => {\n if (pools.length === 0) {\n return { status: 'loading' } as SelectedPool;\n }\n\n const pool = pools.find((p) => p.pool_dlt_id === id);\n return { status: 'ready', pool } as SelectedPool;\n });\n\nexport const { setv2Pools, setv3Pools, setStats } = poolSlice.actions;\n\nexport const pool = poolSlice.reducer;\n","import { createSelector, createSlice } from '@reduxjs/toolkit';\nimport { BigNumber } from 'bignumber.js';\nimport { get } from 'lodash';\nimport { Rewards, SnapshotRewards } from 'services/observables/liquidity';\nimport { LockedAvailableBnt } from 'services/web3/lockedbnt/lockedbnt';\nimport {\n ProtectedPosition,\n ProtectedPositionGrouped,\n} from 'services/web3/protection/positions';\nimport { PoolToken } from 'services/observables/pools';\nimport { RootState } from 'store';\nimport { bntToken } from 'services/web3/config';\nimport { Dictionary } from 'services/web3/types';\nimport MerkleTree from 'merkletreejs';\nimport { getAddress, keccak256 } from 'ethers/lib/utils';\nimport { generateLeaf } from 'services/web3/protection/rewards';\n\ninterface LiquidityState {\n poolTokens: PoolToken[];\n lockedAvailableBNT: LockedAvailableBnt;\n protectedPositions: ProtectedPosition[];\n rewards?: Rewards;\n protocolBnBNTAmount: number;\n loadingPositions: boolean;\n loadingRewards: boolean;\n loadingLockedBnt: boolean;\n snapshots?: Dictionary;\n}\n\nconst initialState: LiquidityState = {\n poolTokens: [],\n lockedAvailableBNT: {\n locked: [],\n available: 0,\n },\n protocolBnBNTAmount: 0,\n protectedPositions: [],\n rewards: undefined,\n loadingPositions: false,\n loadingRewards: false,\n loadingLockedBnt: false,\n snapshots: undefined,\n};\n\nconst liquiditySlice = createSlice({\n name: 'liquidity',\n initialState,\n reducers: {\n setPoolTokens: (state, action) => {\n state.poolTokens = action.payload;\n },\n setLockedAvailableBNT: (state, action) => {\n state.lockedAvailableBNT = action.payload;\n },\n setProtectedPositions: (state, action) => {\n state.protectedPositions = action.payload;\n },\n setRewards: (state, action) => {\n state.rewards = action.payload;\n },\n setLoadingPositions: (state, action) => {\n state.loadingPositions = action.payload;\n },\n setLoadingRewards: (state, action) => {\n state.loadingRewards = action.payload;\n },\n setLoadingLockedBnt: (state, action) => {\n state.loadingLockedBnt = action.payload;\n },\n setProtocolBnBNTAmount: (state, action) => {\n state.protocolBnBNTAmount = action.payload;\n },\n setSnapshots: (state, action) => {\n state.snapshots = action.payload;\n },\n },\n});\n\nexport const getGroupedPositions = createSelector(\n (state: RootState) => state.liquidity.protectedPositions,\n (protectedPositions: ProtectedPosition[]) => {\n return protectedPositions.reduce(\n ((obj) => (acc: ProtectedPositionGrouped[], val: ProtectedPosition) => {\n const symbol = val.reserveToken.symbol;\n\n const bnt = val.pool.reserves[1];\n const bntUSDPrice = bnt.usdPrice\n ? new BigNumber(bnt.usdPrice)\n : new BigNumber(0);\n const poolId = val.pool.pool_dlt_id;\n const groupId = `${poolId}-${symbol}`;\n const filtered = protectedPositions.filter(\n (pos) =>\n pos.pool.pool_dlt_id === poolId &&\n pos.reserveToken.symbol === symbol\n );\n\n let item: ProtectedPositionGrouped = obj.get(groupId);\n\n if (!item) {\n const calcSum = (key: string): string => {\n return filtered\n .map((pos) => Number(get(pos, key)))\n .reduce((sum, current) => sum + current, 0)\n .toString();\n };\n\n const sumFees = calcSum('fees');\n const sumInitalStakeTkn = calcSum('initialStake.tknAmount');\n const sumInitalStakeUSD = calcSum('initialStake.usdAmount');\n\n const sumRoi = new BigNumber(sumFees)\n .div(sumInitalStakeTkn)\n .toString();\n\n item = {\n groupId: groupId,\n positionId: val.positionId,\n pool: val.pool,\n fees: sumFees,\n initialStake: {\n usdAmount: sumInitalStakeUSD,\n tknAmount: sumInitalStakeTkn,\n },\n protectedAmount: {\n usdAmount: calcSum('protectedAmount.usdAmount'),\n tknAmount: calcSum('protectedAmount.tknAmount'),\n },\n claimableAmount: {\n usdAmount: calcSum('claimableAmount.usdAmount'),\n tknAmount: calcSum('claimableAmount.tknAmount'),\n },\n reserveToken: val.reserveToken,\n roi: {\n fees: sumRoi,\n reserveRewards: new BigNumber(val.rewardsAmount)\n .times(bntUSDPrice)\n .div(sumInitalStakeUSD)\n .toString(),\n },\n aprs: val.aprs,\n timestamps: val.timestamps,\n currentCoveragePercent: val.currentCoveragePercent,\n rewardsMultiplier: val.rewardsMultiplier,\n rewardsAmount: val.rewardsAmount,\n subRows: [],\n };\n\n obj.set(groupId, item);\n acc.push(item);\n }\n\n if (filtered.length > 1) {\n item.subRows.push(val);\n }\n return acc;\n })(new Map()),\n []\n );\n }\n);\n\nexport const getAllBntPositionsAndAmount = createSelector(\n (state: RootState) => state.liquidity.protectedPositions,\n (protectedPositions: ProtectedPosition[]) => {\n const bntPositions = protectedPositions.filter(\n (pos) => pos.reserveToken.address === bntToken\n );\n\n const tknAmount = bntPositions\n .map((x) => Number(x.protectedAmount.tknAmount))\n .reduce((sum, current) => sum + current, 0);\n const usdAmount = bntPositions\n .map((x) => Number(x.protectedAmount.usdAmount))\n .reduce((sum, current) => sum + current, 0);\n\n return { tknAmount, usdAmount, bntPositions };\n }\n);\n\nexport const getPositionById = (id: string): any =>\n createSelector(\n getGroupedPositions,\n (positions: ProtectedPositionGrouped[]) => {\n return positions.find((pos) => pos.groupId === id);\n }\n );\n\nexport interface MyStakeSummary {\n protectedValue: number;\n claimableValue: number;\n fees: number;\n}\n\nexport const getStakeSummary = createSelector(\n (state: RootState) => state.liquidity.protectedPositions,\n (protectedPositions: ProtectedPosition[]) => {\n if (protectedPositions.length === 0) return;\n\n const initialStake = protectedPositions\n .map((x) => Number(x.initialStake.usdAmount))\n .reduce((sum, current) => sum + current, 0);\n\n const protectedValue = protectedPositions\n .map((x) => Number(x.protectedAmount.usdAmount))\n .reduce((sum, current) => sum + current, 0);\n\n const claimableValue = protectedPositions\n .map((x) => Number(x.claimableAmount.usdAmount))\n .reduce((sum, current) => sum + current, 0);\n\n const fees = protectedValue - initialStake;\n\n return {\n protectedValue,\n claimableValue,\n fees,\n };\n }\n);\n\nexport const getUserRewardsFromSnapshot = createSelector(\n (state: RootState) => state.user.account,\n (state: RootState) => state.liquidity.snapshots,\n (\n account: string | null | undefined,\n snapshots?: Dictionary\n ) => {\n const empty = { claimable: '0', totalClaimed: '0' };\n if (account && snapshots) {\n if (snapshots[account]) {\n return snapshots[account];\n }\n // fallback to key not found due to casing\n const accAddress = getAddress(account);\n const entry = Object.entries(snapshots).find(\n ([address]) => getAddress(address) === accAddress\n );\n return entry ? entry[1] : empty;\n }\n\n return empty;\n }\n);\n\nexport const getMerkleTree = createSelector(\n (state: RootState) => state.liquidity.snapshots,\n (snapshots?: Dictionary) => {\n if (!snapshots) return null;\n return new MerkleTree(\n // Generate leafs\n Object.entries(snapshots).map(([address, { claimable }]) =>\n generateLeaf(address, claimable)\n ),\n keccak256,\n { sortPairs: true }\n );\n }\n);\n\nexport const getUserRewardsProof = createSelector(\n (state: RootState) => state.user.account,\n getUserRewardsFromSnapshot,\n getMerkleTree,\n (account: string | null | undefined, userRewards, tree) => {\n if (!account || !tree || userRewards.claimable === '0') return null;\n const { claimable } = userRewards;\n const leaf: Buffer = generateLeaf(account, claimable);\n const proof: string[] = tree.getHexProof(leaf);\n return proof;\n }\n);\n\nexport const {\n setPoolTokens,\n setLockedAvailableBNT,\n setProtectedPositions,\n setRewards,\n setLoadingPositions,\n setLoadingRewards,\n setLoadingLockedBnt,\n setProtocolBnBNTAmount,\n setSnapshots,\n} = liquiditySlice.actions;\n\nexport const liquidity = liquiditySlice.reducer;\n","import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport {\n Holding,\n HoldingRaw,\n V3PortfolioState,\n WithdrawalRequest,\n WithdrawalRequestRaw,\n WithdrawalSettings,\n} from 'store/portfolio/v3Portfolio.types';\nimport { RootState } from 'store';\nimport { utils } from 'ethers';\nimport { RewardsProgramStake } from 'services/web3/v3/portfolio/standardStaking';\nimport BigNumber from 'bignumber.js';\nimport { orderBy, uniqBy } from 'lodash';\nimport { getPoolsV3Map } from 'store/bancor/pool';\nimport { PoolV3 } from 'services/observables/pools';\nimport { shrinkToken } from 'utils/formulas';\nimport { toBigNumber } from 'utils/helperFunctions';\n\nexport const initialState: V3PortfolioState = {\n isPortfolioLoading: false,\n holdingsRaw: [],\n isLoadingHoldings: true,\n withdrawalRequestsRaw: [],\n withdrawalSettings: { lockDuration: 0, withdrawalFee: 0 },\n isLoadingWithdrawalRequests: true,\n bonusesModal: false,\n standardRewards: [],\n isLoadingStandardRewards: true,\n};\n\nconst v3PortfolioSlice = createSlice({\n name: 'v3Portfolio',\n initialState,\n reducers: {\n setIsPortfolioLoading: (state, action: PayloadAction) => {\n state.isPortfolioLoading = action.payload;\n },\n setHoldingsRaw: (state, action: PayloadAction) => {\n state.holdingsRaw = action.payload;\n state.isLoadingHoldings = false;\n },\n setWithdrawalRequestsRaw: (\n state,\n action: PayloadAction\n ) => {\n state.withdrawalRequestsRaw = action.payload;\n state.isLoadingWithdrawalRequests = false;\n },\n setWithdrawalSettings: (\n state,\n action: PayloadAction\n ) => {\n state.withdrawalSettings = action.payload;\n },\n openBonusesModal: (state, action: PayloadAction) => {\n state.bonusesModal = action.payload;\n },\n setStandardRewards: (\n state,\n action: PayloadAction\n ) => {\n state.standardRewards = action.payload;\n state.isLoadingStandardRewards = false;\n },\n },\n});\n\nexport const {\n setHoldingsRaw,\n openBonusesModal,\n setWithdrawalRequestsRaw,\n setWithdrawalSettings,\n setStandardRewards,\n setIsPortfolioLoading,\n} = v3PortfolioSlice.actions;\n\nexport const v3Portfolio = v3PortfolioSlice.reducer;\n\nexport const getIsLoadingHoldings = createSelector(\n (state: RootState) => state.pool.isLoadingV3Pools,\n (state: RootState) => state.v3Portfolio.isLoadingHoldings,\n (state: RootState) => state.v3Portfolio.isLoadingStandardRewards,\n (isLoadingV3Pools, isLoadingHoldings, isLoadingStandardRewards): boolean => {\n return isLoadingV3Pools || isLoadingHoldings || isLoadingStandardRewards;\n }\n);\n\nexport const getPortfolioHoldings = createSelector(\n (state: RootState) => state.v3Portfolio.holdingsRaw,\n (state: RootState) => state.v3Portfolio.standardRewards,\n (state: RootState) => getPoolsV3Map(state),\n (\n holdingsRaw: HoldingRaw[],\n standardRewards: RewardsProgramStake[],\n allPoolsV3Map: Map\n ): Holding[] => {\n const holdingsRawMap = new Map(\n holdingsRaw.map((holding) => [holding.poolDltId, holding])\n );\n\n const buildHoldingObject = (poolId: string) => {\n const programs = standardRewards.filter((p) => p.poolDltId === poolId);\n const holdingRaw = holdingsRawMap.get(poolId);\n\n const pool = allPoolsV3Map.get(poolId);\n if (!pool) {\n return undefined;\n }\n\n const latestProgram = programs.find(\n (p) => pool.latestProgram?.id === p.id\n );\n\n const poolTokenBalance = shrinkToken(\n holdingRaw?.poolTokenBalanceWei || '0',\n pool.decimals\n );\n const tokenBalance = shrinkToken(\n holdingRaw?.tokenBalanceWei || '0',\n pool.decimals\n );\n\n let stakedTokenBalance = shrinkToken(\n programs.reduce(\n (acc, data) => toBigNumber(data.tokenAmountWei).plus(acc).toString(),\n '0'\n ),\n pool.decimals\n );\n\n let stakedPoolTokenBalance = shrinkToken(\n programs.reduce(\n (acc, data) =>\n toBigNumber(data.poolTokenAmountWei).plus(acc).toString(),\n '0'\n ),\n pool.decimals\n );\n\n const combinedTokenBalance = new BigNumber(tokenBalance)\n .plus(stakedTokenBalance)\n .toString();\n\n const hasLegacyStake = toBigNumber(\n programs\n .filter(\n (p) =>\n toBigNumber(p.poolTokenAmountWei).gt(0) &&\n !pool.programs.find((pp) => pp.id === p.id)?.isActive\n )\n .reduce(\n (acc, data) =>\n toBigNumber(data.poolTokenAmountWei).plus(acc).toString(),\n '0'\n )\n ).gt(0);\n\n const holding: Holding = {\n pool,\n poolTokenBalance,\n tokenBalance,\n stakedTokenBalance,\n stakedPoolTokenBalance,\n hasLegacyStake,\n latestProgram,\n programs,\n combinedTokenBalance,\n };\n\n return holding;\n };\n\n const allHoldingPools = holdingsRaw.map((holding) => holding.poolDltId);\n const allStakedPools = standardRewards.map((reward) => reward.poolDltId);\n const allPoolsUniq = uniqBy(\n [...allHoldingPools, ...allStakedPools],\n (poolId) => poolId\n );\n\n return allPoolsUniq\n .map((pool) => buildHoldingObject(pool))\n .filter((holding) => holding !== undefined)\n .filter((holding) =>\n new BigNumber(holding!.combinedTokenBalance).gt(0)\n ) as Holding[];\n }\n);\n\nexport const getIsLoadingWithdrawalRequests = createSelector(\n (state: RootState) => state.pool.isLoadingV3Pools,\n (state: RootState) => state.v3Portfolio.isLoadingWithdrawalRequests,\n (isLoadingV3Pools, isLoadingWithdrawalRequests): boolean => {\n return isLoadingV3Pools || isLoadingWithdrawalRequests;\n }\n);\n\nexport const getPortfolioWithdrawalRequests = createSelector(\n (state: RootState) => state.v3Portfolio.withdrawalRequestsRaw,\n (state: RootState) => state.v3Portfolio.withdrawalSettings,\n (state: RootState) => getPoolsV3Map(state),\n (\n withdrawalRequestsRaw: WithdrawalRequestRaw[],\n withdrawalSettings: WithdrawalSettings,\n allPoolsMap: Map\n ): WithdrawalRequest[] => {\n const withdrawalRequests = withdrawalRequestsRaw\n .map((requestRaw) => {\n const pool = allPoolsMap.get(requestRaw.reserveToken);\n if (!pool) {\n return undefined;\n }\n const token = pool.reserveToken;\n\n const lockEndsAt =\n requestRaw.createdAt + withdrawalSettings.lockDuration;\n const poolTokenAmount = shrinkToken(\n requestRaw.poolTokenAmountWei,\n token.decimals\n );\n const reserveTokenAmount = shrinkToken(\n requestRaw.reserveTokenAmountWei,\n token.decimals\n );\n\n const request: WithdrawalRequest = {\n ...requestRaw,\n lockEndsAt,\n poolTokenAmount,\n reserveTokenAmount,\n pool,\n };\n\n return request;\n })\n .filter((request) => request !== undefined) as WithdrawalRequest[];\n\n return orderBy(withdrawalRequests, (request) => request.createdAt, 'asc');\n }\n);\n\nexport interface StandardReward extends RewardsProgramStake {\n programPool: PoolV3;\n}\n\nexport interface GroupedStandardReward {\n groupId: string;\n groupPool: PoolV3;\n totalPendingRewards: string;\n rewards: StandardReward[];\n}\n\nexport const getIsLoadingStandardRewards = createSelector(\n (state: RootState) => state.pool.isLoadingV3Pools,\n (state: RootState) => state.v3Portfolio.isLoadingStandardRewards,\n (isLoadingV3Pools, isLoadingStandardRewards): boolean => {\n return isLoadingV3Pools || isLoadingStandardRewards;\n }\n);\n\nexport const getStandardRewards = createSelector(\n (state: RootState) => state.v3Portfolio.standardRewards,\n (state: RootState) => getPoolsV3Map(state),\n (\n standardRewards: RewardsProgramStake[],\n allPoolsMap: Map\n ): GroupedStandardReward[] => {\n if (allPoolsMap.size === 0) {\n return [];\n }\n return standardRewards.reduce(\n ((obj) => (acc: GroupedStandardReward[], val: RewardsProgramStake) => {\n const groupId = utils.getAddress(val.rewardsToken.address);\n const filtered = standardRewards.filter(\n (reward) => reward.rewardsToken.address === groupId\n );\n const groupPool = allPoolsMap.get(groupId);\n if (!groupPool) {\n console.error(\n `Failed GroupedStandardReward: No Pool found for ${groupId}`\n );\n return acc;\n }\n\n let item: GroupedStandardReward = obj.get(groupId);\n\n if (!item) {\n const totalPendingRewards = filtered\n .map((reward) => reward.pendingRewardsWei)\n .reduce(\n (sum, current) => new BigNumber(sum).plus(current).toString(),\n '0'\n );\n\n item = {\n groupId,\n groupPool,\n totalPendingRewards,\n rewards: [],\n };\n\n obj.set(groupId, item);\n acc.push(item);\n }\n\n const programPool = allPoolsMap.get(val.poolDltId);\n\n if (!programPool) {\n console.error(\n `Failed GroupedStandardReward: No pool found for ${programPool}`\n );\n return acc;\n }\n\n item.rewards.push({ ...val, programPool });\n return acc;\n })(new Map()),\n []\n );\n }\n);\n","import { configureStore } from '@reduxjs/toolkit';\nimport { useDispatch, TypedUseSelectorHook, useSelector } from 'react-redux';\nimport { user } from 'store/user/user';\nimport { bancor } from 'store/bancor/bancor';\nimport { pool } from 'store/bancor/pool';\nimport { notification } from 'store/notification/notification';\nimport { liquidity } from './liquidity/liquidity';\nimport { v3Portfolio } from 'store/portfolio/v3Portfolio';\n\nexport const store = configureStore({\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({\n serializableCheck: {\n ignoredPaths: [\n 'bancor.allTokenListTokens',\n 'bancor.allTokens',\n 'bancor.tokenLists',\n ],\n },\n }),\n reducer: {\n user,\n notification,\n bancor,\n pool,\n liquidity,\n v3Portfolio,\n },\n});\n\nexport type RootState = ReturnType;\nexport type AppDispatch = typeof store.dispatch;\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTimes(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 14 14\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.267242 0.235624C0.606957 -0.0938109 1.16562 -0.0702758 1.50532 0.259155L6.99253 5.79214L12.504 0.259155C12.8437 -0.07028 13.4024 -0.0938011 13.7421 0.235624C14.0818 0.56506 14.0818 1.08328 13.7664 1.43624L8.20634 6.99276L13.7664 12.5728C14.0818 12.9023 14.0818 13.444 13.7421 13.7734C13.4024 14.0793 12.8437 14.0793 12.504 13.7499L6.99253 8.21691L1.50532 13.7499C1.1656 14.0793 0.606943 14.0793 0.267242 13.7734C-0.072473 13.444 -0.0967281 12.9022 0.242977 12.5728L5.803 6.99276L0.242977 1.43624C-0.0967382 1.08328 -0.0724687 0.565046 0.267242 0.235624Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTimes);\nexport default __webpack_public_path__ + \"static/media/times.8c10f8ed.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLink(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"100%\",\n height: \"100%\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLink);\nexport default __webpack_public_path__ + \"static/media/link.6b4d865a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBancor(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 23 35\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.141 0L18.4212 4.71191L10.141 9.42385L1.86084 4.71191L10.141 0ZM20.2617 7.49663V16.9245L11.8183 21.7249V12.3011L20.2617 7.49663ZM23 19.2225L11.8183 25.5721V35L23 28.6504V19.2225ZM0 16.9203V7.4965L8.43932 12.301V21.7248L0 16.9203ZM0 20.7664V30.1942L8.43932 34.9947V25.5709L0 20.7664Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBancor);\nexport default __webpack_public_path__ + \"static/media/bancor.fe236eb4.svg\";\nexport { ForwardRef as ReactComponent };","import { Token } from 'services/observables/tokens';\nimport { get as _get } from 'lodash';\n\nexport const shortenString = (\n string: string,\n separator = '...',\n toLength = 13\n): string => {\n const startEndLength = Math.floor((toLength - separator.length) / 2);\n const start = string.substring(0, startEndLength);\n const end = string.substring(string.length - startEndLength, string.length);\n return start + separator + end;\n};\n\nexport const classNameGenerator = (object: {\n [key: string]: unknown;\n}): string => {\n return Object.entries(object)\n .filter(([k, v]) => k && v)\n .map((x) => x[0])\n .join(' ');\n};\n\nexport const sanitizeNumberInput = (\n input: string,\n precision?: number\n): string => {\n const sanitized = input\n .replace(/,/, '.')\n .replace(/[^\\d.]/g, '')\n .replace(/\\./, 'x')\n .replace(/\\./g, '')\n .replace(/x/, '.');\n if (!precision) return sanitized;\n const [integer, decimals] = sanitized.split('.');\n if (decimals) return `${integer}.${decimals.substring(0, precision)}`;\n else return sanitized;\n};\n\nexport const updateArray = (\n arr: T[],\n conditioner: (element: T) => boolean,\n updater: (element: T) => T\n) => arr.map((element) => (conditioner(element) ? updater(element) : element));\n\nexport const mapIgnoreThrown = async (\n input: readonly T[],\n iteratee: (value: T, index: number) => Promise\n): Promise => {\n const IGNORE_TOKEN = 'IGNORE_TOKEN';\n const res = await Promise.all(\n input.map((val, index) => iteratee(val, index).catch(() => IGNORE_TOKEN))\n );\n return res.filter((res) => res !== IGNORE_TOKEN) as V[];\n};\n\nexport const wait = async (ms: number = 0) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const get7DaysAgo = () => new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);\n\nexport const sortTokenBalanceAlphabetic = (a: Token, b: Token) => {\n const diff = Number(b.balance) - Number(a.balance);\n if (diff !== 0) return diff;\n\n return a.symbol.toUpperCase().localeCompare(b.symbol.toUpperCase());\n};\n\nexport const sortNumbersByKey = (a: T, b: T, key: string[]) =>\n Number(_get(a, key)) - Number(_get(b, key));\n\nexport const sorAlphaByKey = (a: T, b: T, key: string[]) => {\n return (_get(a, key) as unknown as string)\n .toUpperCase()\n .localeCompare((_get(b, key) as unknown as string).toUpperCase());\n};\n\nexport const openNewTab = (url: string) =>\n window.open(url, '_blank', 'noopener');\n","import { ReactComponent as IconCheck } from 'assets/icons/circlecheck.svg';\nimport { ReactComponent as IconTimes } from 'assets/icons/times.svg';\nimport { ReactComponent as IconLink } from 'assets/icons/link.svg';\nimport {\n Notification,\n NotificationType,\n} from 'store/notification/notification';\nimport { ReactComponent as IconBancor } from 'assets/icons/bancor.svg';\nimport { classNameGenerator } from 'utils/pureFunctions';\nimport { useEffect, useRef, useState } from 'react';\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport { getNetworkVariables } from 'services/web3/config';\n\ndayjs.extend(relativeTime);\ndayjs.extend(updateLocale);\n\ndayjs.updateLocale('en', {\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'now',\n m: 'now',\n mm: '%d min ago',\n h: 'an hour ago',\n hh: '%d hours ago',\n d: 'a day ago',\n dd: '%d days ago',\n M: 'a month ago',\n MM: '%d months ago',\n y: 'a year ago',\n yy: '%d years ago',\n },\n});\n\nexport interface NotificationContentProps {\n data: Notification;\n onRemove: Function;\n isAlert?: boolean;\n}\n\nexport const NotificationContent = ({\n data,\n onRemove,\n isAlert,\n}: NotificationContentProps) => {\n const { id, type, title, msg, showSeconds, timestamp, txHash } = data;\n const [isHovering, setIsHovering] = useState(false);\n const timer = useRef(null);\n\n useEffect(() => {\n if (!isAlert) return;\n if (type === NotificationType.pending) return;\n if (isHovering) {\n timer.current && clearTimeout(timer.current);\n return;\n }\n timer.current = setTimeout(() => {\n onRemove(id);\n }, showSeconds! * 1000);\n\n return () => {\n timer.current && clearTimeout(timer.current);\n };\n }, [isAlert, onRemove, type, showSeconds, id, isHovering]);\n\n const StatusIcon = () => {\n switch (type) {\n case NotificationType.pending:\n return (\n
\n \n
\n
\n
\n );\n case NotificationType.success:\n return ;\n case NotificationType.error:\n return ;\n default:\n return i;\n }\n };\n\n const etherscanUrl = () => {\n const baseUrl = getNetworkVariables().etherscanUrl;\n return `${baseUrl}/tx/${txHash}`;\n };\n\n return (\n setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n className=\"text-12\"\n >\n
\n
\n \n {StatusIcon()}\n
\n\n

{title}

\n \n {dayjs.unix(timestamp).fromNow(true)}\n \n
\n \n
\n {txHash && isHovering ? (\n \n View on Etherscan \n \n ) : (\n

{msg}

\n )}\n
\n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLeft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 15\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.032 7.5L7.376 0.155999L8.528 1.38L3.272 6.636H17.312V8.364H3.272L8.528 13.644L7.376 14.844L0.032 7.5Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLeft);\nexport default __webpack_public_path__ + \"static/media/left.2617cb5b.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect, useRef } from 'react';\n\nexport const useInterval = (\n callback: () => void,\n delay: null | number,\n leading = true\n) => {\n const savedCallback = useRef<() => void>();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n function tick() {\n const current = savedCallback.current;\n current && current();\n }\n\n if (delay !== null) {\n if (leading) tick();\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n return undefined;\n }, [delay, leading]);\n};\n","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSun(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_11197_397264)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.98779 20C9.57419 19.9922 9.24448 19.6527 9.25034 19.2391V17.7408C9.24643 17.4716 9.38885 17.2199 9.62101 17.0833C9.85512 16.9468 10.1439 16.9468 10.378 17.0833C10.6101 17.2199 10.7526 17.4716 10.7487 17.7408V19.2391C10.7506 19.442 10.6726 19.6371 10.5282 19.7795C10.3858 19.9239 10.1907 20.0019 9.98779 20ZM3.45802 17.2882C3.15368 17.2882 2.8786 17.1048 2.76349 16.8219C2.64839 16.539 2.71667 16.2152 2.93713 16.0025L3.99648 14.9432C4.28912 14.6505 4.7632 14.6505 5.05584 14.9432C5.34848 15.2358 5.34848 15.7099 5.05584 16.0025L3.99648 17.0619C3.85406 17.2082 3.66092 17.2901 3.45802 17.2882ZM16.5176 17.2882C16.3225 17.2843 16.1391 17.2023 16.0025 17.0619L14.9432 16.0025C14.6505 15.7099 14.6505 15.2358 14.9432 14.9432C15.2358 14.6505 15.7099 14.6505 16.0025 14.9432L17.0619 16.0025C17.2843 16.2171 17.3526 16.5468 17.2316 16.8336C17.1106 17.1184 16.8277 17.2979 16.5176 17.2882ZM9.99949 15.4933C6.9736 15.4933 4.50567 13.0254 4.50567 9.99949C4.50567 6.9736 6.9736 4.50567 9.99949 4.50567C13.0254 4.50567 15.4933 6.9736 15.4933 9.99949C15.4933 13.0254 13.0254 15.4933 9.99949 15.4933ZM9.99949 13.995C12.2158 13.995 13.995 12.2158 13.995 9.99949C13.995 7.78324 12.2158 6.00399 9.99949 6.00399C7.78324 6.00399 6.00399 7.78324 6.00399 9.99949C6.00399 12.2158 7.78324 13.995 9.99949 13.995ZM0.759887 10.7487C0.490659 10.7526 0.238989 10.6101 0.102424 10.378C-0.0341413 10.1439 -0.0341413 9.85513 0.102424 9.62101C0.238989 9.38885 0.490659 9.24644 0.759887 9.25034H2.2582C2.52743 9.24644 2.7791 9.38885 2.91567 9.62101C3.05223 9.85513 3.05223 10.1439 2.91567 10.378C2.7791 10.6101 2.52743 10.7526 2.2582 10.7487H0.759887ZM17.7408 10.7487C17.4716 10.7526 17.2199 10.6101 17.0833 10.378C16.9468 10.1439 16.9468 9.85513 17.0833 9.62101C17.2199 9.38885 17.4716 9.24644 17.7408 9.25034H19.2391C19.5083 9.24644 19.76 9.38885 19.8966 9.62101C20.0331 9.85513 20.0331 10.1439 19.8966 10.378C19.76 10.6101 19.5083 10.7526 19.2391 10.7487H17.7408ZM4.51153 5.28214C4.31643 5.27629 4.13109 5.19435 3.99648 5.05584L2.93713 3.99648C2.64253 3.70384 2.64253 3.22976 2.93517 2.93517C3.22976 2.64254 3.70384 2.64254 3.99648 2.93713L5.05584 3.99648C5.27824 4.21108 5.34457 4.54079 5.22362 4.82563C5.10266 5.11046 4.81977 5.2919 4.51153 5.28214ZM15.464 5.28214C15.1597 5.28214 14.8846 5.09681 14.7715 4.81392C14.6564 4.53104 14.7246 4.20718 14.9432 3.99648L16.0025 2.93713C16.2951 2.64254 16.7692 2.64254 17.0619 2.93713C17.3565 3.22976 17.3565 3.70384 17.0619 3.99648L16.0025 5.05584C15.862 5.20021 15.6669 5.28214 15.464 5.28214ZM9.98779 3.01711C9.57419 3.01126 9.24448 2.6718 9.25034 2.2582V0.759888C9.24643 0.49066 9.38885 0.238989 9.62101 0.102425C9.85512 -0.0341415 10.1439 -0.0341415 10.378 0.102425C10.6101 0.238989 10.7526 0.49066 10.7487 0.759888V2.2582C10.7506 2.4611 10.6726 2.65619 10.5282 2.79861C10.3858 2.94298 10.1907 3.02102 9.98779 3.01711Z\",\n fill: \"currentColor\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_11197_397264\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"currentColor\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSun);\nexport default __webpack_public_path__ + \"static/media/sun.67975539.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMoon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.4564 3.40269e-05C15.0623 0.00747082 14.7481 0.33095 14.7536 0.725075V1.43896H14.0398C13.7832 1.43524 13.5434 1.57096 13.4133 1.79219C13.2831 2.01528 13.2831 2.29042 13.4133 2.51351C13.5434 2.73474 13.7832 2.87045 14.0398 2.86673H14.7536V3.58062C14.7499 3.83717 14.8856 4.07699 15.1069 4.20713C15.33 4.33726 15.6051 4.33726 15.8282 4.20713C16.0494 4.07699 16.1851 3.83717 16.1814 3.58062V2.86673H16.8953C17.1519 2.87045 17.3917 2.73474 17.5218 2.51351C17.652 2.29042 17.652 2.01528 17.5218 1.79219C17.3917 1.57096 17.1519 1.43524 16.8953 1.43896H16.1814V0.725075C16.1833 0.531731 16.1089 0.345823 15.9713 0.21011C15.8356 0.0725382 15.6497 -0.00182493 15.4564 3.40269e-05ZM9.28052 1.43896C4.16434 1.43896 0 5.6033 0 10.7195C0 15.8357 4.16434 20 9.28052 20C12.7421 20 15.7594 18.0926 17.3508 15.2779C17.4698 15.0697 17.4753 14.8187 17.3675 14.605C17.2597 14.393 17.0533 14.248 16.8172 14.2183C12.7031 13.7107 9.51848 10.2194 9.51848 5.96024C9.51848 4.7128 9.7992 3.536 10.2919 2.47075C10.3922 2.2551 10.3774 2.00412 10.2547 1.79962C10.1301 1.59698 9.91261 1.46871 9.67464 1.45755C9.58541 1.45383 9.45527 1.43896 9.28052 1.43896ZM8.63542 2.9318C8.31752 3.89109 8.09071 4.89313 8.09071 5.96024C8.09071 10.5261 11.2549 14.3298 15.501 15.3858C14.0714 17.295 11.8535 18.5722 9.28052 18.5722C4.93585 18.5722 1.42777 15.0641 1.42777 10.7195C1.42777 6.59419 4.59936 3.26272 8.63542 2.9318ZM17.836 6.18891C17.4419 6.19448 17.1277 6.51796 17.1333 6.91209V7.62597H16.4194C16.1628 7.62226 15.923 7.75797 15.7929 7.9792C15.6627 8.20229 15.6627 8.47743 15.7929 8.70052C15.923 8.92175 16.1628 9.05746 16.4194 9.05375H17.1333V9.76763C17.1295 10.0242 17.2653 10.264 17.4865 10.3941C17.7096 10.5243 17.9847 10.5243 18.2078 10.3941C18.429 10.264 18.5648 10.0242 18.561 9.76763V9.05375H19.2749C19.5315 9.05746 19.7713 8.92175 19.9014 8.70052C20.0316 8.47743 20.0316 8.20229 19.9014 7.9792C19.7713 7.75797 19.5315 7.62226 19.2749 7.62597H18.561V6.91209C18.5629 6.71874 18.4885 6.53284 18.351 6.39712C18.2153 6.25955 18.0293 6.18519 17.836 6.18891Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMoon);\nexport default __webpack_public_path__ + \"static/media/moon.335ad202.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgComputer(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 576 512\",\n fill: \"currentColor\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M528 0h-480C21.5 0 0 21.5 0 48v320C0 394.5 21.5 416 48 416h192L224 464H152C138.8 464 128 474.8 128 488S138.8 512 152 512h272c13.25 0 24-10.75 24-24s-10.75-24-24-24H352L336 416h192c26.5 0 48-21.5 48-48v-320C576 21.5 554.5 0 528 0zM512 352H64V64h448V352z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgComputer);\nexport default __webpack_public_path__ + \"static/media/computer.d48f8009.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMenu(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.14589 6.50006C2.0615 6.49887 1.97772 6.51445 1.89941 6.54589C1.8211 6.57734 1.74983 6.62402 1.68973 6.68323C1.62964 6.74244 1.58192 6.81299 1.54935 6.89079C1.51677 6.96859 1.5 7.05208 1.5 7.13642C1.5 7.22075 1.51677 7.30424 1.54935 7.38204C1.58192 7.45984 1.62964 7.53039 1.68973 7.5896C1.74983 7.64881 1.8211 7.69549 1.89941 7.72694C1.97772 7.75838 2.0615 7.77396 2.14589 7.77277H17.8541C17.9385 7.77396 18.0223 7.75838 18.1006 7.72694C18.1789 7.69549 18.2502 7.64881 18.3103 7.5896C18.3704 7.53039 18.4181 7.45984 18.4507 7.38204C18.4832 7.30424 18.5 7.22075 18.5 7.13642C18.5 7.05208 18.4832 6.96859 18.4507 6.89079C18.4181 6.81299 18.3704 6.74244 18.3103 6.68323C18.2502 6.62402 18.1789 6.57734 18.1006 6.54589C18.0223 6.51445 17.9385 6.49887 17.8541 6.50006H2.14589ZM7.24045 12.2272C7.15606 12.226 7.07228 12.2416 6.99397 12.2731C6.91566 12.3045 6.84439 12.3512 6.78429 12.4104C6.7242 12.4696 6.67648 12.5402 6.6439 12.618C6.61133 12.6958 6.59456 12.7793 6.59456 12.8636C6.59456 12.9479 6.61133 13.0314 6.6439 13.1092C6.67648 13.187 6.7242 13.2576 6.78429 13.3168C6.84439 13.376 6.91566 13.4227 6.99397 13.4541C7.07228 13.4855 7.15606 13.5011 7.24045 13.4999H17.8541C17.9385 13.5011 18.0223 13.4855 18.1006 13.4541C18.1789 13.4227 18.2502 13.376 18.3103 13.3168C18.3704 13.2576 18.4181 13.187 18.4507 13.1092C18.4832 13.0314 18.5 12.9479 18.5 12.8636C18.5 12.7793 18.4832 12.6958 18.4507 12.618C18.4181 12.5402 18.3704 12.4696 18.3103 12.4104C18.2502 12.3512 18.1789 12.3045 18.1006 12.2731C18.0223 12.2416 17.9385 12.226 17.8541 12.2272H7.24045Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenu);\nexport default __webpack_public_path__ + \"static/media/menu.717ccce6.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as IconSun } from 'assets/icons/sun.svg';\nimport { ReactComponent as IconMoon } from 'assets/icons/moon.svg';\nimport { ReactComponent as IconComputer } from 'assets/icons/computer.svg';\nimport { DarkMode as IDarkMode, setDarkMode } from 'store/user/user';\nimport { useDispatch } from 'react-redux';\nimport { useAppSelector } from 'store';\n\nexport const DarkMode = ({ showText = false }: { showText?: boolean }) => {\n const darkMode = useAppSelector((state) => state.user.darkMode);\n\n return (\n <>\n {darkMode === IDarkMode.Dark ? (\n \n <>\n \n {showText &&
Switch to Light Mode
}\n \n
\n ) : darkMode === IDarkMode.Light ? (\n \n <>\n \n {showText &&
Switch to System Mode
}\n \n
\n ) : (\n \n <>\n \n {showText &&
Switch to Dark Mode
}\n \n
\n )}\n \n );\n};\n\nconst DarkModeButton = ({\n modeToSwitch,\n children,\n}: {\n modeToSwitch: IDarkMode;\n children: JSX.Element;\n}) => {\n const dispatch = useDispatch();\n return (\n dispatch(setDarkMode(modeToSwitch))}\n className=\"flex items-center gap-10 text-black dark:text-white\"\n >\n {children}\n \n );\n};\n","import { Transition, Dialog } from '@headlessui/react';\nimport { ReactComponent as IconTimes } from 'assets/icons/times.svg';\nimport { ReactComponent as IconLeft } from 'assets/icons/left.svg';\nimport { DarkMode } from 'elements/settings/DarkMode';\nimport { Fragment } from 'react';\n\nexport const MobileSidebar = ({\n children,\n setShow,\n show,\n action,\n title,\n showDarkMode = false,\n}: {\n children: JSX.Element;\n setShow: Function;\n show: boolean;\n action?: JSX.Element;\n title?: string;\n showDarkMode?: boolean;\n}) => {\n return (\n \n setShow(false)}\n >\n
\n \n \n \n\n
\n \n
\n
\n \n {showDarkMode && }\n \n
\n {title && (\n
\n
\n setShow(false)}\n >\n \n \n {title}\n
\n {action && action}\n
\n )}\n {children}\n
\n
\n \n
\n \n \n
\n );\n};\n","import { Popover } from '@headlessui/react';\nimport { DropdownTransition } from 'components/transitions/DropdownTransition';\nimport { ReactComponent as IconBell } from 'assets/icons/bell.svg';\nimport { useAppSelector } from 'store';\nimport {\n Notification,\n NotificationType,\n removeNotification,\n setNotifications,\n setStatus,\n} from 'store/notification/notification';\nimport { NotificationContent } from 'elements/notifications/NotificationContent';\nimport { useDispatch } from 'react-redux';\nimport { useState } from 'react';\nimport { useInterval } from 'hooks/useInterval';\nimport { web3 } from 'services/web3';\nimport { MobileSidebar } from 'elements/layoutHeader/MobileSidebar';\n\nexport const NotificationsMenu = () => {\n const dispatch = useDispatch();\n const [show, setShow] = useState(false);\n const notifications = useAppSelector(\n (state) => state.notification.notifications\n );\n\n const checkStatus = async (notification: Notification) => {\n if (!notification.txHash) return;\n try {\n const tx = await web3.provider.getTransactionReceipt(notification.txHash);\n if (tx !== null) {\n dispatch(\n setStatus({\n id: notification.id,\n type: tx.status ? NotificationType.success : NotificationType.error,\n title: tx.status\n ? notification.updatedInfo?.successTitle\n : notification.updatedInfo?.errorTitle,\n msg: tx.status\n ? notification.updatedInfo?.successMsg\n : notification.updatedInfo?.errorMsg,\n })\n );\n }\n } catch (e: any) {}\n };\n\n useInterval(async () => {\n notifications\n .filter((n) => n.type === NotificationType.pending)\n .forEach((n) => checkStatus(n));\n }, 2000);\n\n const clearAll = (\n dispatch(setNotifications([]))}\n className=\"text-12 underline\"\n >\n Clear all\n \n );\n\n const history = notifications.map((notification, index) => {\n return (\n
\n dispatch(removeNotification(id))}\n />\n {notifications.length > index + 1 && (\n
\n )}\n
\n );\n });\n\n const hasPendingTx = () =>\n notifications.some((n) => n.type === NotificationType.pending);\n\n return (\n <>\n \n \n {hasPendingTx() && (\n \n \n  \n \n \n  \n \n \n )}\n\n \n \n\n \n \n
\n
\n Notifications\n {clearAll}\n
\n {history}\n
\n
\n
\n
\n\n
\n \n\n \n <>{history}\n \n
\n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFiat(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.25 1C1.29252 1 0.5 1.79261 0.5 2.75019V11.2511C0.5 12.2087 1.29252 13.0013 2.25 13.0013H17.75C18.7075 13.0013 19.5 12.2087 19.5 11.2511V2.75019C19.5 1.79261 18.7075 1 17.75 1H2.25ZM3.5 2.50016H16.5C16.5 3.33025 17.17 4.00033 18 4.00033V10.001C17.17 10.001 16.5 10.671 16.5 11.5011H3.5C3.5 10.671 2.83 10.001 2 10.001V4.00033C2.83 4.00033 3.5 3.33025 3.5 2.50016ZM10 3.50027C9.02083 3.50027 8.19763 3.99238 7.70605 4.66837C7.21448 5.34436 7 6.1767 7 7.00065C7 7.8246 7.21448 8.65695 7.70605 9.33294C8.19763 10.0089 9.02083 10.501 10 10.501C10.9792 10.501 11.8024 10.0089 12.2939 9.33294C12.7855 8.65695 13 7.8246 13 7.00065C13 6.1767 12.7855 5.34436 12.2939 4.66837C11.8024 3.99238 10.9792 3.50027 10 3.50027ZM10 5.00043C10.5208 5.00043 10.8226 5.1959 11.0811 5.55127C11.3395 5.90665 11.5 6.44945 11.5 7.00065C11.5 7.55185 11.3395 8.09465 11.0811 8.45003C10.8226 8.8054 10.5208 9.00087 10 9.00087C9.47917 9.00087 9.17737 8.8054 8.91895 8.45003C8.66052 8.09465 8.5 7.55185 8.5 7.00065C8.5 6.44945 8.66052 5.90665 8.91895 5.55127C9.17737 5.1959 9.47917 5.00043 10 5.00043ZM4 6.00054C3.73478 6.00054 3.48043 6.10591 3.29289 6.29347C3.10536 6.48102 3 6.73541 3 7.00065C3 7.2659 3.10536 7.52028 3.29289 7.70783C3.48043 7.89539 3.73478 8.00076 4 8.00076C4.26522 8.00076 4.51957 7.89539 4.70711 7.70783C4.89464 7.52028 5 7.2659 5 7.00065C5 6.73541 4.89464 6.48102 4.70711 6.29347C4.51957 6.10591 4.26522 6.00054 4 6.00054ZM16 6.00054C15.7348 6.00054 15.4804 6.10591 15.2929 6.29347C15.1054 6.48102 15 6.73541 15 7.00065C15 7.2659 15.1054 7.52028 15.2929 7.70783C15.4804 7.89539 15.7348 8.00076 16 8.00076C16.2652 8.00076 16.5196 7.89539 16.7071 7.70783C16.8946 7.52028 17 7.2659 17 7.00065C17 6.73541 16.8946 6.48102 16.7071 6.29347C16.5196 6.10591 16.2652 6.00054 16 6.00054ZM2.02246 14.0004C2.13296 14.828 2.81671 15.4706 3.67871 15.5006C9.11621 15.6886 13.1412 17.5005 15.3037 18.4736C15.6887 18.6471 16.0199 18.7952 16.2939 18.9072C16.4454 18.9692 16.6042 19 16.7627 19C17.0047 19 17.2442 18.9285 17.4512 18.79C17.7947 18.5595 18 18.1737 18 17.7587V14.0014H16.5V16.0016C15.9323 16.0016 15.4453 16.3183 15.1904 16.782C12.8156 15.7334 8.90476 14.1802 3.73047 14.0014C3.72947 14.0014 3.72902 14.0004 3.72852 14.0004H2.02246Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFiat);\nexport default __webpack_public_path__ + \"static/media/fiat.791e6489.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTwitter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 23,\n height: 20,\n viewBox: \"0 0 23 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.8462 2.39063C22.6871 2.22396 22.4355 2.17187 22.2251 2.27083L22.1326 2.3125C22.0608 2.34896 21.9838 2.38542 21.9068 2.42187C22.1275 2.0625 22.3072 1.67187 22.4253 1.27604C22.4971 1.05729 22.4201 0.8125 22.2405 0.671875C22.0608 0.531251 21.8144 0.515625 21.6193 0.635416C20.993 1.02083 20.3975 1.29687 19.7763 1.48958C18.8368 0.567708 17.5637 0 16.1571 0C13.2822 0 10.9515 2.36458 10.9515 5.27604C10.9515 5.28125 10.9515 5.39063 10.9515 5.55729L10.4074 5.51042C5.08375 4.86979 3.56419 1.23958 3.50258 1.08333C3.39991 0.822917 3.17916 0.630208 2.90708 0.572917C2.63499 0.515625 2.35264 0.598959 2.15756 0.796875C2.04976 0.911459 1.09489 1.93229 1.09489 3.89063C1.09489 5.28125 1.71093 6.41146 2.50152 7.29167C2.1319 7.0625 1.91628 6.88021 1.91115 6.875C1.6596 6.65104 1.29511 6.60417 0.997355 6.75521C0.699603 6.91146 0.519924 7.23437 0.550727 7.57813C0.560994 7.69271 0.797143 9.91667 3.32804 11.5937L2.86601 11.6823C2.58366 11.7292 2.35264 11.9271 2.24997 12.1979C2.14216 12.4635 2.18323 12.7708 2.35778 13C2.41425 13.0781 3.48205 14.4896 5.8076 15.3021C4.56525 15.7187 2.86087 16.1094 0.822811 16.1094C0.49939 16.1094 0.206771 16.3021 0.0732967 16.599C-0.0601792 16.8958 -0.00884189 17.2448 0.206771 17.4948C0.294043 17.5937 2.42965 20 7.9432 20C17.0914 20 21.3575 11.3802 21.3575 5.55729V5.27604C21.3575 5.19792 21.3472 5.11458 21.3472 5.03646C22.492 3.91146 22.9232 3.06771 22.9438 3.02604C23.0464 2.8125 23.0054 2.5625 22.8462 2.39063Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTwitter);\nexport default __webpack_public_path__ + \"static/media/twitter.40dbf92a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgReddit(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 28,\n viewBox: \"0 0 31 28\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.6001 0C17.1048 0.00656311 16.6821 0.347867 16.5765 0.833567L14.9915 8.421C11.5375 8.51289 8.42032 9.55649 6.12207 11.2171C5.48807 10.7642 4.71538 10.5016 3.87665 10.5016C1.7369 10.5016 0 12.2213 0 14.3479C0 15.8575 0.871751 17.1571 2.14636 17.7872C2.13315 17.925 2.11334 18.0628 2.11334 18.2007C2.11334 23.6156 8.10993 28 15.5 28C22.8901 28 28.8867 23.6156 28.8867 18.2007C28.8867 18.0628 28.8669 17.925 28.8602 17.7872C30.1282 17.1571 31 15.8575 31 14.3479C31 12.2213 29.2631 10.5016 27.1233 10.5016C26.2846 10.5016 25.5119 10.7642 24.8779 11.2171C22.8306 9.74027 20.1361 8.74918 17.1312 8.48008L18.4389 2.27098L22.6325 3.06517C22.9099 4.11533 23.8675 4.89639 25.01 4.89639C26.3705 4.89639 27.4734 3.80028 27.4734 2.44819C27.4734 1.09611 26.3705 0 25.01 0C24.1977 0 23.4778 0.400375 23.0288 1.00422L17.8115 0.019691C17.7388 0.00656309 17.6728 0 17.6001 0ZM10.2167 14C11.5771 14 12.68 15.0961 12.68 16.4482C12.68 17.8068 11.5771 18.903 10.2167 18.903C8.8562 18.903 7.7533 17.8068 7.7533 16.4482C7.7533 15.0961 8.8562 14 10.2167 14ZM20.7833 14C22.1438 14 23.2467 15.0961 23.2467 16.4482C23.2467 17.8068 22.1438 18.903 20.7833 18.903C19.4229 18.903 18.32 17.8068 18.32 16.4482C18.32 15.0961 19.4229 14 20.7833 14ZM10.9233 21.0033C11.1941 21.0033 11.4648 21.1017 11.6696 21.3118C11.7026 21.3446 12.8649 22.4013 15.5 22.4013C18.1549 22.4013 19.3172 21.3183 19.3304 21.3118C19.7465 20.8983 20.4135 20.8983 20.823 21.3118C21.239 21.7187 21.239 22.3816 20.823 22.7951C20.6513 22.9658 19.0068 24.5016 15.5 24.5016C11.9932 24.5016 10.3487 22.9658 10.177 22.7951C9.76097 22.3816 9.76097 21.7187 10.177 21.3118C10.3818 21.1017 10.6525 21.0033 10.9233 21.0033Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgReddit);\nexport default __webpack_public_path__ + \"static/media/reddit.eb0a6899.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTelegram(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 20,\n viewBox: \"0 0 24 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.61678 8.59848C8.99837 5.3445 18.5559 1.37905 19.8779 0.833045C23.3374 -0.60643 24.4006 -0.330669 23.8717 2.85162C23.4916 5.14043 22.3899 12.7073 21.5195 17.4228C20.9962 20.2135 19.8339 20.5445 18.005 19.3366C17.1236 18.7575 12.6837 15.8124 11.7196 15.123C10.8383 14.4943 9.62085 13.7387 11.1467 12.244C11.6866 11.7146 15.2397 8.3172 18.005 5.67541C18.3686 5.32795 17.9114 4.75988 17.4927 5.03565C13.7633 7.51198 8.59624 10.9535 7.9352 11.4002C6.94364 12.0731 5.98514 12.3874 4.27195 11.8911C2.97741 11.5216 1.71043 11.0748 1.22016 10.9038C-0.67482 10.253 -0.223111 9.40922 1.61678 8.59848Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTelegram);\nexport default __webpack_public_path__ + \"static/media/telegram.dd717f6c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDiscord(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 20,\n viewBox: \"0 0 28 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.1407 2.15637C24.1292 2.14492 24.1063 2.13347 24.0892 2.1163C22.629 0.942749 20.6765 0.347389 19.2965 0.0611576C17.9337 -0.230797 16.571 0.547751 16.1301 1.85869C16.1243 1.88159 16.1129 1.90449 16.1072 1.92738C18.3975 2.15637 20.4417 2.78608 22.1022 3.77071C22.5374 4.02832 22.6806 4.58933 22.4229 5.03013C22.2511 5.31636 21.9476 5.47665 21.6327 5.47665C21.4781 5.47665 21.3121 5.43085 21.1632 5.34498C19.2965 4.2344 16.8172 3.65049 14 3.65049C11.1828 3.65049 8.70348 4.2344 6.83681 5.34498C6.39591 5.60259 5.83476 5.4652 5.5771 5.03013C5.31943 4.58933 5.46258 4.02832 5.89775 3.77071C7.55828 2.78608 9.60245 2.15637 11.8928 1.92738C11.8871 1.90449 11.8757 1.88159 11.8699 1.85869C11.429 0.547751 10.0663 -0.230797 8.70348 0.0611576C7.32352 0.347389 5.37096 0.942749 3.91084 2.1163C3.89366 2.13347 3.87076 2.14492 3.8593 2.15637C2.50797 3.41578 0 9.81591 0 15.6321C0 15.7867 0.0400807 15.9412 0.114519 16.0786C1.609 18.7005 5.11902 19.6622 6.56769 19.9485C6.74519 19.9828 6.9227 20 7.1002 20C7.96483 20 8.80082 19.5878 9.32188 18.8665L9.63681 18.4315C6.49325 17.6873 4.87853 16.342 4.78691 16.2618C4.40327 15.9355 4.35746 15.3631 4.68384 14.9738C5.01595 14.5902 5.58855 14.5444 5.97219 14.865C6.02372 14.9108 8.71493 17.0862 14 17.0862C19.308 17.0862 21.9992 14.8879 22.0278 14.865C22.4115 14.5444 22.9898 14.5902 23.3162 14.9795C23.6368 15.3688 23.5967 15.9412 23.2131 16.2618C23.1215 16.342 21.5067 17.6873 18.3632 18.4315L18.6781 18.8665C19.1992 19.5878 20.0352 20 20.8998 20C21.0773 20 21.2548 19.9828 21.4323 19.9485C22.881 19.6622 26.391 18.7005 27.8855 16.0786C27.9599 15.9412 28 15.7867 28 15.6321C28 9.81591 25.492 3.41578 24.1407 2.15637ZM10.0491 13.972C8.88098 13.972 7.93619 12.8958 7.93619 11.5562C7.93619 10.2166 8.88098 9.1404 10.0491 9.1404C11.2229 9.1404 12.1677 10.2166 12.1677 11.5562C12.1677 12.8958 11.2229 13.972 10.0491 13.972ZM17.9337 14.0235C16.7542 14.0235 15.798 12.9301 15.798 11.5791C15.798 10.2338 16.7542 9.1404 17.9337 9.1404C19.119 9.1404 20.0695 10.2338 20.0695 11.5791C20.0695 12.9301 19.119 14.0235 17.9337 14.0235Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDiscord);\nexport default __webpack_public_path__ + \"static/media/discord.1836c1fd.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgVote(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 21\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.22596 0.250477C9.10076 0.254165 8.97818 0.286963 8.86813 0.346225C8.75808 0.405486 8.66363 0.489551 8.59241 0.591635C8.59241 0.591635 7.75268 1.7987 6.73755 3.16939C5.72241 4.54009 4.48586 6.10723 3.89856 6.65725C2.78666 7.69886 2 9.11603 2 10.7202V14.1813C2 17.5236 4.75181 20.25 8.12531 20.25H13.1001C15.1072 20.25 16.8126 18.7586 17.0636 16.7858L17.3414 14.8183L17.7887 11.652L17.9718 10.3616C18.2166 8.62962 16.8352 7.05716 15.0704 7.05716H10.5586C10.9273 6.15239 11.1985 5.33324 11.3877 4.41138C11.3881 4.41138 11.3884 4.41138 11.3887 4.41138C11.4995 3.87132 11.5926 3.44763 11.5926 2.99727C11.5926 1.91208 11.0333 1.1329 10.491 0.743147C9.94858 0.35339 9.38512 0.260784 9.38512 0.260784C9.33255 0.252097 9.27923 0.248644 9.22596 0.250477ZM9.53077 2.01502C9.54213 2.02266 9.54112 2.01707 9.55261 2.02533C9.78204 2.1902 9.99474 2.3885 9.99474 2.99727C9.99474 3.19494 9.93183 3.56056 9.82205 4.09598C9.62587 5.0516 9.4032 5.79625 8.99085 6.75001C8.99085 6.75036 8.99085 6.7507 8.99085 6.75104C8.81772 7.1528 8.83492 7.60636 9.04702 7.98169C9.25913 8.35699 9.71175 8.6403 10.1893 8.6403H15.0704C15.8931 8.6403 16.5026 9.33459 16.3885 10.142L16.2064 11.4335L15.7591 14.5998L15.4803 16.5746C15.4795 16.5787 15.4788 16.5828 15.4782 16.5869C15.3272 17.782 14.3152 18.6669 13.1001 18.6669H8.12531C5.61533 18.6669 3.59791 16.6681 3.59791 14.1813V10.7202C3.59791 9.62887 4.13296 8.61606 4.99608 7.8075C5.82932 7.02716 6.99433 5.49857 8.02544 4.10629C8.84977 2.99324 9.2794 2.37341 9.53077 2.01502Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgVote);\nexport default __webpack_public_path__ + \"static/media/vote.99967bfd.svg\";\nexport { ForwardRef as ReactComponent };","import { Link } from 'react-router-dom';\n\nexport const Navigate = ({\n to,\n children,\n className,\n}: {\n to: string;\n children: any;\n className?: string;\n}) => {\n const href = to.startsWith('http');\n return href ? (\n \n {children}\n \n ) : (\n \n {children}\n \n );\n};\n","import { PageTradeQuery } from 'router/useRoutesTrade';\n\nexport abstract class BancorURL {\n static index = '/';\n static termsOfUse = '/terms-of-use';\n static privacyPolicy = '/privacy-policy';\n static notFound = '/404';\n static admin = '/debug';\n static welcome = '/welcome';\n static earn = '/earn';\n static earnV2 = this.earn + '/v2';\n static tokens = '/tokens';\n static vote = '/vote';\n static fiat = '/fiat';\n static portfolio = '/portfolio';\n static portfolioV1 = this.portfolio + '/v1';\n static portfolioV2 = this.portfolio + '/v2';\n static portfolioV2RewardsClaim = this.portfolioV2 + '/rewards/claim';\n static portfolioV2RewardsStake = (id: string, posGroupId?: string) =>\n `${this.portfolioV2}/rewards/stake/${id}${\n posGroupId ? `?posGroupId=${posGroupId}` : ''\n }`;\n\n static addLiquidityV2 = (id: string) => this.earnV2 + '/add-liquidity/' + id;\n\n static trade = (query?: PageTradeQuery) => {\n const path = '/trade';\n\n const from = query?.from ? `from=${query.from}` : '';\n const to = query?.to ? `to=${query.to}` : '';\n const limit = query?.limit ? 'limit=true' : '';\n const search = [from, to, limit].filter((x) => !!x).join('&');\n\n return [path, search].filter((x) => !!x).join('?');\n };\n}\n","import { Popover } from '@headlessui/react';\nimport { DropdownTransition } from 'components/transitions/DropdownTransition';\nimport { ReactComponent as IconMenu } from 'assets/icons/menu.svg';\nimport { ReactComponent as IconFiat } from 'assets/icons/fiat.svg';\nimport { ReactComponent as IconTwitter } from 'assets/icons/twitter.svg';\nimport { ReactComponent as IconReddit } from 'assets/icons/reddit.svg';\nimport { ReactComponent as IconTelegram } from 'assets/icons/telegram.svg';\nimport { ReactComponent as IconDiscord } from 'assets/icons/discord.svg';\nimport { ReactComponent as IconVote } from 'assets/icons/vote.svg';\nimport { useDispatch } from 'react-redux';\nimport { setSlippageTolerance } from 'store/user/user';\nimport { useAppSelector } from 'store';\nimport { useState } from 'react';\nimport { DarkMode } from './DarkMode';\nimport { Navigate } from 'components/navigate/Navigate';\nimport { BancorURL } from 'router/bancorURL.service';\n\nexport const SettingsMenu = () => {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const SettingsMenuContent = ({ mobile }: { mobile?: boolean }) => {\n const currentSlippage = useAppSelector(\n (state) => state.user.slippageTolerance\n );\n const slippages = [0.001, 0.005, 0.01];\n const [customSlippage, setCustomSlippage] = useState(\n slippages.includes(currentSlippage)\n ? ''\n : (currentSlippage * 100).toString()\n );\n\n const dispatch = useDispatch();\n\n const normalizedSlippage = Number(customSlippage) / 100;\n return (\n
\n
Slippage Tolerance
\n
\n
\n {slippages.map((slippage) => (\n {\n dispatch(setSlippageTolerance(slippage));\n setCustomSlippage('');\n }}\n className={`w-full border border-silver dark:border-grey text-black dark:text-white rounded-[12px] text-12 p-8 ${\n currentSlippage === slippage ? 'bg-fog dark:bg-grey' : ''\n }`}\n >\n +{slippage * 100}%\n \n ))}\n \n setCustomSlippage(event.target.value)}\n onBlur={() => {\n if (\n customSlippage.trim() !== '' &&\n !isNaN(Number(customSlippage))\n )\n dispatch(setSlippageTolerance(normalizedSlippage));\n\n slippages.includes(currentSlippage) && setCustomSlippage('');\n }}\n placeholder=\"Custom\"\n />\n %\n \n
\n {mobile ? (\n \n
\n \n Vote\n
\n
\n ) : (\n \n )}\n \n
\n \n Buy crypto with fiat\n
\n
\n
\n \n Help Center / FAQ\n \n Analytics\n \n Analytics V3\n \n Developers\n Terms Of Use\n Privacy Policy\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n );\n};\n","import { EthNetworks } from '../web3/types';\nimport { BancorURL } from 'router/bancorURL.service';\n\ndeclare global {\n interface Window {\n dataLayer: any;\n ethereum: any;\n }\n}\n\nexport const googleTagManager = () => {\n if (window.dataLayer) return;\n\n window.dataLayer = [\n {\n page: { class: 'App' },\n },\n ];\n\n init(window, document, 'script', 'dataLayer', 'GTM-TCBKR7W');\n sendGTMPath(undefined, window.location.pathname);\n};\n\nconst init = (w: any, d: any, s: any, l: any, i: any) => {\n w[l] = w[l] || [];\n w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });\n var f = d.getElementsByTagName(s)[0],\n j = d.createElement(s),\n dl = l !== 'dataLayer' ? '&l=' + l : '';\n j.async = true;\n j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;\n f.parentNode.insertBefore(j, f);\n};\n\nconst sendGTM = (data: {}) => {\n const dataLayer = window.dataLayer as {}[];\n if (dataLayer) dataLayer.push(data);\n};\n\nexport enum ConversionEvents {\n click,\n approvePop,\n approved,\n wallet_req,\n wallet_confirm,\n fail,\n success,\n}\n\nconst eventTxtMap = new Map([\n [ConversionEvents.click, 'Click'],\n [ConversionEvents.approvePop, 'Unlimited Popup'],\n [ConversionEvents.approved, 'Unlimited Popup Select'],\n [ConversionEvents.wallet_req, 'Wallet Confirmation Request'],\n [ConversionEvents.wallet_confirm, 'Wallet Confirmed'],\n [ConversionEvents.fail, 'Failed'],\n [ConversionEvents.success, 'Success'],\n]);\n\ninterface CurrentConversion {\n conversion_type: 'Limit' | 'Market';\n conversion_blockchain_network: 'Ropsten' | 'MainNet';\n conversion_token_pair: string;\n conversion_from_token: string;\n conversion_to_token: string;\n conversion_from_amount: string;\n conversion_from_amount_usd: string;\n conversion_to_amount: string;\n conversion_to_amount_usd: string;\n conversion_input_type: 'Fiat' | 'Token';\n conversion_rate: string;\n conversion_rate_percentage?: string;\n conversion_experation?: string;\n conversion_settings?: 'Regular' | 'Advanced';\n}\n\nlet currentConversion: CurrentConversion;\nexport const setCurrentConversion = (\n type: 'Limit' | 'Market',\n network: EthNetworks = EthNetworks.Mainnet,\n tokenPair: string,\n fromToken: string,\n toToken: string = '',\n fromAmount: string,\n fromAmountUsd: string,\n toAmount: string,\n toAmountUsd: string,\n usdToggle: boolean,\n rate: string,\n ratePercentage?: string,\n expiration?: string,\n settings?: 'Regular' | 'Advanced'\n) => {\n currentConversion = {\n conversion_type: type,\n conversion_blockchain_network:\n network === EthNetworks.Ropsten ? 'Ropsten' : 'MainNet',\n conversion_token_pair: tokenPair,\n conversion_from_token: fromToken,\n conversion_to_token: toToken,\n conversion_from_amount: fromAmount,\n conversion_from_amount_usd: fromAmountUsd,\n conversion_to_amount: toAmount,\n conversion_to_amount_usd: toAmountUsd,\n conversion_input_type: usdToggle ? 'Fiat' : 'Token',\n conversion_rate: rate,\n conversion_rate_percentage: ratePercentage,\n conversion_experation: expiration,\n conversion_settings: settings,\n };\n};\n\nexport const sendConversionApprovedEvent = (isUnlimited: boolean) => {\n const gtmData = {\n event: 'CE Conversion ' + eventTxtMap.get(ConversionEvents.approved),\n wallet_properties: undefined,\n event_properties: {\n ...currentConversion,\n conversion_unlimited: isUnlimited ? 'Unlimited' : 'Limited',\n },\n ga_event: {\n category: 'Conversion',\n },\n };\n sendGTM(gtmData);\n};\n\nexport const sendConversionSuccessEvent = (\n fromTokenPrice: string | null,\n transaction_hash?: string\n) => {\n const gtmData = {\n event: 'CE Conversion ' + eventTxtMap.get(ConversionEvents.success),\n wallet_properties: undefined,\n event_properties: {\n ...currentConversion,\n conversion_market_token_rate: fromTokenPrice,\n transaction_hash,\n },\n ga_event: {\n category: 'Conversion',\n },\n };\n sendGTM(gtmData);\n};\n\nexport const sendConversionFailEvent = (errorMsg: string) => {\n const gtmData = {\n event: 'CE Conversion ' + eventTxtMap.get(ConversionEvents.fail),\n wallet_properties: undefined,\n event_properties: {\n ...currentConversion,\n error: errorMsg,\n },\n ga_event: {\n category: 'Conversion',\n },\n };\n sendGTM(gtmData);\n};\n\nexport const sendConversionEvent = (\n event: ConversionEvents,\n transaction_hash?: string\n) => {\n const eventClickPrefix = event === ConversionEvents.click ? 'Swap ' : '';\n const gtmData = {\n event: `CE Conversion ${eventClickPrefix}${eventTxtMap.get(event)}`,\n wallet_properties: undefined,\n event_properties: {\n ...currentConversion,\n transaction_hash,\n },\n ga_event: {\n category: 'Conversion',\n },\n };\n sendGTM(gtmData);\n};\n\nexport enum WalletEvents {\n popup,\n click,\n connect,\n}\nconst walletTxtMap = new Map([\n [WalletEvents.popup, 'Wallet Connect Select Wallet Popup'],\n [WalletEvents.click, 'Wallet Connect Wallet Icon Click'],\n [WalletEvents.connect, 'Wallet Connect'],\n]);\n\nexport const sendWalletEvent = (\n walletEvent: WalletEvents,\n event_properties: {} | undefined = undefined,\n id: string = '',\n name: string = ''\n) => {\n const wallet = 'Wallet';\n const event = walletTxtMap.get(walletEvent);\n if (id && name)\n sendGTM({\n event: 'CE ' + event,\n ga_event: {\n category: wallet,\n },\n wallet_properties: {\n wallet_id: id,\n wallet_name: name,\n },\n });\n else\n sendGTM({\n event: 'CE ' + event,\n event_properties: event_properties,\n wallet_properties: undefined,\n ga_event: {\n category: wallet,\n },\n });\n};\n\nexport const sendInsight = (open: boolean) => {\n sendGTM({\n event: `CE Conversion Insights ${open ? 'Open' : 'Closed'}`,\n event_properties: undefined,\n wallet_properties: undefined,\n ga_event: {\n category: 'Conversion',\n },\n page: { swap_insights: open ? 'Open' : 'Closed' },\n });\n};\n\nexport const sendGTMPath = (\n from: string | undefined,\n to: string,\n darkMode: boolean = false\n) => {\n const item = localStorage.getItem('insightsExpanded');\n const open = item ? (JSON.parse(item) as boolean) : false;\n sendGTM({\n event: 'VP ' + to,\n page: {\n from_path: from,\n to_path: to,\n theme: darkMode ? 'Dark' : 'Light',\n currency: 'USD',\n swap_insights:\n to === BancorURL.trade() ? (open ? 'Open' : 'Closed') : undefined,\n },\n wallet_properties: undefined,\n ga_event: undefined,\n });\n};\n\ninterface CurrentLiquidity {\n liquidity_type:\n | 'Deposit Dual'\n | 'Withdraw Dual'\n | 'Deposit Single'\n | 'Withdraw Single';\n liquidity_blockchain_network: 'Ropsten' | 'MainNet';\n liquidity_pool: string;\n liquidity_token_symbol: string;\n liquidity_token_amount: string;\n liquidity_token_amount_usd?: number | string;\n liquidity_token_portion_percent: string;\n liquidity_bnt_amount?: string;\n liquidity_bnt_amount_usd?: string;\n liquidity_input_type?: 'Fiat' | 'Token';\n}\n\nlet currentLiquidity: CurrentLiquidity;\nexport const setCurrentLiquidity = (\n type: 'Deposit Dual' | 'Withdraw Dual' | 'Deposit Single' | 'Withdraw Single',\n network: EthNetworks = EthNetworks.Mainnet,\n pool: string,\n tokenSymbol: string,\n tokenAmount: string,\n tokenAmountUsd?: string,\n bntAmount?: string,\n bntAmountUsd?: string,\n usdToggle?: boolean,\n withdrawl_percentage?: string\n) => {\n currentLiquidity = {\n liquidity_type: type,\n liquidity_blockchain_network:\n network === EthNetworks.Ropsten ? 'Ropsten' : 'MainNet',\n liquidity_pool: pool,\n liquidity_token_symbol: tokenSymbol,\n liquidity_token_amount: tokenAmount,\n liquidity_token_amount_usd: tokenAmountUsd,\n liquidity_bnt_amount: bntAmount,\n liquidity_token_portion_percent: withdrawl_percentage\n ? withdrawl_percentage\n : 'N/A',\n liquidity_bnt_amount_usd: bntAmountUsd,\n liquidity_input_type: usdToggle ? 'Fiat' : 'Token',\n };\n};\n\nconst getLiquidityEventLabel = (event: ConversionEvents) => {\n const type = currentLiquidity.liquidity_type\n .replace(' Dual', '')\n .replace(' Single', '');\n return `CE Liquidity ${type} ${eventTxtMap.get(event)}`;\n};\n\nexport const sendLiquidityApprovedEvent = (isUnlimited: boolean) => {\n const gtmData = {\n event: getLiquidityEventLabel(ConversionEvents.approved),\n wallet_properties: undefined,\n event_properties: {\n ...currentLiquidity,\n liquidity_unlimited: isUnlimited ? 'Unlimited' : 'Limited',\n },\n ga_event: {\n category: 'Liquidity',\n },\n };\n sendGTM(gtmData);\n};\n\nexport const sendLiquiditySuccessEvent = (transaction_hash: string) => {\n const gtmData = {\n event: getLiquidityEventLabel(ConversionEvents.success),\n wallet_properties: undefined,\n event_properties: {\n ...currentLiquidity,\n transaction_hash,\n },\n ga_event: {\n category: 'Liquidity',\n },\n };\n sendGTM(gtmData);\n};\n\nexport const sendLiquidityFailEvent = (errorMsg: string) => {\n const gtmData = {\n event: getLiquidityEventLabel(ConversionEvents.fail),\n wallet_properties: undefined,\n event_properties: {\n ...currentLiquidity,\n error: errorMsg,\n },\n ga_event: {\n category: 'Liquidity',\n },\n };\n sendGTM(gtmData);\n};\n\nexport const sendLiquidityPoolClickEvent = (\n type: 'Withdraw' | 'Deposit',\n pool: string,\n tokenSymbol: string | undefined,\n network: EthNetworks = EthNetworks.Mainnet\n) => {\n const gtmData = {\n event: `CE Liquidity ${type} Pool Click`,\n wallet_properties: undefined,\n event_properties: {\n liquidity_type: 'Withdraw Single',\n liquidity_blockchain_network:\n network === EthNetworks.Ropsten ? 'Ropsten' : 'MainNet',\n liquidity_pool: pool,\n liquidity_token_symbol: tokenSymbol,\n },\n ga_event: {\n category: 'Liquidity',\n },\n };\n sendGTM(gtmData);\n};\n\nexport const sendLiquidityEvent = (\n event: ConversionEvents,\n transaction_hash?: string\n) => {\n const gtmData = {\n event: getLiquidityEventLabel(event),\n wallet_properties: undefined,\n event_properties: {\n ...currentLiquidity,\n transaction_hash,\n },\n ga_event: {\n category: 'Liquidity',\n },\n };\n sendGTM(gtmData);\n};\n","export default __webpack_public_path__ + \"static/media/metamask.02e3ec27.png\";","export default __webpack_public_path__ + \"static/media/fortmatic.2393c835.svg\";","export default __webpack_public_path__ + \"static/media/portis.f44aba13.png\";","export default __webpack_public_path__ + \"static/media/walletConnect.cc6e5709.svg\";","export default __webpack_public_path__ + \"static/media/coinbaseWallet.a3a7d7fd.svg\";","export default __webpack_public_path__ + \"static/media/ledger.7a656384.svg\";","export default __webpack_public_path__ + \"static/media/trezor.c0ea4627.svg\";","export default __webpack_public_path__ + \"static/media/gnosisSafe.ac694b37.svg\";","export default __webpack_public_path__ + \"static/media/torus.fadfad62.svg\";","export default __webpack_public_path__ + \"static/media/imposter.7a7fa9a5.svg\";","import { Web3Provider } from '@ethersproject/providers';\nimport { AbstractConnector } from '@web3-react/abstract-connector';\nimport {\n injected,\n walletconnect,\n walletlink,\n frame,\n fortmatic,\n portis,\n gnosisSafe,\n torus,\n} from 'services/web3/wallet/connectors';\n\nimport metamaskLogo from 'assets/logos/metamask.png';\nimport fortmaticLogo from 'assets/logos/fortmatic.svg';\nimport portisLogo from 'assets/logos/portis.png';\nimport walletConnectLogo from 'assets/logos/walletConnect.svg';\nimport coinbaseWalletLogo from 'assets/logos/coinbaseWallet.svg';\nimport ledgerLogo from 'assets/logos/ledger.svg';\nimport trezorLogo from 'assets/logos/trezor.svg';\nimport frameLogo from 'assets/logos/frame.png';\nimport gnosisSafeLogo from 'assets/logos/gnosisSafe.svg';\nimport torusLogo from 'assets/logos/torus.svg';\nimport imposterLogo from 'assets/logos/imposter.svg';\nimport { isForkAvailable } from '../config';\n\nexport const getLibrary = (provider: any): Web3Provider => {\n const library = new Web3Provider(\n provider,\n typeof provider.chainId === 'string'\n ? parseInt(provider.chainId)\n : typeof provider.chainId === 'number'\n ? provider.chainId\n : 'any'\n );\n library.pollingInterval = 15000;\n return library;\n};\n\nexport interface WalletInfo {\n connector?: AbstractConnector;\n name: string;\n icon: string;\n mobile?: boolean;\n url?: string;\n}\n\nexport const SUPPORTED_WALLETS: WalletInfo[] = [\n {\n connector: injected,\n name: 'MetaMask',\n icon: metamaskLogo,\n mobile: true,\n },\n ...(isForkAvailable\n ? [\n {\n connector: injected,\n name: 'Imposter',\n icon: imposterLogo,\n mobile: true,\n },\n ]\n : []),\n {\n connector: walletconnect,\n name: 'WalletConnect',\n icon: walletConnectLogo,\n mobile: true,\n },\n {\n connector: walletlink,\n name: 'Coinbase Wallet',\n icon: coinbaseWalletLogo,\n mobile: true,\n },\n {\n name: 'Ledger',\n icon: ledgerLogo,\n url: 'https://www.ledger.com/academy/security/the-safest-way-to-use-metamask',\n },\n {\n name: 'Trezor',\n icon: trezorLogo,\n url: 'https://wiki.trezor.io/Apps:MetaMask',\n },\n {\n connector: gnosisSafe,\n name: 'GnosisSafe',\n icon: gnosisSafeLogo,\n },\n {\n connector: frame,\n name: 'Frame',\n icon: frameLogo,\n },\n {\n connector: fortmatic,\n name: 'Fortmatic',\n icon: fortmaticLogo,\n mobile: true,\n },\n {\n connector: portis,\n name: 'Portis',\n icon: portisLogo,\n },\n {\n connector: torus,\n name: 'Torus',\n icon: torusLogo,\n },\n];\n","export default \"data:image/png;base64,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\"","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgChevronRight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"100%\",\n height: \"100%\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 5l7 7-7 7\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevronRight);\nexport default __webpack_public_path__ + \"static/media/chevronRight.9337acad.svg\";\nexport { ForwardRef as ReactComponent };","import { useCallback, useMemo, useState } from 'react';\nimport { SUPPORTED_WALLETS, WalletInfo } from 'services/web3/wallet/utils';\nimport { sendWalletEvent, WalletEvents } from 'services/api/googleTagManager';\nimport { setAutoLoginLS } from 'utils/localStorage';\nimport { setSigner } from 'services/web3';\nimport { Web3Provider } from '@ethersproject/providers';\nimport { useWeb3React } from '@web3-react/core';\nimport useAsyncEffect from 'use-async-effect';\nimport { isMobile } from 'react-device-detect';\nimport { useAppSelector } from 'store';\nimport { openWalletModal } from 'store/user/user';\nimport { useDispatch } from 'react-redux';\nimport { openNewTab, wait } from 'utils/pureFunctions';\nimport { WalletConnectConnector } from '@web3-react/walletconnect-connector';\nimport { setUser } from 'services/observables/user';\nimport { isForkAvailable } from 'services/web3/config';\n\nexport interface UseWalletConnect {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n setSelectedWallet: (wallet: WalletInfo) => void;\n handleConnect: (wallet: WalletInfo) => void;\n handleDisconnect: () => void;\n handleOpenModal: () => void;\n reset: () => void;\n isPending: boolean;\n isError: boolean;\n account?: string | null;\n selectedWallet?: WalletInfo;\n SUPPORTED_WALLETS: WalletInfo[];\n title: string;\n handleWalletButtonClick: () => void;\n}\n\nexport const useWalletConnect = (): UseWalletConnect => {\n const { activate, deactivate, connector } = useWeb3React();\n const account = useAppSelector((state) => state.user.account);\n\n const [isPending, setIsPending] = useState(false);\n const [isError, setIsError] = useState(false);\n const [selectedWallet, setSelectedWallet] = useState();\n\n const isOpen = useAppSelector((state) => state.user.walletModal);\n const dispatch = useDispatch();\n\n const setIsOpen = useCallback(\n (value: boolean) => {\n dispatch(openWalletModal(value));\n },\n [dispatch]\n );\n\n const reset = () => {\n setIsError(false);\n setIsPending(false);\n };\n\n const handleOpenModal = useCallback(() => {\n sendWalletEvent(WalletEvents.popup);\n reset();\n setIsOpen(true);\n }, [setIsOpen]);\n\n const handleConnect = useCallback(\n async (wallet: WalletInfo) => {\n const { connector, url } = wallet;\n if (url) {\n setIsOpen(false);\n return openNewTab(url);\n }\n\n sendWalletEvent(WalletEvents.click, {\n wallet_name: wallet.name,\n });\n setIsPending(true);\n setSelectedWallet(wallet);\n\n if (\n connector instanceof WalletConnectConnector &&\n connector.walletConnectProvider?.wc?.uri\n )\n connector.walletConnectProvider = undefined;\n\n if (connector)\n try {\n await activate(connector, undefined, true);\n setIsOpen(false);\n setAutoLoginLS(true);\n const account = await connector.getAccount();\n setSigner(\n new Web3Provider(await connector.getProvider()).getSigner(),\n isForkAvailable ? account : undefined\n );\n sendWalletEvent(\n WalletEvents.connect,\n undefined,\n account || '',\n wallet.name\n );\n await wait(500);\n setIsPending(false);\n } catch (e: any) {\n console.error('failed to connect wallet. ', e.message);\n setIsError(true);\n }\n },\n [activate, setIsOpen]\n );\n\n const handleDisconnect = useCallback(() => {\n setUser(undefined, dispatch);\n setSelectedWallet(undefined);\n deactivate();\n setAutoLoginLS(false);\n setIsPending(false);\n setIsError(false);\n }, [deactivate, dispatch]);\n\n const handleWalletButtonClick = useCallback(() => {\n if (account) {\n handleDisconnect();\n } else {\n handleOpenModal();\n }\n }, [account, handleDisconnect, handleOpenModal]);\n\n const isMetaMaskMobile =\n isMobile && window.ethereum && window.ethereum.isMetaMask;\n\n useAsyncEffect(\n async (isMounted) => {\n if (selectedWallet) return;\n\n if (isMetaMaskMobile) {\n const wallet = SUPPORTED_WALLETS.find(\n (wallet) => wallet.name === 'MetaMask'\n )!;\n await handleConnect(wallet);\n return;\n }\n\n if (connector) {\n const account = isForkAvailable\n ? await connector.getAccount()\n : undefined;\n\n setSigner(\n new Web3Provider(await connector.getProvider()).getSigner(),\n account\n );\n const wallet = SUPPORTED_WALLETS.find(\n (x) => typeof x.connector === typeof connector\n )!;\n if (isMounted()) {\n setSelectedWallet(wallet);\n }\n }\n },\n [connector, selectedWallet]\n );\n\n const title = useMemo(\n () =>\n isError\n ? 'Wallet Error'\n : isPending\n ? 'Connecting to ...'\n : 'Connect Wallet',\n [isError, isPending]\n );\n\n return {\n isOpen,\n setIsOpen,\n setSelectedWallet,\n handleConnect,\n handleDisconnect,\n handleOpenModal,\n isPending,\n isError,\n account,\n selectedWallet,\n SUPPORTED_WALLETS,\n title,\n reset,\n handleWalletButtonClick,\n };\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgWallet(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 21\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.125 4.50006C4.27441 4.50006 3.57476 5.17149 3.51128 6.00656C3.50423 6.04606 3.5 6.08555 3.5 6.12505V15.875C3.5 16.7665 4.23351 17.5 5.125 17.5H14.875C15.7665 17.5 16.5 16.7665 16.5 15.875V8.29171C16.5 7.40022 15.7665 6.66671 14.875 6.66671H5.125C4.8189 6.66671 4.58333 6.43115 4.58333 6.12505C4.58333 5.81895 4.8189 5.58339 5.125 5.58339H14.1528C14.3474 5.58621 14.5294 5.48323 14.6281 5.31537C14.7269 5.1461 14.7269 4.93734 14.6281 4.76807C14.5294 4.60021 14.3474 4.49724 14.1528 4.50006H5.125ZM4.58333 7.75004H14.875C15.1811 7.75004 15.4167 7.98561 15.4167 8.29171V15.875C15.4167 16.1811 15.1811 16.4167 14.875 16.4167H5.125C4.8189 16.4167 4.58333 16.1811 4.58333 15.875V7.75004ZM13.4306 11C12.9326 11 12.5278 11.4049 12.5278 11.9028C12.5278 12.4007 12.9326 12.8056 13.4306 12.8056C13.9285 12.8056 14.3333 12.4007 14.3333 11.9028C14.3333 11.4049 13.9285 11 13.4306 11Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWallet);\nexport default __webpack_public_path__ + \"static/media/wallet.fb418e7c.svg\";\nexport { ForwardRef as ReactComponent };","import { Dialog, Transition } from '@headlessui/react';\nimport { Fragment } from 'react';\nimport { ReactComponent as IconTimes } from 'assets/icons/times.svg';\nimport { ReactComponent as IconChevron } from 'assets/icons/chevronRight.svg';\n\ninterface ModalProps {\n title?: string;\n children: JSX.Element;\n separator?: boolean;\n titleElement?: any;\n setIsOpen: Function;\n isOpen: boolean;\n onBackClick?: Function;\n showBackButton?: boolean;\n onClose?: Function;\n large?: boolean;\n}\n\nexport const Modal = ({\n title,\n children,\n separator,\n titleElement,\n setIsOpen,\n isOpen,\n showBackButton,\n onBackClick,\n onClose,\n large,\n}: ModalProps) => {\n return (\n <>\n \n (onClose ? onClose() : setIsOpen(false))}\n >\n
\n \n \n \n\n {/* This element is to trick the browser into centering the modal contents. */}\n \n \n \n \n {showBackButton && (\n \n )}\n {titleElement && titleElement}\n {title && title}\n
\n setIsOpen(false)}\n className=\"px-5 py-2\"\n >\n \n \n
\n
\n
\n {separator &&
}\n {children}\n
\n
\n \n \n \n
\n \n );\n};\n","import { useState, useEffect, useMemo } from 'react';\nimport { ropstenImage } from 'services/web3/config';\n\nexport const useImage = (\n src: string = ropstenImage,\n fallbackSrc: string = ropstenImage\n) => {\n const [hasLoaded, setHasLoaded] = useState(false);\n const [hasError, setHasError] = useState(false);\n\n const source = useMemo(\n () => (src && !hasError ? src : fallbackSrc),\n [fallbackSrc, hasError, src]\n );\n\n useEffect(() => {\n setHasLoaded(false);\n setHasError(false);\n\n const image = new Image();\n image.src = src;\n\n const handleError = () => {\n setHasError(true);\n setHasLoaded(true);\n };\n\n const handleLoad = () => {\n setHasLoaded(true);\n setHasError(false);\n };\n\n image.addEventListener('error', handleError);\n image.addEventListener('load', handleLoad);\n\n return () => {\n image.removeEventListener('error', handleError);\n image.removeEventListener('load', handleLoad);\n };\n }, [src]);\n\n return { hasLoaded, hasError, source };\n};\n","import { DetailedHTMLProps, ImgHTMLAttributes } from 'react';\nimport { useImage } from 'hooks/useImage';\n\ntype ImgAttributes = DetailedHTMLProps<\n ImgHTMLAttributes,\n HTMLImageElement\n>;\n\ninterface ImageProps extends ImgAttributes {\n src?: string;\n alt: string;\n lazy?: boolean;\n fallbackSrc?: string;\n}\n\nexport const Image = ({\n src,\n alt,\n lazy = true,\n fallbackSrc,\n ...props\n}: ImageProps) => {\n const { hasLoaded, source } = useImage(src, fallbackSrc);\n\n return hasLoaded ? (\n {alt}\n ) : (\n
\n );\n};\n","import { UseWalletConnect } from './useWalletConnect';\nimport { Image } from 'components/image/Image';\nimport { useDispatch } from 'react-redux';\nimport { useState } from 'react';\nimport { setUser } from 'services/observables/user';\nimport { WalletInfo } from 'services/web3/wallet/utils';\nimport { setSigner } from 'services/web3';\nimport { providers, utils } from 'ethers';\nimport { getTenderlyRpcLS } from 'utils/localStorage';\n\nexport const WalletConnectModalList = ({\n handleConnect,\n SUPPORTED_WALLETS,\n setSelectedWallet,\n}: UseWalletConnect) => {\n const className =\n 'flex items-center w-full px-16 py-10 border-2 border-silver dark:border-grey rounded-20 hover:border-primary dark:hover:border-primary focus:border-primary dark:focus:border-primary';\n return (\n
\n {SUPPORTED_WALLETS.map((wallet) => {\n return wallet.name === 'Imposter' ? (\n \n ) : (\n handleConnect(wallet)}\n className={`${!wallet.mobile ? 'hidden md:flex' : ''} ${className}`}\n >\n \n {wallet.name}\n \n );\n })}\n
\n );\n};\n\nexport const ImposterWallet = ({\n wallet,\n className,\n setSelectedWallet,\n}: {\n wallet: WalletInfo;\n className: string;\n setSelectedWallet: Function;\n}) => {\n const [account, setAccount] = useState('');\n const dispatch = useDispatch();\n\n return (\n
\n \"Wallet\n setAccount(event.target.value)}\n className=\"w-full mr-10 dark:bg-charcoal\"\n />\n {\n if (account && utils.isAddress(account)) {\n setSelectedWallet(wallet);\n setUser(account, dispatch);\n setSigner(\n new providers.StaticJsonRpcProvider(\n getTenderlyRpcLS()\n ).getUncheckedSigner(account)\n );\n }\n }}\n >\n Set User\n \n
\n );\n};\n","import { UseWalletConnect } from './useWalletConnect';\nimport { Image } from 'components/image/Image';\n\nexport const WalletConnectModalPending = ({\n selectedWallet,\n}: UseWalletConnect) => {\n return (\n \n \n

{selectedWallet?.name}

\n
\n );\n};\n","import { UseWalletConnect } from './useWalletConnect';\nimport { Image } from 'components/image/Image';\nimport { isMobile } from 'react-device-detect';\n\nexport const WalletConnectModalError = ({\n selectedWallet,\n}: UseWalletConnect) => {\n const showMetaMaskMobileError =\n isMobile && selectedWallet?.name === 'MetaMask';\n return (\n
\n
\n \n

{selectedWallet?.name}

\n
\n {showMetaMaskMobileError ? (\n
\n

Use MetaMask In-App Browser

\n

1. Open MetaMask App on your mobile device

\n

2. Find the In-App Browser in the MetaMask Menu

\n

3. Navigate to https://app.bancor.network

\n
\n ) : (\n
\n

\n {`Failed Connecting to ${\n selectedWallet ? selectedWallet.name : 'Wallet'\n }`}\n

\n

Please try again or contact support

\n
\n )}\n
\n );\n};\n","import { Modal } from 'components/modal/Modal';\nimport { UseWalletConnect } from './useWalletConnect';\nimport { WalletConnectModalList } from './WalletConnectModalList';\nimport { WalletConnectModalPending } from './WalletConnectModalPending';\nimport { WalletConnectModalError } from './WalletConnectModalError';\n\nexport const WalletConnectModal = (props: UseWalletConnect) => {\n const { isPending, isError } = props;\n\n return (\n {\n props.setIsOpen(false);\n props.reset();\n }}\n >\n
\n {isError ? (\n \n ) : isPending ? (\n \n ) : (\n \n )}\n
\n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDisconnect(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.98594 0C9.57344 0.00936928 9.24531 0.346685 9.25 0.763645V8.75615C9.24531 9.02788 9.39063 9.28086 9.62031 9.41672C9.85469 9.55259 10.1453 9.55259 10.3797 9.41672C10.6094 9.28086 10.7547 9.02788 10.75 8.75615V0.763645C10.7547 0.557508 10.675 0.365426 10.5297 0.220192C10.3844 0.0796436 10.1922 0 9.98594 0ZM13.2531 2.67041C12.8922 2.66573 12.5781 2.91403 12.5078 3.27009C12.4328 3.62146 12.6203 3.97751 12.9531 4.11338C15.625 5.26119 17.5 7.90818 17.5 11.0049C17.5 15.1558 14.1531 18.5008 10 18.5008C5.84687 18.5008 2.5 15.1558 2.5 11.0049C2.5 7.90818 4.375 5.26119 7.04687 4.11338C7.42656 3.9494 7.60469 3.50902 7.44063 3.12954C7.27656 2.75006 6.83594 2.57203 6.45625 2.736C3.24531 4.11338 1 7.30382 1 11.0049C1 15.9663 5.03594 20 10 20C14.9641 20 19 15.9663 19 11.0049C19 7.30382 16.7547 4.11338 13.5438 2.736C13.4547 2.69384 13.3563 2.6751 13.2531 2.67041Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDisconnect);\nexport default __webpack_public_path__ + \"static/media/disconnect.466d8f04.svg\";\nexport { ForwardRef as ReactComponent };","import { ButtonHTMLAttributes, memo } from 'react';\n\nexport enum ButtonVariant {\n Primary,\n Secondary,\n Tertiary,\n Error,\n Warning,\n}\n\nexport enum ButtonSize {\n Full,\n ExtraLarge,\n Large,\n Meduim,\n Small,\n ExtraSmall,\n}\n\ninterface ButtonProps extends ButtonHTMLAttributes {\n variant?: ButtonVariant;\n size?: ButtonSize;\n className?: string;\n}\n\nconst disabledText =\n 'disabled:text-black-disabled dark:disabled:text-white-low';\n\nconst getVariantStyle = (variant: ButtonVariant) => {\n switch (variant) {\n case ButtonVariant.Primary:\n return `bg-primary hover:bg-primary-dark disabled:bg-fog dark:disabled:bg-grey text-white ${disabledText}`;\n case ButtonVariant.Secondary:\n return `bg-black hover:bg-grey disabled:bg-fog dark:bg-white dark:hover:bg-silver dark:disabled:bg-grey text-white dark:text-charcoal ${disabledText}`;\n case ButtonVariant.Tertiary:\n return 'bg-fog hover:bg-black disabled:bg-fog text-charcoal hover:text-white dark:bg-grey dark:text-white dark:hover:bg-white dark:hover:text-charcoal disabled:text-black-low dark:disabled:text-white-low dark:disabled:hover:bg-grey';\n }\n};\n\nconst getSizeStyle = (size: ButtonSize) => {\n switch (size) {\n case ButtonSize.Full:\n return 'w-full h-[53px]';\n case ButtonSize.ExtraLarge:\n return 'w-[428px] h-[53px]';\n case ButtonSize.Large:\n return 'w-[335px] h-[53px]';\n case ButtonSize.Meduim:\n return 'w-[266px] h-[47px]';\n case ButtonSize.Small:\n return 'w-[142px] h-[39px]';\n case ButtonSize.ExtraSmall:\n return 'w-[94px] h-[33px]';\n }\n};\n\nexport const Button = memo(\n ({\n variant = ButtonVariant.Primary,\n size = ButtonSize.Large,\n className,\n ...props\n }: ButtonProps) => {\n return (\n \n {props.children}\n \n );\n }\n);\n\nexport const ButtonToggle = ({\n labels,\n toggle,\n setToggle,\n onClass = 'bg-white dark:bg-charcoal',\n offClass = 'bg-fog dark:bg-black dark:text-white-low text-black-low',\n}: {\n labels: JSX.Element[];\n toggle: boolean;\n setToggle: Function;\n onClass?: string;\n offClass?: string;\n}) => {\n return (\n
\n {labels.map((label, index) => (\n setToggle()}\n >\n {label}\n \n ))}\n
\n );\n};\n\nexport const ButtonPercentages = ({\n percentages,\n onClick,\n selected,\n itemStyle,\n}: {\n percentages: number[];\n onClick: (percentage: number) => void;\n selected: number;\n itemStyle?: string;\n}) => {\n return (\n <>\n {percentages.map((percentage, index) => (\n onClick(percentage)}\n >\n {percentage}%\n \n ))}\n \n );\n};\n","import { Portal, Transition } from '@headlessui/react';\nimport { ReactNode, useRef, useState } from 'react';\nimport { Modifier, usePopper } from 'react-popper';\nimport * as PopperJS from '@popperjs/core';\n\ntype PopoverOptions = Omit, 'modifiers'> & {\n createPopper?: typeof PopperJS.createPopper;\n modifiers?: ReadonlyArray>;\n};\n\ninterface Props {\n children: ReactNode | string;\n buttonElement: (props: {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n }) => ReactNode;\n isOpen?: boolean;\n setIsOpen?: (open: boolean) => void;\n options?: PopoverOptions;\n hover?: boolean;\n showArrow?: boolean;\n className?: string;\n}\n\nlet timeout: NodeJS.Timeout;\nlet prevPopFunc: Function = () => {};\n\nconst defaultOptions: PopoverOptions = {\n placement: 'top',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 15],\n },\n },\n ],\n};\n\nexport const PopoverV3 = ({\n children,\n buttonElement,\n isOpen,\n setIsOpen,\n options = defaultOptions,\n hover = true,\n showArrow = true,\n className,\n}: Props) => {\n const popperElRef = useRef(null);\n const [targetElement, setTargetElement] = useState(\n null\n );\n const [popperElement, setPopperElement] = useState(\n null\n );\n const [arrowRef, setArrowRef] = useState(null);\n const { styles, attributes } = usePopper(targetElement, popperElement, {\n ...options,\n modifiers: [\n ...(options.modifiers as Modifier[]),\n {\n name: 'arrow',\n options: {\n element: arrowRef,\n },\n },\n ],\n });\n\n const [localOpen, setLocalOpen] = useState(false);\n\n const useLocalState = !setIsOpen;\n\n const handleOpen = (open: boolean) => {\n if (useLocalState) setLocalOpen(open);\n else setIsOpen(open);\n };\n\n const handleOnMouseEnter = () => {\n if (!hover) {\n return;\n }\n\n prevPopFunc();\n clearInterval(timeout);\n handleOpen(true);\n };\n\n const handleOnMouseLeave = (delay: number) => {\n if (!hover) {\n return;\n }\n\n prevPopFunc = () => handleOpen(false);\n timeout = setTimeout(() => handleOpen(false), delay);\n };\n\n return (\n
\n handleOnMouseEnter()}\n onMouseLeave={() => handleOnMouseLeave(600)}\n >\n {buttonElement({\n isOpen: useLocalState ? localOpen : !!isOpen,\n setIsOpen: (open: boolean) => handleOpen(open),\n })}\n
\n \n \n setPopperElement(popperElRef.current)}\n afterLeave={() => setPopperElement(null)}\n >\n handleOnMouseEnter()}\n onMouseLeave={() => handleOnMouseLeave(200)}\n >\n {children}\n \n \n \n \n \n \n );\n};\n","import { UseWalletConnect } from './useWalletConnect';\nimport { shortenString } from 'utils/pureFunctions';\nimport { Image } from 'components/image/Image';\nimport { ReactComponent as IconWallet } from 'assets/icons/wallet.svg';\nimport { ReactComponent as IconDisconnect } from 'assets/icons/disconnect.svg';\nimport { Button, ButtonVariant } from 'components/button/Button';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\nimport { useState } from 'react';\n\nexport const WalletConnectButton = ({\n handleWalletButtonClick,\n account,\n selectedWallet,\n}: UseWalletConnect) => {\n const buttonText = account ? shortenString(account) : 'Connect';\n const [isOpen, setIsOpen] = useState(false);\n\n const loggedIn = selectedWallet && account;\n\n return (\n (\n \n account ? setIsOpen(!isOpen) : handleWalletButtonClick()\n }\n >\n {loggedIn ? (\n \n ) : (\n \n )}\n {buttonText}\n \n )}\n options={{\n placement: 'bottom',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 10],\n },\n },\n ],\n }}\n >\n
\n Ethereum Network\n
\n {\n handleWalletButtonClick();\n setIsOpen(false);\n }}\n className=\"flex items-center gap-10\"\n >\n \n Disconnect\n \n
\n \n );\n};\n","import { NavigateFunction } from 'react-router-dom';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { PageTradeQuery } from 'router/useRoutesTrade';\n\nexport class GoToPage {\n constructor(navigate: NavigateFunction) {\n this.navigate = navigate;\n }\n\n private readonly navigate: NavigateFunction;\n\n index = (replace = false) => {\n const url = BancorURL.index;\n this.navigate(url, { replace });\n };\n\n welcome = (replace = false) => {\n const url = BancorURL.welcome;\n this.navigate(url, { replace });\n };\n\n earn = (replace = false) => {\n const url = BancorURL.earn;\n this.navigate(url, { replace });\n };\n\n earnV2 = (replace = false) => {\n const url = BancorURL.earnV2;\n this.navigate(url, { replace });\n };\n\n tokens = (replace = false) => {\n const url = BancorURL.tokens;\n this.navigate(url, { replace });\n };\n\n portfolio = (replace = false) => {\n const url = BancorURL.portfolio;\n this.navigate(url, { replace });\n };\n\n portfolioV2 = (replace = false) => {\n const url = BancorURL.portfolioV2;\n this.navigate(url, { replace });\n };\n\n portfolioV2RewardsStake = (\n id: string,\n posGroupId?: string,\n replace = false\n ) => {\n const url = BancorURL.portfolioV2RewardsStake(id, posGroupId);\n this.navigate(url, { replace });\n };\n\n portfolioV2RewardsClaim = (replace = false) => {\n const url = BancorURL.portfolioV2RewardsClaim;\n this.navigate(url, { replace });\n };\n\n portfolioV1 = (replace = false) => {\n const url = BancorURL.portfolioV1;\n this.navigate(url, { replace });\n };\n\n trade = (query: PageTradeQuery, replace = false) => {\n const url = BancorURL.trade(query);\n this.navigate(url, { replace });\n };\n\n addLiquidityV2 = (id: string, replace = false) => {\n const url = BancorURL.addLiquidityV2(id);\n this.navigate(url, { replace });\n };\n\n vote = (replace = false) => {\n const url = BancorURL.vote;\n this.navigate(url, { replace });\n };\n\n fiat = (replace = false) => {\n const url = BancorURL.fiat;\n this.navigate(url, { replace });\n };\n\n termsOfUse = (replace = false) => {\n const url = BancorURL.termsOfUse;\n this.navigate(url, { replace });\n };\n\n privacyPolicy = (replace = false) => {\n const url = BancorURL.privacyPolicy;\n this.navigate(url, { replace });\n };\n\n admin = (replace = false) => {\n const url = BancorURL.admin;\n this.navigate(url, { replace });\n };\n\n notFound = (replace = false) => {\n const url = BancorURL.notFound;\n this.navigate(url, { replace });\n };\n}\n","import { GoToPage } from 'router/goToPage.service';\nimport { useNavigate } from 'react-router-dom';\n\nexport const useNavigation = () => {\n const goToPage = new GoToPage(useNavigate());\n\n return { goToPage };\n};\n","import { useNavigation } from 'hooks/useNavigation';\n\nexport const NetworkIndicator = () => {\n const { goToPage } = useNavigation();\n\n return (\n goToPage.admin()}\n className=\"flex items-center h-[35px] px-20 text-12 rounded-full bg-fog border border-graphite text-charcoal dark:text-white text-opacity-50 dark:text-opacity-50 dark:border-grey dark:bg-black\"\n >\n
\n Tenderly Fork\n \n );\n};\n","import { NotificationsMenu } from 'elements/notifications/NotificationsMenu';\nimport { SettingsMenu } from 'elements/settings/SettingsMenu';\nimport { ReactComponent as IconBancor } from 'assets/icons/bancor.svg';\nimport { useWalletConnect } from '../walletConnect/useWalletConnect';\nimport { WalletConnectModal } from '../walletConnect/WalletConnectModal';\nimport { WalletConnectButton } from '../walletConnect/WalletConnectButton';\nimport { useEffect, useState } from 'react';\nimport { NetworkIndicator } from './NetworkIndicator';\nimport { isForkAvailable } from 'services/web3/config';\nimport 'elements/layoutHeader/LayoutHeader.css';\nimport { useAppSelector } from 'store/index';\nimport { getIsAppBusy } from 'store/bancor/bancor';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { Navigate } from 'components/navigate/Navigate';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\nexport const LayoutHeader = () => {\n const wallet = useWalletConnect();\n const [isTop, setIsTop] = useState(true);\n\n const isLoading = useAppSelector(getIsAppBusy);\n\n useEffect(() => {\n const listener = () => setIsTop(window.pageYOffset === 0);\n window.addEventListener('scroll', listener);\n\n return () => {\n window.removeEventListener('scroll', listener);\n };\n }, [isTop]);\n\n return (\n <>\n \n
\n
\n \n \n \n \n\n Earn\n \n\n Portfolio\n {isForkAvailable && }\n
\n
\n \n \n \n
\n
\n {isLoading && (\n
\n \n \n  \n \n \n  \n \n \n
\n )}\n {wallet.account && }\n \n \n
\n
\n \n \n \n );\n};\n\ninterface TopMenu {\n title: string;\n link: string;\n}\n\nconst TopMenuDropdown = ({\n items,\n className,\n}: {\n items: TopMenu[];\n className: string;\n}) => {\n return (\n (\n {items[0].title}\n )}\n showArrow={false}\n options={{\n placement: 'bottom-start',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [-30, 20],\n },\n },\n ],\n }}\n >\n
\n {items.map((item) => (\n \n {item.title}\n \n ))}\n
\n \n );\n};\n","import { Transition } from '@headlessui/react';\nimport { Fragment, useState } from 'react';\nimport {\n NotificationContent,\n NotificationContentProps,\n} from 'elements/notifications/NotificationContent';\n\nexport const NotificationAlert = ({\n data,\n onRemove,\n}: NotificationContentProps) => {\n const [show, setShow] = useState(true);\n\n const hide = (id: string) => {\n setShow(false);\n onRemove(id);\n };\n\n return (\n \n
\n \n
\n \n );\n};\n","import { useAppSelector } from 'store';\nimport { Notification, hideAlert } from 'store/notification/notification';\nimport { useDispatch } from 'react-redux';\nimport { wait } from 'utils/pureFunctions';\nimport { NotificationAlert } from 'elements/notifications/NotificationAlert';\n\nexport const NotificationAlerts = () => {\n const dispatch = useDispatch();\n\n const notifications = useAppSelector(\n (state) => state.notification.notifications\n );\n\n const hide = async (id: string) => {\n await wait(1000);\n dispatch(hideAlert(id));\n };\n\n return (\n \n
\n {notifications\n .filter((x) => x.showSeconds)\n .map((notification) => {\n return (\n \n );\n })}\n
\n
\n );\n};\n","import { web3 } from 'services/web3/index';\nimport { BigNumber } from 'ethers';\nimport { MultiCall, multicall } from 'services/web3/multicall/multicall';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\n\nexport const fetchTokenBalance = async (\n tokenId: string,\n user: string\n): Promise => {\n return await ContractsApi.Token(tokenId).read.balanceOf(user);\n};\n\nexport const fetchTokenBalanceMulticall = async (\n tokenIds: string[],\n user: string\n): Promise> => {\n const calls = tokenIds.map((tokenId) => buildTokenBalanceCall(tokenId, user));\n const res = await multicall(calls);\n if (!res || !res.length) {\n throw new Error('Multicall Error while fetching token balances');\n }\n return new Map(\n res.map((bn, idx) => {\n const tokenId = tokenIds[idx];\n const balanceWei = bn && bn.length ? bn[0].toString() : '0';\n return [tokenId, balanceWei];\n })\n );\n};\n\nexport const buildTokenBalanceCall = (\n address: string,\n user: string\n): MultiCall => {\n const contract = ContractsApi.Token(address).read;\n\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'balanceOf',\n methodParameters: [user],\n };\n};\n\nexport const buildTokenTotalSupplyCall = (address: string): MultiCall => {\n const contract = ContractsApi.Token(address).read;\n\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'totalSupply',\n methodParameters: [],\n };\n};\n\nexport const fetchETH = async (user: string) =>\n (await web3.provider.getBalance(user)).toString();\n","import { utils } from 'ethers';\nimport { ethToken, wethToken } from 'services/web3/config';\nimport { uniqBy } from 'lodash';\nimport { BehaviorSubject, combineLatest, from } from 'rxjs';\nimport { mapIgnoreThrown } from 'utils/pureFunctions';\nimport axios from 'axios';\nimport { shareReplay } from 'rxjs/operators';\nimport { switchMapIgnoreThrow } from 'services/observables/customOperators';\nimport { TokenList, TokenMinimal } from 'services/observables/tokens';\n\nconst buildTokenListTokens = (\n tokenLists: TokenList[],\n userPreferredListIds?: string[]\n): TokenMinimal[] => {\n const tokenListTokensMerged: TokenMinimal[] = tokenLists\n .filter((list) =>\n userPreferredListIds\n ? userPreferredListIds.some((id) => id === list.name)\n : true\n )\n .flatMap((list) => list.tokens)\n .filter((token) => !!token.address)\n .map((token) => ({\n ...token,\n address: utils.getAddress(token.address),\n }));\n\n tokenListTokensMerged.push(\n {\n symbol: 'ETH',\n address: ethToken,\n logoURI: 'https://cryptologos.cc/logos/ethereum-eth-logo.svg',\n decimals: 18,\n name: 'Ethereum',\n },\n {\n symbol: 'WETH',\n address: wethToken,\n logoURI: 'https://cryptologos.cc/logos/ethereum-eth-logo.svg',\n decimals: 18,\n name: 'Wrapped Ethereum',\n }\n );\n\n return uniqBy(tokenListTokensMerged, (x) => x.address);\n};\n\nexport const getLogoByURI = (uri: string | undefined) =>\n uri && uri.startsWith('ipfs') ? buildIpfsUri(uri.split('//')[1]) : uri;\n\nconst buildIpfsUri = (ipfsHash: string) => `https://ipfs.io/ipfs/${ipfsHash}`;\n\nexport const listOfLists = [\n {\n uri: 'https://tokens.1inch.eth.link',\n name: '1inch',\n },\n {\n uri: 'https://tokens.coingecko.com/ethereum/all.json',\n name: 'CoinGecko',\n },\n {\n uri: 'https://tokenlist.zerion.eth.link',\n name: 'Zerion',\n },\n {\n uri: 'https://zapper.fi/api/token-list',\n name: 'Zapper Token List',\n },\n {\n uri: 'https://raw.githubusercontent.com/compound-finance/token-list/master/compound.tokenlist.json',\n name: 'Compound',\n },\n {\n uri: 'https://yearn.science/static/tokenlist.json',\n name: 'Yearn',\n },\n {\n uri: 'https://uniswap.mycryptoapi.com',\n name: 'MyCrypto Token List',\n },\n {\n uri: 'https://tokenlist.aave.eth.link',\n name: 'Aave Token List',\n },\n {\n uri: 'https://defiprime.com/defiprime.tokenlist.json',\n name: 'Defiprime',\n },\n];\n\nexport const userPreferredListIds$ = new BehaviorSubject([]);\n\nexport const tokenListsNew$ = from(\n mapIgnoreThrown(listOfLists, async (list) => {\n const res = await axios.get(list.uri, { timeout: 10000 });\n return {\n ...res.data,\n logoURI: getLogoByURI(res.data.logoURI),\n };\n })\n).pipe(shareReplay(1));\n\nexport const tokenListTokens$ = combineLatest([\n tokenListsNew$,\n userPreferredListIds$,\n]).pipe(\n switchMapIgnoreThrow(async ([tokenLists, userPreferredListIds]) => {\n const allTokenListTokens: TokenMinimal[] = buildTokenListTokens(tokenLists);\n const userPreferredTokenListTokens: TokenMinimal[] = buildTokenListTokens(\n tokenLists,\n userPreferredListIds\n );\n\n return { allTokenListTokens, userPreferredTokenListTokens };\n }),\n shareReplay(1)\n);\n","import { timer } from 'rxjs';\n\nconst secondsToMilliseconds = (seconds: number) => seconds * 1000;\n\nexport const oneMinute$ = timer(0, secondsToMilliseconds(60));\n","import axios from 'axios';\nimport { utils } from 'ethers';\nimport { APIToken, WelcomeData } from 'services/api/bancorApi/bancorApi.types';\nimport { ethToken, wethToken } from 'services/web3/config';\nimport { getV2ApiUrlLS } from 'utils/localStorage';\nconst axiosInstance = axios.create({\n baseURL: getV2ApiUrlLS(),\n headers: {\n 'Content-Type': 'application/json',\n },\n});\n\nexport abstract class BancorV2Api {\n static getWelcome = async (): Promise => {\n const { data } = await axiosInstance.get('welcome');\n const weth = data.tokens.find((t) => t.dlt_id === ethToken);\n const wethTkn: APIToken = {\n ...weth!,\n dlt_id: wethToken,\n symbol: 'WETH',\n };\n data.tokens.push(wethTkn);\n return {\n ...data,\n pools: data.pools.map((pool) => ({\n ...pool,\n reserves: pool.reserves.map((reserve) => ({\n ...reserve,\n address: utils.getAddress(reserve.address),\n })),\n converter_dlt_id: utils.getAddress(pool.converter_dlt_id),\n pool_dlt_id: utils.getAddress(pool.pool_dlt_id),\n })),\n tokens: data.tokens.map((token) => ({\n ...token,\n dlt_id: utils.getAddress(token.dlt_id),\n })),\n };\n };\n}\n","import axios from 'axios';\nimport {\n APIBntV3,\n APIDataV3,\n APIPoolV3,\n APIStatsV3,\n APITokenV3,\n} from 'services/api/bancorApi/bancorApi.types';\nimport { getV3ApiUrlLS } from 'utils/localStorage';\n\nconst axiosInstance = axios.create({\n baseURL: getV3ApiUrlLS(),\n headers: {\n 'Content-Type': 'application/json',\n },\n});\n\nexport abstract class BancorV3Api {\n static getPools = async (): Promise => {\n const { data } = await axiosInstance.get>('/pools');\n return data.data;\n };\n\n static getTokens = async (): Promise => {\n const { data } = await axiosInstance.get>(\n '/tokens'\n );\n return data.data.map((token) => ({\n ...token,\n // TODO remove after Bancor API v3 is updated\n rateHistory7d: [],\n }));\n };\n\n static getStatistics = async (): Promise => {\n const { data } = await axiosInstance.get>('/stats');\n return data.data;\n };\n\n static getBnt = async (): Promise => {\n const { data } = await axiosInstance.get>('/bnt');\n return data.data;\n };\n}\n","import { BancorV2Api } from 'services/api/bancorApi/bancorApiV2';\nimport { BancorV3Api } from 'services/api/bancorApi/bancorApiV3';\n\nexport abstract class BancorApi {\n static v2 = BancorV2Api;\n static v3 = BancorV3Api;\n}\n","import { combineLatest } from 'rxjs';\nimport { oneMinute$ } from 'services/observables/timers';\nimport { switchMapIgnoreThrow } from 'services/observables/customOperators';\nimport { distinctUntilChanged, pluck, shareReplay } from 'rxjs/operators';\nimport { isEqual } from 'lodash';\nimport { BancorApi } from 'services/api/bancorApi/bancorApi';\nimport {\n APIBntV3,\n APIPoolV3,\n APITokenV3,\n WelcomeData,\n} from 'services/api/bancorApi/bancorApi.types';\n\nexport const apiData$ = combineLatest([oneMinute$]).pipe(\n switchMapIgnoreThrow(() => BancorApi.v2.getWelcome()),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const apiTokens$ = apiData$.pipe(\n pluck('tokens'),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const apiPools$ = apiData$.pipe(\n pluck('pools'),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const apiTokensV3$ = combineLatest([oneMinute$]).pipe(\n switchMapIgnoreThrow(() => BancorApi.v3.getTokens()),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const apiBntV3$ = combineLatest([oneMinute$]).pipe(\n switchMapIgnoreThrow(() => BancorApi.v3.getBnt()),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const apiPoolsV3$ = combineLatest([apiBntV3$]).pipe(\n switchMapIgnoreThrow(async ([apiBnt]) => {\n const bntPool: APIPoolV3 = {\n poolDltId: apiBnt.poolDltId,\n poolTokenDltId: apiBnt.poolTokenDltId,\n name: apiBnt.name,\n decimals: apiBnt.decimals,\n tradingLiquidityTKN: {\n ...apiBnt.tradingLiquidity,\n tkn: apiBnt.tradingLiquidity.bnt,\n },\n tradingLiquidityBNT: {\n bnt: '0',\n usd: '0',\n eur: '0',\n eth: '0',\n tkn: '0',\n },\n volume24h: { ...apiBnt.volume24h, tkn: apiBnt.volume24h.bnt },\n fees24h: { ...apiBnt.fees24h, tkn: apiBnt.fees24h.bnt },\n stakedBalance: { ...apiBnt.stakedBalance, tkn: apiBnt.stakedBalance.bnt },\n standardRewardsClaimed24h: {\n ...apiBnt.standardRewardsClaimed24h,\n tkn: apiBnt.standardRewardsClaimed24h.bnt,\n },\n standardRewardsStaked: {\n ...apiBnt.standardRewardsStaked,\n tkn: apiBnt.standardRewardsStaked.bnt,\n },\n standardRewardsProviderJoined: {\n bnt: '0',\n usd: '0',\n eur: '0',\n eth: '0',\n tkn: '0',\n },\n standardRewardsProviderLeft: {\n bnt: '0',\n usd: '0',\n eur: '0',\n eth: '0',\n tkn: '0',\n },\n tradingEnabled: true,\n };\n return [...(await BancorApi.v3.getPools()), bntPool];\n }),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n","import axios from 'axios';\nimport BigNumber from 'bignumber.js';\nimport JSONbig from 'json-bigint';\nimport {\n BaseNotification,\n NotificationType,\n} from 'store/notification/notification';\nimport { take } from 'rxjs/operators';\nimport { Token, tokensV2$ } from 'services/observables/tokens';\nimport { writeWeb3 } from 'services/web3';\nimport { ethToken, wethToken } from 'services/web3/config';\nimport { createOrder, depositWeth } from 'services/web3/swap/limit';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport {\n ConversionEvents,\n sendConversionEvent,\n sendConversionFailEvent,\n sendConversionSuccessEvent,\n} from './googleTagManager';\nimport { utils } from 'ethers';\nimport { ErrorCode } from 'services/web3/types';\nimport { shrinkToken } from 'utils/formulas';\nimport { ExchangeProxy__factory } from 'services/web3/abis/types';\nimport { exchangeProxy$ } from 'services/observables/contracts';\n\nconst baseUrl: string = 'https://hidingbook.keeperdao.com/api/v1';\n\nenum OrderStatus {\n Invalid,\n Fillable,\n Filled,\n Cancelled,\n Expired,\n}\n\ninterface StringRfq {\n makerToken: string;\n takerToken: string;\n makerAmount: string;\n takerAmount: string;\n maker: string;\n taker: string;\n txOrigin: string;\n pool: string;\n expiry: string;\n salt: string;\n}\n\nexport const swapLimit = async (\n fromToken: Token,\n toToken: Token,\n from: string,\n to: string,\n user: string,\n duration: plugin.Duration,\n checkApproval: Function\n): Promise => {\n const fromIsEth = ethToken === fromToken.address;\n try {\n if (fromIsEth) {\n try {\n const txHash = await depositWeth(from);\n checkApproval({ ...fromToken, symbol: 'WETH', address: wethToken });\n return {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Depositing ${from} ETH to WETH is pending confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Your deposit ${from} ETH to WETH is confirmed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Depositing ${from} ETH to WETH has failed. Please try again or contact support`,\n },\n };\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) {\n sendConversionFailEvent('User rejected transaction');\n return {\n type: NotificationType.error,\n title: 'Transaction Rejected',\n msg: 'You rejected the transaction. To complete the order you need to click approve.',\n };\n }\n\n sendConversionFailEvent(e.message);\n\n return {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Depositing ${from} ETH to WETH has failed. Please try again or contact support`,\n };\n }\n } else {\n sendConversionEvent(ConversionEvents.wallet_req);\n await createOrder(\n fromToken,\n toToken,\n from,\n to,\n user,\n duration.asSeconds()\n );\n sendConversionSuccessEvent(fromToken.usdPrice);\n\n return {\n type: NotificationType.success,\n title: 'Success!',\n msg: `Your limit order to trade ${from} ${fromToken.symbol} for ${to} ${toToken.symbol} was created`,\n };\n }\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) {\n sendConversionFailEvent('User rejected transaction');\n return {\n type: NotificationType.error,\n title: 'Transaction Rejected',\n msg: 'You rejected the transaction. If this was by mistake, please try again.',\n };\n }\n\n sendConversionFailEvent(e.message);\n\n return {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Limit order to trade ${from} ${fromToken.symbol} for ${to} ${toToken.symbol} could not be created. Please try again or contact support`,\n };\n }\n};\n\nexport const getOrderDetails = async (): Promise => {\n const res = await axios.get(`${baseUrl}/info`);\n return res.data.result.orderDetails;\n};\n\ntype OrderDetails = {\n verifyingContract: string;\n chainId: number;\n txOrigin: string;\n taker: string;\n pool: string;\n};\n\nexport interface KeeprDaoToken {\n address: string;\n chainId: number;\n decimals: number;\n symbol: string;\n}\n\nexport const fetchKeeperDaoTokens = async (): Promise => {\n try {\n const res = await axios.get(`${baseUrl}/tokenList`);\n const tokens: KeeprDaoToken[] = res.data.result.tokens;\n return tokens.map((x) => ({ ...x, address: utils.getAddress(x.address) }));\n } catch (error) {\n console.error('Failed fetching keeperDao Tokens: ', error);\n return [];\n }\n};\n\nexport const getOrders = async (currentUser: string): Promise => {\n const res = await axios.get<{ orders: OrderResponse[] }>(\n `${baseUrl}/orders?maker=${currentUser}`,\n {\n transformResponse: (res) => JSONbig.parse(res),\n }\n );\n\n return orderResToLimit(\n res.data.orders.filter(\n (order) => order.metaData.status !== OrderStatus.Cancelled\n )\n );\n};\nconst orderResToLimit = async (\n orders: OrderResponse[]\n): Promise => {\n const tokens = await tokensV2$.pipe(take(1)).toPromise();\n\n return orders.map((res) => {\n const payToken =\n tokens.find(\n (x) => x.address === utils.getAddress(res.order.makerToken)\n ) ?? tokens[0];\n const getToken =\n tokens.find(\n (x) => x.address === utils.getAddress(res.order.takerToken)\n ) ?? tokens[0];\n\n const payAmount = new BigNumber(res.order.makerAmount);\n const getAmount = new BigNumber(res.order.takerAmount);\n return {\n hash: res.metaData.orderHash,\n expiration: res.order.expiry,\n payToken,\n getToken,\n payAmount: prettifyNumber(shrinkToken(payAmount, payToken.decimals)),\n getAmount: prettifyNumber(shrinkToken(getAmount, getToken.decimals)),\n rate: `1 ${payToken.symbol} = ${prettifyNumber(\n getAmount.div(payAmount)\n )} ${getToken.symbol}`,\n filled: prettifyNumber(\n new BigNumber(res.metaData.filledAmount_takerToken).div(\n res.metaData.remainingFillableAmount_takerToken\n )\n ),\n orderRes: res,\n };\n });\n};\n\nexport const sendOrders = async (rfqOrder: RfqOrderJson[]) => {\n const url = `${baseUrl}/orders`;\n\n try {\n const res = await axios.post<{\n message: string;\n result: { hashList: string[] };\n }>(url, rfqOrder);\n\n if (res.status === 201) return res.data;\n\n throw new Error(`Unexpected response from server, ${res.data.message}`);\n } catch (e: any) {\n throw new Error(`Unexpected error during send order request ${e.message}`);\n }\n};\n\nexport const cancelOrders = async (\n orders: OrderResponse[]\n): Promise => {\n const stringOrders = orders.map((limitOrder) =>\n orderToStringOrder(limitOrder.order)\n );\n const exchangeProxyAddress = await exchangeProxy$.pipe(take(1)).toPromise();\n const contract = ExchangeProxy__factory.connect(\n exchangeProxyAddress,\n writeWeb3.signer\n );\n\n try {\n const tx =\n stringOrders.length === 1\n ? await contract.cancelRfqOrder(stringOrders[0])\n : await contract.batchCancelRfqOrders(stringOrders);\n\n return {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Transaction is pending confirmationn',\n txHash: tx.hash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: 'Canceling your limit orders has been confirmed',\n errorTitle: 'Transaction Failed',\n errorMsg:\n 'Transaction had failed. Please try again or contact support.',\n },\n };\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx)\n return {\n type: NotificationType.error,\n title: 'Transaction Rejected',\n msg: 'You rejected the transaction. If this was by mistake, please try again.',\n };\n\n return {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: 'Transaction had failed. Please try again or contact support.',\n };\n }\n};\n\nconst orderToStringOrder = (order: Order): StringRfq => ({\n expiry: String(order.expiry),\n makerAmount: order.makerAmount.toString(),\n salt: String(order.salt),\n takerAmount: order.takerAmount.toString(),\n maker: order.maker,\n makerToken: order.makerToken,\n pool: order.pool,\n taker: order.taker,\n takerToken: order.takerToken,\n txOrigin: order.txOrigin,\n});\n\nexport interface LimitOrder {\n hash: string;\n expiration: number;\n payToken: Token;\n getToken: Token;\n payAmount: string;\n getAmount: string;\n rate: string;\n filled: string;\n orderRes: OrderResponse;\n}\nexport interface RfqOrderJson {\n maker: string;\n taker: string;\n makerToken: string;\n takerToken: string;\n makerAmount: string;\n takerAmount: string;\n txOrigin: string;\n pool: string;\n expiry: number;\n salt: number;\n chainId: number; // Ethereum Chain Id where the transaction is submitted.\n verifyingContract: string; // Address of the contract where the transaction should be sent.\n signature: Signature;\n}\n\ninterface Signature {\n signatureType: number;\n v: number;\n r: string;\n s: string;\n}\n\ninterface OrderResponse {\n order: Order;\n metaData: MetaData;\n}\ninterface MetaData {\n orderHash: string;\n makerBalance_makerToken: number;\n makerAllowance_makerToken: number;\n status: OrderStatus;\n filledAmount_takerToken: number;\n remainingFillableAmount_takerToken: BigNumber;\n}\n\ninterface Order {\n maker: string;\n taker: string;\n makerAmount: BigNumber;\n takerAmount: BigNumber;\n makerToken: string;\n takerToken: string;\n salt: number;\n expiry: number;\n chainId: number;\n txOrigin: string;\n pool: string;\n verifyingContract: string;\n signature: Signature;\n}\n","import { Token } from 'services/observables/tokens';\nimport {\n getOrderDetails,\n RfqOrderJson,\n sendOrders,\n} from 'services/api/keeperDao';\nimport { NULL_ADDRESS } from '@0x/utils';\nimport { ErrorCode, EthNetworks, SignatureType } from 'services/web3/types';\nimport { wethToken } from 'services/web3/config';\nimport { writeWeb3 } from 'services/web3';\nimport BigNumber from 'bignumber.js';\nimport dayjs from 'utils/dayjs';\nimport {\n BaseNotification,\n NotificationType,\n} from 'store/notification/notification';\nimport { expandToken } from 'utils/formulas';\nimport { Weth__factory } from '../abis/types';\nimport { utils } from 'ethers';\n\nexport const depositWeth = async (amount: string) => {\n const tokenContract = Weth__factory.connect(wethToken, writeWeb3.signer);\n const wei = expandToken(amount, 18);\n\n const tx = await tokenContract.deposit({ value: wei });\n return tx.hash;\n};\n\nexport const withdrawWeth = async (\n amount: string\n): Promise => {\n const tokenContract = Weth__factory.connect(wethToken, writeWeb3.signer);\n const wei = expandToken(amount, 18);\n\n try {\n const tx = await tokenContract.withdraw(wei);\n\n return {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Withdraw WETH is pending confirmation',\n txHash: tx.hash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Your withdraw of ${amount} WETH has been confirmed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Withdrawing ${amount} WETH had failed. Please try again or contact support.`,\n },\n };\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx)\n return {\n type: NotificationType.error,\n title: 'Transaction Rejected',\n msg: 'You rejected the transaction. If this was by mistake, please try again.',\n };\n\n return {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Withdrawing ${amount} WETH had failed. Please try again or contact support.`,\n };\n }\n};\n\nexport const createOrder = async (\n fromToken: Token,\n toToken: Token,\n from: string,\n to: string,\n user: string,\n seconds: number\n): Promise => {\n const expiry = Number(dayjs().unix() + seconds);\n const fromAmountWei = new BigNumber(expandToken(from, fromToken.decimals));\n const toAmountWei = new BigNumber(expandToken(to, toToken.decimals));\n const salt = Number(utils.hexlify(utils.randomBytes(6)));\n const orderDetails = await getOrderDetails();\n\n const order = {\n maker: user.toLowerCase(),\n taker: NULL_ADDRESS.toLocaleLowerCase(),\n expiry,\n makerAmount: fromAmountWei.toString(),\n makerToken: fromToken.address.toLowerCase(),\n pool: orderDetails.pool,\n salt,\n takerAmount: toAmountWei.toString(),\n takerToken: toToken.address.toLowerCase(),\n txOrigin: orderDetails.txOrigin,\n };\n\n const signature = await writeWeb3.signer._signTypedData(\n domain(orderDetails.verifyingContract),\n types,\n order\n );\n\n const splittedSign = utils.splitSignature(signature);\n const jsonOrder: RfqOrderJson = {\n maker: order.maker.toLowerCase(),\n taker: order.taker,\n chainId: EthNetworks.Mainnet,\n expiry: order.expiry,\n makerAmount: order.makerAmount,\n makerToken: order.makerToken.toLowerCase(),\n pool: order.pool,\n salt: order.salt,\n signature: {\n r: splittedSign.r,\n s: splittedSign.s,\n v: splittedSign.v,\n signatureType: SignatureType.EIP712,\n },\n takerAmount: order.takerAmount,\n takerToken: order.takerToken.toLowerCase(),\n txOrigin: order.txOrigin.toLowerCase(),\n verifyingContract: orderDetails.verifyingContract.toLowerCase(),\n };\n\n await sendOrders([jsonOrder]);\n};\n\nconst domain = (exchangeProxyAddress: string) => ({\n chainId: 1,\n verifyingContract: exchangeProxyAddress,\n name: 'ZeroEx',\n version: '1.0.0',\n});\n\nconst types = {\n RfqOrder: [\n { type: 'address', name: 'makerToken' },\n { type: 'address', name: 'takerToken' },\n { type: 'uint128', name: 'makerAmount' },\n { type: 'uint128', name: 'takerAmount' },\n { type: 'address', name: 'maker' },\n { type: 'address', name: 'taker' },\n { type: 'address', name: 'txOrigin' },\n { type: 'bytes32', name: 'pool' },\n { type: 'uint64', name: 'expiry' },\n { type: 'uint256', name: 'salt' },\n ],\n};\n","import { BehaviorSubject, combineLatest, from } from 'rxjs';\nimport { switchMapIgnoreThrow } from 'services/observables/customOperators';\nimport { user$ } from 'services/observables/user';\nimport {\n fetchETH,\n fetchTokenBalanceMulticall,\n} from 'services/web3/token/token';\nimport { bntToken, ethToken, ropstenImage } from 'services/web3/config';\nimport { calculatePercentageChange, shrinkToken } from 'utils/formulas';\nimport { get7DaysAgo } from 'utils/pureFunctions';\nimport { UTCTimestamp } from 'lightweight-charts';\nimport { tokenListTokens$ } from 'services/observables/tokenLists';\nimport {\n apiPools$,\n apiPoolsV3$,\n apiTokens$,\n apiTokensV3$,\n} from 'services/observables/apiData';\nimport { utils } from 'ethers';\nimport { fetchKeeperDaoTokens } from 'services/api/keeperDao';\nimport { distinctUntilChanged, shareReplay } from 'rxjs/operators';\nimport { isEqual, uniqueId } from 'lodash';\nimport BigNumber from 'bignumber.js';\nimport { settingsContractAddress$ } from 'services/observables/contracts';\nimport { LiquidityProtectionSettings__factory } from 'services/web3/abis/types';\nimport { web3 } from 'services/web3';\nimport {\n APIPool,\n APIPoolV3,\n APIToken,\n APITokenV3,\n} from 'services/api/bancorApi/bancorApi.types';\nimport { oneMinute$ } from 'services/observables/timers';\nimport { toBigNumber } from 'utils/helperFunctions';\n\nexport interface TokenMinimal {\n address: string;\n decimals: number;\n logoURI?: string;\n name?: string;\n symbol: string;\n balance?: string;\n}\n\nexport interface Token extends TokenMinimal {\n name: string;\n logoURI: string;\n usdPrice: string;\n liquidity: string;\n usd_24h_ago: string;\n price_change_24: number;\n price_history_7d: { time: UTCTimestamp; value: number }[];\n usd_volume_24: string;\n isProtected: boolean;\n balanceUsd?: number;\n}\n\nexport interface TokenList {\n id: string;\n name: string;\n logoURI?: string;\n tokens: TokenMinimal[];\n}\n\nexport const buildTokenObject = (\n apiToken: APIToken,\n apiPools: APIPool[],\n minMintingBalance: string,\n balances?: Map,\n tlToken?: TokenMinimal\n): Token => {\n const pool = apiPools.find((p) =>\n p.reserves.find((r) => r.address === apiToken.dlt_id)\n );\n\n // Set balance; if user is NOT logged in set null\n const balance = balances\n ? utils\n .formatUnits(balances.get(apiToken.dlt_id) ?? '0', apiToken.decimals)\n .toString()\n : undefined;\n\n const balanceUsd = balance\n ? toBigNumber(balance || 0)\n .times(apiToken.rate.usd || 0)\n .toNumber()\n : undefined;\n\n // Get fallback token and set image and name\n const logoURI = tlToken?.logoURI ?? ropstenImage;\n const name = tlToken?.name ?? apiToken.symbol;\n\n const price_change_24 =\n calculatePercentageChange(\n Number(apiToken.rate.usd),\n Number(apiToken.rate_24h_ago.usd)\n ) || 0;\n\n const seven_days_ago = get7DaysAgo().getUTCSeconds();\n const price_history_7d = apiToken.rates_7d\n .filter((x) => !!x)\n .map((x, i) => ({\n value: Number(x),\n time: (seven_days_ago + i * 360) as UTCTimestamp,\n }));\n\n const usd_volume_24 = pool ? pool.volume_24h.usd : null;\n const bntReserve = pool\n ? pool.reserves.find((r) => r.address === bntToken)\n : 0;\n const sufficientMintingBalance = new BigNumber(minMintingBalance).lt(\n bntReserve ? bntReserve.balance : 0\n );\n const isWhitelisted = pool ? pool.isWhitelisted : false;\n const isProtected = sufficientMintingBalance && isWhitelisted;\n\n return {\n name,\n logoURI,\n balance,\n balanceUsd,\n address: apiToken.dlt_id,\n decimals: apiToken.decimals,\n symbol: apiToken.symbol,\n liquidity: apiToken.liquidity.usd ?? '0',\n usdPrice: apiToken.rate.usd ?? '0',\n usd_24h_ago: apiToken.rate_24h_ago.usd ?? '0',\n price_change_24,\n price_history_7d,\n usd_volume_24: usd_volume_24 ?? '0',\n isProtected,\n };\n};\n\nexport const buildTokenObjectV3 = (\n apiToken: APITokenV3,\n pool: APIPoolV3,\n balances?: Map,\n tlToken?: TokenMinimal\n): Token => {\n // Set balance; if user is NOT logged in set null\n const balance = balances\n ? utils\n .formatUnits(balances.get(apiToken.dltId) ?? '0', pool.decimals)\n .toString()\n : undefined;\n\n const balanceUsd = balance\n ? toBigNumber(balance || 0)\n .times(apiToken.rate.usd)\n .toNumber()\n : undefined;\n\n // Get fallback token and set image and name\n const logoURI = tlToken?.logoURI ?? ropstenImage;\n const name = tlToken?.name ?? apiToken.symbol;\n\n const price_change_24 =\n calculatePercentageChange(\n Number(apiToken.rate.usd),\n Number(apiToken.rate24hAgo.usd)\n ) || 0;\n\n const seven_days_ago = get7DaysAgo().getUTCSeconds();\n const price_history_7d = apiToken.rateHistory7d\n .filter((x) => !!x)\n .map((x, i) => ({\n value: Number(x),\n time: (seven_days_ago + i * 360) as UTCTimestamp,\n }));\n\n const usd_volume_24 = pool ? pool.volume24h.usd : null;\n return {\n name,\n logoURI,\n balance,\n balanceUsd,\n address: apiToken.dltId,\n decimals: pool.decimals,\n symbol: apiToken.symbol,\n liquidity: pool.tradingLiquidityTKN.usd,\n usdPrice: apiToken.rate.usd,\n usd_24h_ago: apiToken.rate24hAgo.usd,\n price_change_24,\n price_history_7d,\n usd_volume_24: usd_volume_24 ?? '0',\n isProtected: true,\n };\n};\n\nconst userBalancesReceiver$ = new BehaviorSubject(uniqueId());\n\nexport const updateUserBalances = async () => {\n await userBalancesReceiver$.next(uniqueId());\n};\n\nexport const userBalancesInWei$ = combineLatest([\n apiTokens$,\n user$,\n userBalancesReceiver$,\n oneMinute$,\n]).pipe(\n switchMapIgnoreThrow(async ([apiTokens, user]) => {\n if (!user) {\n return undefined;\n }\n\n // get balances for tokens other than ETH\n const balances = await fetchTokenBalanceMulticall(\n apiTokens.map((t) => t.dlt_id).filter((id) => id !== ethToken),\n user\n );\n // get balance for ETH\n balances.set(ethToken, await fetchETH(user));\n return balances;\n }),\n distinctUntilChanged | undefined>(isEqual),\n shareReplay(1)\n);\n\nexport const userBalancesInWeiV3$ = combineLatest([\n apiTokensV3$,\n user$,\n userBalancesReceiver$,\n oneMinute$,\n]).pipe(\n switchMapIgnoreThrow(async ([apiTokensv3, user]) => {\n if (!user) {\n return undefined;\n }\n\n // get balances for tokens other than ETH\n const balances = await fetchTokenBalanceMulticall(\n apiTokensv3.map((t) => t.dltId).filter((id) => id !== ethToken),\n user\n );\n // get balance for ETH\n balances.set(ethToken, await fetchETH(user));\n return balances;\n }),\n distinctUntilChanged | undefined>(isEqual),\n shareReplay(1)\n);\n\nconst minNetworkTokenLiquidityForMinting$ = combineLatest([\n settingsContractAddress$,\n]).pipe(\n switchMapIgnoreThrow(async ([liquidityProtectionSettingsContract]) => {\n const contract = LiquidityProtectionSettings__factory.connect(\n liquidityProtectionSettingsContract,\n web3.provider\n );\n const res = await contract.minNetworkTokenLiquidityForMinting();\n return shrinkToken(res.toString(), 18);\n }),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const tokensV2$ = combineLatest([\n apiTokens$,\n apiPools$,\n tokenListTokens$,\n userBalancesInWei$,\n minNetworkTokenLiquidityForMinting$,\n]).pipe(\n switchMapIgnoreThrow(\n async ([\n apiTokens,\n apiPools,\n tokenListTokens,\n balances,\n minMintingBalance,\n ]) => {\n const userPreferredTokenListTokensMap = new Map(\n tokenListTokens.userPreferredTokenListTokens.map((t) => [t.address, t])\n );\n return apiTokens\n .map((apiToken) => {\n const tokenListToken = userPreferredTokenListTokensMap.get(\n apiToken.dlt_id\n );\n if (!tokenListToken) {\n return undefined;\n }\n return buildTokenObject(\n apiToken,\n apiPools,\n minMintingBalance,\n balances,\n tokenListToken\n );\n })\n .filter((token) => !!token) as Token[];\n }\n ),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const tokensV3$ = combineLatest([\n apiTokensV3$,\n apiPoolsV3$,\n tokenListTokens$,\n userBalancesInWeiV3$,\n]).pipe(\n switchMapIgnoreThrow(\n async ([apiTokens, apiPools, tokenListTokens, balances]) => {\n const userPreferredTokenListTokensMap = new Map(\n tokenListTokens.userPreferredTokenListTokens.map((t) => [t.address, t])\n );\n const apiPoolsMap = new Map(apiPools.map((p) => [p.poolDltId, p]));\n return apiTokens\n .map((apiToken) => {\n const tokenListToken = userPreferredTokenListTokensMap.get(\n apiToken.dltId\n );\n if (!tokenListToken) {\n return undefined;\n }\n const apiPool = apiPoolsMap.get(apiToken.dltId);\n if (!apiPool) {\n return undefined;\n }\n return buildTokenObjectV3(\n apiToken,\n apiPool,\n balances,\n tokenListToken\n );\n })\n .filter((token) => !!token) as Token[];\n }\n ),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const allTokensNew$ = combineLatest([\n apiTokens$,\n apiPools$,\n tokenListTokens$,\n userBalancesInWei$,\n minNetworkTokenLiquidityForMinting$,\n]).pipe(\n switchMapIgnoreThrow(\n async ([\n apiTokens,\n apiPools,\n tokenListTokens,\n balances,\n minMintingBalance,\n ]) => {\n const allTokenListTokensMap = new Map(\n tokenListTokens.allTokenListTokens.map((t) => [t.address, t])\n );\n return apiTokens.map((apiToken) => {\n const tokenListToken = allTokenListTokensMap.get(apiToken.dlt_id);\n return buildTokenObject(\n apiToken,\n apiPools,\n minMintingBalance,\n balances,\n tokenListToken\n );\n });\n }\n ),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const keeperDaoTokens$ = from(fetchKeeperDaoTokens()).pipe(\n shareReplay(1)\n);\n","import { combineLatest } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\nimport BigNumber from 'bignumber.js';\nimport numbro from 'numbro';\nimport { apiData$ } from 'services/observables/apiData';\nimport { bntToken } from 'services/web3/config';\nimport { oneMinute$ } from 'services/observables/timers';\nimport { BancorApi } from 'services/api/bancorApi/bancorApi';\nimport { switchMapIgnoreThrow } from 'services/observables/customOperators';\nimport { toBigNumber } from 'utils/helperFunctions';\n\nexport interface Statistic {\n label: string;\n value: string;\n change24h?: number;\n}\n\nconst averageFormat = {\n average: true,\n mantissa: 2,\n optionalMantissa: true,\n spaceSeparated: true,\n lowPrecision: false,\n};\n\nexport const statisticsV3$ = combineLatest([apiData$, oneMinute$]).pipe(\n switchMapIgnoreThrow(async ([apiDataV2]) => {\n const stats = await BancorApi.v3.getStatistics();\n\n const bnt24hChange = new BigNumber(stats.bntRate)\n .div(stats.bntRate24hAgo)\n .times(100)\n .minus(100)\n .toNumber();\n\n const bntSupply = apiDataV2.bnt_supply;\n\n const totalBntStakedV2: number = apiDataV2.pools.reduce((acc, item) => {\n const bntReserve = item.reserves.find(\n (reserve) => reserve.address === bntToken\n );\n if (!bntReserve) return acc;\n return Number(bntReserve.balance) + acc;\n }, 0);\n\n const stakedBntPercentV2 = new BigNumber(totalBntStakedV2)\n .div(toBigNumber(bntSupply).toExponential(18))\n .times(100);\n\n const stakedBntPercentV3 = new BigNumber(stats.stakedBalanceBNT.bnt)\n .div(toBigNumber(bntSupply).toExponential(18))\n .times(100);\n\n const totalBNTStaked = new BigNumber(stakedBntPercentV2).plus(\n stakedBntPercentV3\n );\n\n const totalLiquidity = new BigNumber(stats.tradingLiquidityBNT.usd)\n .plus(stats.tradingLiquidityTKN.usd)\n .plus(apiDataV2.total_liquidity.usd);\n\n const totalVolume = new BigNumber(apiDataV2.total_volume_24h.usd).plus(\n stats.totalVolume24h.usd\n );\n const totalFees = new BigNumber(apiDataV2.total_fees_24h.usd).plus(\n stats.totalFees24h.usd\n );\n\n const statistics: Statistic[] = [\n {\n label: 'Total Liquidity',\n value: '$' + numbro(totalLiquidity).format(averageFormat),\n change24h: 0,\n },\n {\n label: 'Volume',\n value: '$' + numbro(totalVolume).format(averageFormat),\n change24h: 0,\n },\n {\n label: 'Fees (24h)',\n value: '$' + numbro(totalFees).format(averageFormat),\n change24h: 0,\n },\n {\n label: 'BNT Price',\n value: '$' + numbro(stats.bntRate).format({ mantissa: 2 }),\n change24h: bnt24hChange,\n },\n {\n label: 'BNT Staked',\n value: numbro(totalBNTStaked).format({ mantissa: 2 }) + '%',\n },\n ];\n return statistics;\n }),\n shareReplay(1)\n);\n","import { take } from 'rxjs/operators';\nimport {\n liquidityProtection$,\n liquidityProtectionStore$,\n} from 'services/observables/contracts';\nimport dayjs from 'utils/dayjs';\nimport { web3, writeWeb3 } from 'services/web3';\nimport {\n LiquidityProtectionStore__factory,\n LiquidityProtection__factory,\n} from '../abis/types';\nimport { ErrorCode } from '../types';\nimport { shrinkToken } from 'utils/formulas';\nimport { partition } from 'lodash';\n\nexport interface LockedBnt {\n bnt: number;\n expiry: number;\n}\n\nexport interface LockedAvailableBnt {\n locked: LockedBnt[];\n available: number;\n}\n\nexport const fetchLockedAvailableBalances = async (\n user: string\n): Promise => {\n try {\n const storeAddress = await liquidityProtectionStore$\n .pipe(take(1))\n .toPromise();\n const contract = LiquidityProtectionStore__factory.connect(\n storeAddress,\n web3.provider\n );\n\n const lockedBalanceCount = Number(await contract.lockedBalanceCount(user));\n if (lockedBalanceCount === 0) return;\n\n const lockedBalances = await contract.lockedBalanceRange(\n user,\n 0,\n lockedBalanceCount\n );\n\n const bnts = lockedBalances['0'];\n const expirys = lockedBalances['1'];\n\n const res = bnts.map((bnt, index) => ({\n bnt: Number(shrinkToken(bnt.toString(), 18)),\n expiry: Number(expirys[index]),\n }));\n\n const now = dayjs().unix() * 1000;\n const [available, locked] = partition(res, (x) =>\n dayjs.unix(x.expiry).isBefore(now)\n );\n\n const totalAvailable =\n available.length === 0\n ? 0\n : available.map((x) => x.bnt).reduce((item, prev) => item + prev);\n\n return {\n locked: locked.map((x) => ({ ...x, expiry: x.expiry * 1000 })),\n available: totalAvailable,\n };\n } catch (error) {\n console.error(error);\n }\n};\n\nexport const claimBnt = async (\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: (error: string) => void\n) => {\n try {\n const liquidityProtectionContract = await liquidityProtection$\n .pipe(take(1))\n .toPromise();\n const contract = LiquidityProtection__factory.connect(\n liquidityProtectionContract,\n writeWeb3.signer\n );\n\n const tx = await contract.claimBalance('0', '1000');\n onHash(tx.hash);\n\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed(e.message);\n }\n};\n","import BigNumber from 'bignumber.js';\nimport { sortBy } from 'lodash';\nimport { first, take } from 'rxjs/operators';\nimport {\n bancorConverterRegistry$,\n liquidityProtection$,\n settingsContractAddress$,\n} from 'services/observables/contracts';\nimport { Token } from 'services/observables/tokens';\nimport { expandToken, reduceBySlippage, shrinkToken } from 'utils/formulas';\nimport {\n calculateBntNeededToOpenSpace,\n calculatePriceDeviationTooHigh,\n decToPpm,\n} from 'utils/helperFunctions';\nimport { web3, writeWeb3 } from '..';\nimport {\n ConverterRegistry__factory,\n Converter__factory,\n LiquidityProtection,\n LiquidityProtectionSettings,\n LiquidityProtectionSettings__factory,\n LiquidityProtectionSystemStore__factory,\n LiquidityProtection__factory,\n} from '../abis/types';\nimport { MultiCall } from 'services/web3/multicall/multicall';\nimport {\n bntToken,\n changeGas,\n ethToken,\n systemStore,\n zeroAddress,\n} from '../config';\nimport { ErrorCode, EthNetworks, PoolType } from '../types';\nimport {\n ConversionEvents,\n sendLiquidityEvent,\n} from '../../api/googleTagManager';\nimport { Pool, PoolToken } from 'services/observables/pools';\n\nexport const createPool = async (\n token: Token,\n fee: string,\n network: EthNetworks,\n noPool: Function,\n onHash: (txHash: string) => void,\n onAccept: (txHash: string) => void,\n onFee: (txHash: string) => void,\n rejected: Function,\n failed: Function\n) => {\n try {\n const converterRegistryAddress = await bancorConverterRegistry$\n .pipe(take(1))\n .toPromise();\n\n const regContract = ConverterRegistry__factory.connect(\n converterRegistryAddress,\n writeWeb3.signer\n );\n\n const reserves = [bntToken, token.address];\n const weights = ['500000', '500000'];\n\n const poolAddress = await regContract.getLiquidityPoolByConfig(\n PoolType.Traditional,\n reserves,\n weights\n );\n\n if (poolAddress !== zeroAddress) noPool();\n\n const tx = await regContract.newConverter(\n PoolType.Traditional,\n token.name,\n token.symbol,\n token.decimals,\n 50000,\n reserves,\n weights\n );\n\n onHash(tx.hash);\n await tx.wait();\n\n const converterAddress = await web3.provider.getTransactionReceipt(tx.hash);\n const converter = Converter__factory.connect(\n converterAddress.logs[0].address,\n writeWeb3.signer\n );\n const ownerShip = await converter.acceptOwnership();\n onAccept(ownerShip.hash);\n await ownerShip.wait();\n\n const conversionFee = await converter.setConversionFee(decToPpm(fee));\n onFee(conversionFee.hash);\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed();\n }\n};\n\nexport const addLiquidity = async (\n bntAmount: string,\n bnt: Token,\n tknAmount: string,\n tkn: Token,\n converterAddress: string,\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: (error: string) => void\n) => {\n try {\n const contract = Converter__factory.connect(\n converterAddress,\n writeWeb3.signer\n );\n const tknWei = expandToken(tknAmount, tkn.decimals);\n const bntWei = expandToken(bntAmount, bnt.decimals);\n\n const value = tkn.address === ethToken ? tknWei : undefined;\n\n // sendLiquidityEvent(ConversionEvents.wallet_req);\n\n const estimate = await contract.estimateGas.addLiquidity(\n [bnt.address, tkn.address],\n [bntWei, tknWei],\n '1',\n { value }\n );\n const gasLimit = changeGas(estimate.toString());\n\n const tx = await contract.addLiquidity(\n [bnt.address, tkn.address],\n [bntWei, tknWei],\n '1',\n { value, gasLimit }\n );\n\n sendLiquidityEvent(ConversionEvents.wallet_confirm, tx.hash);\n\n onHash(tx.hash);\n\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n console.error(e);\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed(e.message);\n }\n};\n\nexport const removeLiquidity = async (\n poolToken: PoolToken,\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: (error: string) => void\n) => {\n const slippage = 0.05;\n try {\n const contract = Converter__factory.connect(\n poolToken.converter,\n writeWeb3.signer\n );\n\n const minBntReturn = expandToken(\n reduceBySlippage(poolToken.bnt.amount, slippage),\n poolToken.poolDecimals\n );\n const minTknReturn = expandToken(\n reduceBySlippage(poolToken.tkn.amount, slippage),\n poolToken.poolDecimals\n );\n\n const liquidateFn = async () => {\n if (poolToken.version < 28) {\n return await contract.liquidate(\n expandToken(poolToken.amount, poolToken.poolDecimals)\n );\n } else {\n return await contract.removeLiquidity(\n expandToken(poolToken.amount, poolToken.poolDecimals),\n [poolToken.bnt.token.address, poolToken.tkn.token.address],\n [minBntReturn, minTknReturn]\n );\n }\n };\n sendLiquidityEvent(ConversionEvents.wallet_req);\n\n const tx = await liquidateFn();\n sendLiquidityEvent(ConversionEvents.wallet_confirm);\n\n onHash(tx.hash);\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n console.error(e);\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed(e.message);\n }\n};\n\nexport const addLiquidityV2Single = async (\n pool: Pool,\n token: Token,\n amount: string,\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: (error: string) => void\n) => {\n try {\n const liquidityProtectionContract = await liquidityProtection$\n .pipe(first())\n .toPromise();\n\n const contract = LiquidityProtection__factory.connect(\n liquidityProtectionContract,\n writeWeb3.signer\n );\n const fromIsEth = ethToken === token.address;\n\n sendLiquidityEvent(ConversionEvents.wallet_req);\n\n const estimate = await contract.estimateGas.addLiquidity(\n pool.pool_dlt_id,\n token.address,\n expandToken(amount, token.decimals),\n { value: fromIsEth ? expandToken(amount, 18) : undefined }\n );\n const gasLimit = changeGas(estimate.toString());\n\n const tx = await contract.addLiquidity(\n pool.pool_dlt_id,\n token.address,\n expandToken(amount, token.decimals),\n { value: fromIsEth ? expandToken(amount, 18) : undefined, gasLimit }\n );\n onHash(tx.hash);\n sendLiquidityEvent(ConversionEvents.wallet_confirm, tx.hash);\n\n await tx.wait();\n\n onCompleted();\n } catch (e: any) {\n console.error(e);\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed(e.message);\n }\n};\n\nexport const addLiquidityV3Single = async () => {};\n\nexport const checkPriceDeviationTooHigh = async (\n pool: Pool,\n selectedTkn: Token\n): Promise => {\n const converterContract = Converter__factory.connect(\n pool.converter_dlt_id,\n web3.provider\n );\n\n const settingsAddress = await settingsContractAddress$\n .pipe(take(1))\n .toPromise();\n\n const settingsContract = LiquidityProtectionSettings__factory.connect(\n settingsAddress,\n web3.provider\n );\n\n const [primaryReserveAddress, secondaryReserveAddress] = sortBy(\n pool.reserves,\n [(o) => o.address !== selectedTkn.address]\n ).map((x) => x.address);\n\n const [\n recentAverageRate,\n averageRateMaxDeviation,\n primaryReserveBalance,\n secondaryReserveBalance,\n ] = await Promise.all([\n converterContract.recentAverageRate(selectedTkn.address),\n settingsContract.averageRateMaxDeviation(),\n converterContract.reserveBalance(primaryReserveAddress),\n converterContract.reserveBalance(secondaryReserveAddress),\n ]);\n\n const averageRate = new BigNumber(\n recentAverageRate['1'].toString()\n ).dividedBy(new BigNumber(recentAverageRate['0'].toString()));\n\n if (averageRate.isNaN()) {\n throw new Error(\n 'Price deviation calculation failed. Please contact support.'\n );\n }\n\n return calculatePriceDeviationTooHigh(\n averageRate,\n new BigNumber(primaryReserveBalance.toString()),\n new BigNumber(secondaryReserveBalance.toString()),\n new BigNumber(averageRateMaxDeviation)\n );\n};\n\nexport const getSpaceAvailable = async (id: string, tknDecimals: number) => {\n const liquidityProtectionContract = await liquidityProtection$\n .pipe(first())\n .toPromise();\n const contract = LiquidityProtection__factory.connect(\n liquidityProtectionContract,\n web3.provider\n );\n\n const result = await contract.poolAvailableSpace(id);\n\n return {\n bnt: shrinkToken(result['1'].toString(), 18),\n tkn: shrinkToken(result['0'].toString(), tknDecimals),\n };\n};\n\nexport const fetchBntNeededToOpenSpace = async (\n pool: Pool\n): Promise => {\n const settingsAddress = await settingsContractAddress$\n .pipe(take(1))\n .toPromise();\n const settingsContract = LiquidityProtectionSettings__factory.connect(\n settingsAddress,\n web3.provider\n );\n\n const systemStoreContract = LiquidityProtectionSystemStore__factory.connect(\n systemStore,\n web3.provider\n );\n\n const networkTokenMintingLimits =\n await settingsContract.networkTokenMintingLimits(pool.pool_dlt_id);\n\n const networkTokensMinted = await systemStoreContract.networkTokensMinted(\n pool.pool_dlt_id\n );\n\n const { tknBalance, bntBalance } = await fetchReserveBalances(pool);\n\n const bntNeeded = calculateBntNeededToOpenSpace(\n bntBalance,\n tknBalance,\n networkTokensMinted.toString(),\n networkTokenMintingLimits.toString()\n );\n\n return shrinkToken(bntNeeded, 18);\n};\n\nexport const fetchReserveBalances = async (\n pool: Pool,\n blockHeight?: number\n) => {\n const converterContract = Converter__factory.connect(\n pool.converter_dlt_id,\n web3.provider\n );\n const tknBalance = (\n await converterContract.getConnectorBalance(pool.reserves[0].address, {\n blockTag: blockHeight,\n })\n ).toString();\n\n const bntBalance = (\n await converterContract.getConnectorBalance(pool.reserves[1].address, {\n blockTag: blockHeight,\n })\n ).toString();\n\n return { tknBalance, bntBalance };\n};\n\nexport const buildReserveBalancesCall = (pool: Pool): MultiCall[] => {\n const contract = Converter__factory.connect(\n pool.converter_dlt_id,\n web3.provider\n );\n const buildCall = (address: string): MultiCall => {\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'getConnectorBalance',\n methodParameters: [address],\n };\n };\n\n return [\n buildCall(pool.reserves[0].address),\n buildCall(pool.reserves[1].address),\n ];\n};\n\nexport const buildPoolROICall = (\n contract: LiquidityProtection,\n poolToken: string,\n reserveToken: string,\n reserveAmount: string,\n poolRateN: string,\n poolRateD: string,\n reserveRateN: string,\n reserveRateD: string\n): MultiCall => ({\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'poolROI',\n methodParameters: [\n poolToken,\n reserveToken,\n reserveAmount,\n poolRateN,\n poolRateD,\n reserveRateN,\n reserveRateD,\n ],\n});\n\nexport const buildRemoveLiquidityReturnCall = (\n contract: LiquidityProtection,\n id: string,\n portion: string,\n removeTimestamp: number\n): MultiCall => {\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'removeLiquidityReturn',\n methodParameters: [id, portion, String(removeTimestamp)],\n };\n};\n\nexport const buildProtectionDelayCall = (\n contract: LiquidityProtectionSettings\n): MultiCall[] => {\n const buildCall = (methodName: string): MultiCall => {\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: methodName,\n methodParameters: [],\n };\n };\n\n return [buildCall('minProtectionDelay'), buildCall('maxProtectionDelay')];\n};\n","import {\n LiquidityProtection,\n LiquidityProtection__factory,\n LiquidityProtectionSettings__factory,\n LiquidityProtectionStore,\n LiquidityProtectionStore__factory,\n} from 'services/web3/abis/types';\nimport { web3, writeWeb3 } from 'services/web3/index';\nimport {\n liquidityProtection$,\n liquidityProtectionStore$,\n settingsContractAddress$,\n} from 'services/observables/contracts';\nimport { take } from 'rxjs/operators';\nimport { multicall } from 'services/web3/multicall/multicall';\nimport { keyBy, merge, values } from 'lodash';\nimport dayjs from 'dayjs';\nimport {\n calculateProgressLevel,\n calcUsdPrice,\n decToPpm,\n} from 'utils/helperFunctions';\nimport BigNumber from 'bignumber.js';\nimport {\n buildProtectionDelayCall,\n buildRemoveLiquidityReturnCall,\n} from 'services/web3/liquidity/liquidity';\nimport { shrinkToken } from 'utils/formulas';\nimport { fetchedPendingRewards, fetchedRewardsMultiplier } from './rewards';\nimport { ErrorCode } from '../types';\nimport { Result } from '@ethersproject/abi';\nimport { changeGas } from '../config';\nimport {\n ConversionEvents,\n sendLiquidityEvent,\n} from '../../api/googleTagManager';\nimport { Pool, Reserve } from 'services/observables/pools';\n\nexport interface ProtectedPosition {\n positionId: string;\n pool: Pool;\n fees: string;\n initialStake: { usdAmount: string; tknAmount: string };\n protectedAmount: { usdAmount: string; tknAmount: string };\n claimableAmount: { usdAmount: string; tknAmount: string };\n reserveToken: Reserve;\n roi: {\n fees: string;\n reserveRewards?: string;\n };\n aprs: { day: string; week: string };\n rewardsMultiplier: string;\n rewardsAmount: string;\n timestamps: {\n initalStake: string;\n insuranceStart: string;\n fullCoverage: string;\n };\n currentCoveragePercent: number;\n}\n\nexport interface ProtectedPositionGrouped extends ProtectedPosition {\n groupId: string;\n subRows: ProtectedPosition[];\n}\n\nexport interface ProtectedLiquidity {\n id: string;\n owner: string;\n poolToken: string;\n reserveToken: Reserve;\n poolAmount: string;\n reserveAmount: string;\n reserveRateN: string;\n reserveRateD: string;\n timestamp: string;\n pool: Pool;\n}\n\nconst fetchPositions = async (\n contract: LiquidityProtectionStore,\n currentUser: string,\n pools: Pool[]\n): Promise => {\n const positionIds = await contract.protectedLiquidityIds(currentUser);\n const calls = positionIds.map((id) =>\n buildProtectedPositionCall(contract, id.toString())\n );\n const res = await multicall(calls);\n\n if (res)\n return res.map((r, index) => {\n const position = r as Result[];\n const poolToken = position[1].toString();\n const reserveTokenAddress = position[2].toString();\n const pool = pools.find((x) => x.pool_dlt_id === poolToken);\n const reserveToken = pool!.reserves.find(\n (reserve) => reserve.address === reserveTokenAddress\n );\n\n return {\n id: positionIds[index].toString(),\n owner: position[0].toString(),\n poolToken,\n reserveToken: reserveToken!,\n poolAmount: position[3].toString(),\n reserveAmount: position[4].toString(),\n reserveRateN: position[5].toString(),\n reserveRateD: position[6].toString(),\n timestamp: position[7].toString(),\n pool: pool!,\n };\n });\n\n return [];\n};\nconst buildProtectedPositionCall = (\n contract: LiquidityProtectionStore,\n protectionId: string\n) => {\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'protectedLiquidity',\n methodParameters: [protectionId],\n };\n};\n\nconst fetchROI = async (\n contract: LiquidityProtection,\n positions: ProtectedLiquidity[]\n) => {\n const timeNow = dayjs();\n const timeNowUnix = timeNow.unix();\n const fullWaitTimeUnix = timeNow.add(1, 'year').unix();\n const portion = decToPpm(1);\n\n const calls = positions.map((x) => [\n buildRemoveLiquidityReturnCall(contract, x.id, portion, timeNowUnix),\n buildRemoveLiquidityReturnCall(contract, x.id, portion, fullWaitTimeUnix),\n ]);\n\n const res = await multicall(calls.flat());\n\n if (res) {\n return positions.map((position, i) => {\n const { decimals, usdPrice } = position.reserveToken;\n const index = i * 2;\n\n const currentTargetAmount = res[index][0].toString();\n const fullTargetAmount = res[index + 1][0].toString();\n\n const protectedAmount = {\n tknAmount: shrinkToken(fullTargetAmount, decimals),\n usdAmount: calcUsdPrice(fullTargetAmount, usdPrice, decimals),\n };\n\n const claimableAmount = {\n tknAmount: shrinkToken(currentTargetAmount, decimals),\n usdAmount: calcUsdPrice(currentTargetAmount, usdPrice, decimals),\n };\n\n const fees = new BigNumber(protectedAmount.tknAmount)\n .minus(shrinkToken(position.reserveAmount, decimals))\n .toString();\n\n const roiDec = new BigNumber(currentTargetAmount)\n .div(position.reserveAmount)\n .minus(1)\n .toString();\n\n return {\n id: position.id,\n roiDec,\n protectedAmount,\n claimableAmount,\n fees,\n };\n });\n }\n\n return [];\n};\n\nexport const fetchProtectedPositions = async (\n pools: Pool[],\n currentUser: string\n): Promise => {\n const liquidityProtectionSettingsContractAddress =\n await settingsContractAddress$.pipe(take(1)).toPromise();\n\n const liquidityProtectionSettingsContract =\n LiquidityProtectionSettings__factory.connect(\n liquidityProtectionSettingsContractAddress,\n web3.provider\n );\n\n const liquidityProtectionStoreContractAddress =\n await liquidityProtectionStore$.pipe(take(1)).toPromise();\n\n const liquidityProtectionStoreContract =\n LiquidityProtectionStore__factory.connect(\n liquidityProtectionStoreContractAddress,\n web3.provider\n );\n\n const liquidityProtectionContractAddress = await liquidityProtection$\n .pipe(take(1))\n .toPromise();\n\n const liquidityProtectionContract = LiquidityProtection__factory.connect(\n liquidityProtectionContractAddress,\n web3.provider\n );\n\n const rawPositions = await fetchPositions(\n liquidityProtectionStoreContract,\n currentUser,\n pools\n );\n\n const protectionDelay = await multicall(\n buildProtectionDelayCall(liquidityProtectionSettingsContract)\n );\n\n if (rawPositions.length === 0 || !protectionDelay) return [];\n\n const minProtectionDelay = protectionDelay[0];\n const maxProtectionDelay = protectionDelay[1];\n\n const positionsRoi = await fetchROI(\n liquidityProtectionContract,\n rawPositions\n );\n\n // const positionsAPR = await fetchPoolAprs(\n // pools,\n // rawPositions,\n // liquidityProtectionContract\n // );\n\n const rewardsMultiplier = await fetchedRewardsMultiplier(\n currentUser,\n rawPositions\n );\n\n const rewardsAmount = await fetchedPendingRewards(currentUser, rawPositions);\n\n const positions = values(\n merge(\n keyBy(rawPositions, 'id'),\n keyBy(positionsRoi, 'id'),\n //keyBy(positionsAPR, 'id'),\n keyBy(rewardsMultiplier, 'id'),\n keyBy(rewardsAmount, 'id')\n )\n );\n\n return positions.map((position) => {\n const pool = pools.find((x) => x.pool_dlt_id === position.poolToken);\n const { decimals, usdPrice } = position.reserveToken;\n\n const initialStake = {\n tknAmount: shrinkToken(position.reserveAmount, decimals),\n usdAmount: calcUsdPrice(position.reserveAmount, usdPrice, decimals),\n };\n\n const timestamps = {\n initalStake: position.timestamp,\n insuranceStart: new BigNumber(position.timestamp)\n .plus(minProtectionDelay.toString())\n .toString(),\n fullCoverage: new BigNumber(position.timestamp)\n .plus(maxProtectionDelay.toString())\n .toString(),\n };\n\n const currentCoveragePercent = calculateProgressLevel(\n Number(timestamps.initalStake),\n Number(timestamps.fullCoverage)\n );\n\n return {\n positionId: position.id,\n pool: pool!,\n fees: position.fees,\n initialStake,\n protectedAmount: position.protectedAmount,\n claimableAmount: position.claimableAmount,\n reserveToken: position.reserveToken,\n roi: {\n fees: position.roiDec,\n },\n aprs: {\n day: '0', //position.aprDay,\n week: '0', //position.aprWeek,\n },\n rewardsMultiplier: position.rewardsMultiplier,\n rewardsAmount: position.rewardsAmount,\n timestamps,\n currentCoveragePercent,\n };\n });\n};\n\nexport const withdrawProtection = async (\n positionId: string,\n amount: string,\n tknAmount: string,\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: (error: string) => void\n) => {\n try {\n const liquidityProtectionContractAddress = await liquidityProtection$\n .pipe(take(1))\n .toPromise();\n\n const liquidityProtectionContract = LiquidityProtection__factory.connect(\n liquidityProtectionContractAddress,\n writeWeb3.signer\n );\n\n const percentage = new BigNumber(amount).div(tknAmount);\n sendLiquidityEvent(ConversionEvents.wallet_req);\n\n const estimate =\n await liquidityProtectionContract.estimateGas.removeLiquidity(\n positionId,\n decToPpm(percentage)\n );\n const gasLimit = changeGas(estimate.toString());\n\n const tx = await liquidityProtectionContract.removeLiquidity(\n positionId,\n decToPpm(percentage),\n { gasLimit }\n );\n sendLiquidityEvent(ConversionEvents.wallet_confirm);\n\n onHash(tx.hash);\n\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n console.error(e);\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed(e.message);\n }\n};\n\nexport const getWithdrawBreakdown = async (\n id: string,\n amount: string,\n tknAmount: string\n) => {\n const now = dayjs().unix();\n const liquidityProtectionContractAddress = await liquidityProtection$\n .pipe(take(1))\n .toPromise();\n\n const constract = LiquidityProtection__factory.connect(\n liquidityProtectionContractAddress,\n web3.provider\n );\n\n const percentage = new BigNumber(amount).div(tknAmount);\n\n const res = await constract.removeLiquidityReturn(\n id,\n decToPpm(percentage),\n now\n );\n const expectedAmount = res[0].toString();\n const actualAmount = res[1].toString();\n const bntAmount = res[2].toString();\n\n return {\n expectedAmount,\n actualAmount,\n bntAmount,\n };\n};\n","import { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { multicall, MultiCall } from 'services/web3/multicall/multicall';\nimport { BigNumber } from 'ethers';\nimport { Token } from 'services/observables/tokens';\nimport { PoolV3 } from 'services/observables/pools';\nimport dayjs from 'dayjs';\nimport { APIPoolV3 } from 'services/api/bancorApi/bancorApi.types';\nimport { toBigNumber } from 'utils/helperFunctions';\n\nexport const buildProviderStakeCall = (\n id: BigNumber,\n user: string\n): MultiCall => {\n const contract = ContractsApi.StandardRewards.read;\n\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'providerStake',\n methodParameters: [user, id],\n };\n};\n\nexport interface RewardsProgramStake {\n id: string;\n poolDltId: string;\n poolTokenAmountWei: string;\n tokenAmountWei: string;\n rewardsToken: Token;\n pendingRewardsWei: string;\n}\n\nexport const fetchStandardRewardsByUser = async (\n user: string,\n pools: PoolV3[]\n): Promise => {\n const poolsMap = new Map(pools.map((pool) => [pool.poolDltId, pool]));\n const allPrograms = pools.flatMap((p) => p.programs);\n\n try {\n const ids = await ContractsApi.StandardRewards.read.providerProgramIds(\n user\n );\n\n const calls = ids.map((id) => buildProviderStakeCall(id, user));\n const res = await multicall(calls);\n if (!res) {\n throw new Error('Multicall Error while fetching provider stake');\n }\n\n const poolTokenStakedWei = new Map(\n res.map((bn, idx) => [\n ids[idx].toString(),\n bn && bn.length ? (bn[0].toString() as string) : '0',\n ])\n );\n\n const programs = allPrograms.filter((p) =>\n ids.find((id) => id.toString() === p.id)\n );\n\n return await Promise.all(\n programs.map(async (program) => {\n const poolTokenAmountWei = poolTokenStakedWei.get(program.id) || '0';\n const tokenAmountWei = toBigNumber(poolTokenAmountWei).gt(0)\n ? await ContractsApi.BancorNetworkInfo.read.poolTokenToUnderlying(\n program.pool,\n poolTokenAmountWei\n )\n : '0';\n\n const pendingRewardsWei =\n await ContractsApi.StandardRewards.read.pendingRewards(user, [\n program.id,\n ]);\n\n const rewardsToken = poolsMap.get(program.rewardsToken)?.reserveToken;\n\n return {\n id: program.id,\n poolDltId: program.pool,\n rewardsToken: rewardsToken!,\n pendingRewardsWei: pendingRewardsWei.toString(),\n poolTokenAmountWei,\n tokenAmountWei: tokenAmountWei.toString(),\n };\n })\n );\n } catch (e) {\n console.error('failed to fetchStandardRewardsByUser', e);\n throw e;\n }\n};\n\nexport interface RewardsProgramRaw {\n id: string;\n pool: string;\n poolToken: string;\n rewardsToken: string;\n isEnabled: boolean;\n startTime: number;\n endTime: number;\n rewardRate: string;\n isActive: boolean;\n}\n\nexport const fetchAllStandardRewards = async (): Promise<\n RewardsProgramRaw[]\n> => {\n try {\n const ids = await ContractsApi.StandardRewards.read.programIds();\n\n const programs = await ContractsApi.StandardRewards.read.programs(ids);\n\n return programs.map((program) => ({\n id: program.id.toString(),\n pool: program.pool,\n poolToken: program.poolToken,\n rewardsToken: program.rewardsToken,\n isEnabled: program.isEnabled,\n startTime: program.startTime,\n endTime: program.endTime,\n rewardRate: program.rewardRate.toString(),\n isActive:\n program.isEnabled &&\n program.startTime <= dayjs.utc().unix() &&\n program.endTime >= dayjs.utc().unix(),\n }));\n } catch (e) {\n console.error(e);\n throw e;\n }\n};\n\nconst buildLatestProgramIdCall = (poolId: string): MultiCall => {\n const contract = ContractsApi.StandardRewards.read;\n\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'latestProgramId',\n methodParameters: [poolId],\n };\n};\n\nexport const fetchLatestProgramIdsMulticall = async (apiPools: APIPoolV3[]) => {\n const calls = apiPools.map(({ poolDltId }) =>\n buildLatestProgramIdCall(poolDltId)\n );\n const res = await multicall(calls);\n if (!res) {\n console.error('Multicall Error in fetchLatestProgramIdsMulticall');\n return undefined;\n }\n\n return new Map(\n res.map((bn, idx) => [\n apiPools[idx].poolDltId,\n bn && bn.length ? bn[0].toString() : undefined,\n ])\n );\n};\n","import { switchMapIgnoreThrow } from 'services/observables/customOperators';\nimport { fetchAllStandardRewards } from 'services/web3/v3/portfolio/standardStaking';\nimport { shareReplay } from 'rxjs/operators';\nimport { BehaviorSubject } from 'rxjs';\nimport { ProgramDataStructOutput } from 'services/web3/abis/types/StandardRewards';\n\nconst standardRewardProgramsReceiver$ = new BehaviorSubject<\n ProgramDataStructOutput[]\n>([]);\n\nexport const standardRewardPrograms$ = standardRewardProgramsReceiver$.pipe(\n switchMapIgnoreThrow(() => fetchAllStandardRewards()),\n shareReplay(1)\n);\n","import { allTokensNew$, Token, tokensV3$ } from 'services/observables/tokens';\nimport BigNumber from 'bignumber.js';\nimport { combineLatest } from 'rxjs';\nimport { switchMapIgnoreThrow } from 'services/observables/customOperators';\nimport { distinctUntilChanged, shareReplay } from 'rxjs/operators';\nimport { isEqual } from 'lodash';\nimport { apiPools$, apiPoolsV3$ } from 'services/observables/apiData';\nimport { bntToken } from 'services/web3/config';\nimport {\n APIPool,\n APIPoolV3,\n APIReward,\n} from 'services/api/bancorApi/bancorApi.types';\nimport { toBigNumber } from 'utils/helperFunctions';\nimport { calcApr, shrinkToken } from 'utils/formulas';\nimport { standardRewardPrograms$ } from 'services/observables/standardRewards';\nimport {\n fetchLatestProgramIdsMulticall,\n RewardsProgramRaw,\n} from 'services/web3/v3/portfolio/standardStaking';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\ndayjs.extend(utc);\n\nexport interface Reserve {\n address: string;\n weight: string;\n balance: string;\n symbol: string;\n logoURI: string;\n rewardApr?: number;\n decimals: number;\n usdPrice: number | string | null;\n}\n\nexport interface Pool {\n name: string;\n pool_dlt_id: string;\n converter_dlt_id: string;\n reserves: Reserve[];\n liquidity: number;\n volume_24h: number;\n fees_24h: number;\n fee: number;\n version: number;\n supply: number;\n decimals: number;\n apr: number;\n reward?: APIReward;\n isProtected: boolean;\n}\n\nexport interface PoolV3 extends APIPoolV3 {\n reserveToken: Token;\n apr: {\n tradingFees: number;\n standardRewards: number;\n autoCompounding: number;\n total: number;\n };\n programs: RewardsProgramRaw[];\n latestProgram?: RewardsProgramRaw;\n}\n\nexport interface PoolToken {\n bnt: {\n token: Reserve;\n amount: string;\n };\n tkn: {\n token: Reserve;\n amount: string;\n };\n amount: string;\n value: string;\n poolDecimals: number;\n converter: string;\n poolName: string;\n version: number;\n}\n\nexport const buildPoolObject = (\n apiPool: APIPool,\n tkn: Token,\n bnt: Token\n): Pool | undefined => {\n const liquidity = Number(apiPool.liquidity.usd ?? 0);\n const fees_24h = Number(apiPool.fees_24h.usd ?? 0);\n let apr = 0;\n if (liquidity && fees_24h) {\n apr = new BigNumber(fees_24h)\n .times(365)\n .div(liquidity)\n .times(100)\n .toNumber();\n }\n\n const reserveTkn = apiPool.reserves.find((r) => r.address === tkn.address);\n if (!reserveTkn) {\n return undefined;\n }\n const reserveBnt = apiPool.reserves.find((r) => r.address === bnt.address);\n if (!reserveBnt) {\n return undefined;\n }\n\n const reserves: Reserve[] = [\n {\n ...reserveTkn,\n rewardApr: Number(reserveTkn.apr) / 10000,\n symbol: tkn.symbol,\n logoURI: tkn.logoURI,\n decimals: tkn.decimals,\n usdPrice: tkn.usdPrice,\n },\n {\n ...reserveBnt,\n rewardApr: Number(reserveBnt.apr) / 10000,\n symbol: bnt.symbol,\n logoURI: bnt.logoURI,\n decimals: bnt.decimals,\n usdPrice: bnt.usdPrice,\n },\n ];\n\n const isProtected = tkn.isProtected;\n\n return {\n name: apiPool.name,\n pool_dlt_id: apiPool.pool_dlt_id,\n converter_dlt_id: apiPool.converter_dlt_id,\n reserves,\n liquidity,\n volume_24h: Number(apiPool.volume_24h.usd ?? 0),\n fees_24h,\n fee: Number(apiPool.fee) / 10000,\n version: apiPool.version,\n supply: Number(apiPool.supply),\n decimals: apiPool.decimals,\n apr,\n reward: apiPool.reward,\n isProtected,\n };\n};\n\nconst buildPoolV3Object = async (\n apiPool?: APIPoolV3,\n reserveToken?: Token,\n latestProgramIdMap?: Map,\n rewardsPrograms?: RewardsProgramRaw[]\n): Promise => {\n if (!apiPool || !reserveToken) {\n return undefined;\n }\n\n // ALL programs of this pool\n const programs = rewardsPrograms?.filter((p) => p.pool === apiPool.poolDltId);\n\n // The latest program\n const latestProgram = programs?.find(\n (p) => p.id === latestProgramIdMap?.get(apiPool.poolDltId)\n );\n\n // Calculate APR\n let standardRewardsApr = 0;\n if (programs && programs.length) {\n standardRewardsApr = programs\n // Only use APR from active programs\n .filter((p) => p.isActive)\n .reduce((acc, data) => {\n // TODO - currently assuming reward token to be BNT\n const rewardRate = shrinkToken(data.rewardRate ?? 0, 18);\n const rewardRate24h = toBigNumber(rewardRate)\n .times(60 * 60)\n .times(24);\n return acc + calcApr(rewardRate24h, apiPool.standardRewardsStaked.bnt);\n }, 0);\n }\n\n const tradingFeesApr = calcApr(\n apiPool.fees24h.usd,\n apiPool.stakedBalance.usd\n );\n\n // TODO - add values once available\n const autoCompoundingApr = 0;\n\n const totalApr = toBigNumber(tradingFeesApr)\n .plus(standardRewardsApr)\n .toNumber();\n\n return {\n ...apiPool,\n apr: {\n tradingFees: tradingFeesApr,\n standardRewards: standardRewardsApr,\n autoCompounding: autoCompoundingApr,\n total: totalApr,\n },\n reserveToken,\n programs: programs ?? [],\n latestProgram,\n };\n};\n\nexport const poolsNew$ = combineLatest([apiPools$, allTokensNew$]).pipe(\n switchMapIgnoreThrow(async ([apiPools, allTokens]) => {\n const bnt = allTokens.find((t) => t.address === bntToken);\n if (!bnt) {\n return [];\n }\n return allTokens\n .map((tkn) => {\n if (tkn.address === bntToken) {\n return undefined;\n }\n const apiPool = apiPools.find((pool) => {\n return pool.reserves.find((reserve) => {\n return reserve.address === tkn.address;\n });\n });\n if (!apiPool) {\n return undefined;\n }\n return buildPoolObject(apiPool, tkn, bnt);\n })\n .filter((pool) => !!pool) as Pool[];\n }),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const poolsV3$ = combineLatest([\n apiPoolsV3$,\n tokensV3$,\n standardRewardPrograms$,\n]).pipe(\n switchMapIgnoreThrow(\n async ([apiPoolsV3, allTokens, standardRewardPrograms]) => {\n const tokensMap = new Map(allTokens.map((t) => [t.address, t]));\n\n const latestProgramIds = await fetchLatestProgramIdsMulticall(apiPoolsV3);\n\n const pools = await Promise.all(\n apiPoolsV3.map(\n async (pool) =>\n await buildPoolV3Object(\n pool,\n tokensMap.get(pool.poolDltId),\n latestProgramIds,\n standardRewardPrograms\n )\n )\n );\n return pools.filter((pool) => !!pool) as PoolV3[];\n }\n ),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTrade(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 21\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.4895 1.25C14.3482 1.25003 14.2102 1.29221 14.093 1.37114C13.9758 1.45007 13.8849 1.56216 13.8318 1.69307C13.7787 1.82398 13.7659 1.96775 13.7949 2.10599C13.824 2.24424 13.8937 2.37066 13.995 2.46909L16.569 5.04315H1.71994C1.62588 5.04182 1.53249 5.0592 1.4452 5.09427C1.35792 5.12935 1.27847 5.18142 1.21149 5.24747C1.1445 5.31351 1.09131 5.39221 1.055 5.47899C1.0187 5.56577 1 5.65891 1 5.75298C1 5.84705 1.0187 5.94018 1.055 6.02696C1.09131 6.11374 1.1445 6.19244 1.21149 6.25849C1.27847 6.32453 1.35792 6.37661 1.4452 6.41168C1.53249 6.44676 1.62588 6.46414 1.71994 6.46281H16.569L13.995 9.03686C13.9269 9.10227 13.8725 9.18061 13.835 9.2673C13.7975 9.35399 13.7777 9.44728 13.7768 9.54172C13.7758 9.63615 13.7937 9.72983 13.8294 9.81727C13.8651 9.9047 13.9179 9.98413 13.9847 10.0509C14.0515 10.1177 14.1309 10.1705 14.2183 10.2062C14.3058 10.2419 14.3994 10.2598 14.4939 10.2588C14.5883 10.2578 14.6816 10.238 14.7683 10.2006C14.855 10.1631 14.9333 10.1087 14.9987 10.0406L18.7845 6.25485C18.9176 6.12172 18.9923 5.9412 18.9923 5.75298C18.9923 5.56475 18.9176 5.38423 18.7845 5.25111L14.9987 1.46535C14.9326 1.39721 14.8534 1.34305 14.7659 1.30606C14.6784 1.26907 14.5844 1.25 14.4895 1.25V1.25ZM5.49183 10.2421C5.30748 10.2475 5.13246 10.3244 5.00382 10.4565L1.21807 14.2423C1.085 14.3754 1.01025 14.5559 1.01025 14.7441C1.01025 14.9324 1.085 15.1129 1.21807 15.246L5.00382 19.0318C5.06923 19.0999 5.14757 19.1543 5.23426 19.1917C5.32095 19.2292 5.41425 19.249 5.50868 19.25C5.60312 19.2509 5.69679 19.233 5.78423 19.1973C5.87166 19.1616 5.95109 19.1089 6.01787 19.0421C6.08465 18.9753 6.13744 18.8959 6.17313 18.8084C6.20883 18.721 6.22672 18.6273 6.22576 18.5329C6.2248 18.4385 6.20501 18.3452 6.16754 18.2585C6.13007 18.1718 6.07569 18.0934 6.00756 18.028L3.43351 15.454H18.2826C18.3767 15.4553 18.4701 15.4379 18.5573 15.4028C18.6446 15.3678 18.7241 15.3157 18.7911 15.2497C18.858 15.1836 18.9112 15.1049 18.9475 15.0181C18.9839 14.9313 19.0025 14.8382 19.0025 14.7441C19.0025 14.6501 18.9839 14.5569 18.9475 14.4702C18.9112 14.3834 18.858 14.3047 18.7911 14.2386C18.7241 14.1726 18.6446 14.1205 18.5573 14.0854C18.4701 14.0504 18.3767 14.033 18.2826 14.0343H3.43351L6.00756 11.4603C6.10997 11.3605 6.17988 11.2322 6.20815 11.0921C6.23641 10.952 6.22172 10.8066 6.16599 10.6749C6.11026 10.5433 6.01609 10.4315 5.8958 10.3543C5.77552 10.2771 5.63472 10.238 5.49183 10.2421V10.2421Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrade);\nexport default __webpack_public_path__ + \"static/media/trade.36629eda.svg\";\nexport { ForwardRef as ReactComponent };","import { BigNumber } from 'bignumber.js';\nimport { combineLatest, from } from 'rxjs';\nimport { distinctUntilChanged, shareReplay } from 'rxjs/operators';\nimport { fetchLockedAvailableBalances } from 'services/web3/lockedbnt/lockedbnt';\nimport {\n fetchProtectedPositions,\n ProtectedPosition,\n} from 'services/web3/protection/positions';\nimport {\n fetchPendingRewards,\n fetchSnapshotRewards,\n fetchTotalClaimedRewards,\n} from 'services/web3/protection/rewards';\nimport { switchMapIgnoreThrow } from './customOperators';\nimport { oneMinute$ } from './timers';\nimport {\n setLoadingPositions,\n setLoadingRewards,\n setLoadingLockedBnt,\n user$,\n} from './user';\nimport { poolsNew$ } from 'services/observables/pools';\nimport { isEqual } from 'lodash';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { bntDecimals, bntToken } from 'services/web3/config';\nimport { shrinkToken } from 'utils/formulas';\n\nexport const protectedPositions$ = combineLatest([poolsNew$, user$]).pipe(\n switchMapIgnoreThrow(async ([pools, user]) => {\n if (user) {\n const positions = await fetchProtectedPositions(pools, user);\n setLoadingPositions(false);\n return positions;\n }\n\n setLoadingPositions(false);\n\n return [];\n }),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport interface Rewards {\n pendingRewards: string;\n totalRewards: string;\n}\nexport interface SnapshotRewards {\n claimable: string;\n totalClaimed: string;\n}\n\nexport const rewards$ = combineLatest([user$, oneMinute$]).pipe(\n switchMapIgnoreThrow(async ([user, _]) => {\n if (user) {\n const pendingRewards = await fetchPendingRewards(user);\n const claimedRewards = await fetchTotalClaimedRewards(user);\n\n const totalRewards = new BigNumber(pendingRewards)\n .plus(claimedRewards)\n .toString();\n\n setLoadingRewards(false);\n\n return {\n pendingRewards,\n totalRewards,\n };\n }\n setLoadingRewards(false);\n }),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n);\n\nexport const lockedAvailableBnt$ = combineLatest([user$]).pipe(\n switchMapIgnoreThrow(async ([user]) => {\n if (user) {\n setLoadingRewards(true);\n setLoadingPositions(true);\n setLoadingLockedBnt(true);\n const lockedAvailableBalances = await fetchLockedAvailableBalances(user);\n setLoadingLockedBnt(false);\n return lockedAvailableBalances;\n }\n setLoadingLockedBnt(false);\n }),\n shareReplay(1)\n);\n\nconst fetchProtocolBnBNTAmount = async () => {\n const bnBNT = await ContractsApi.BancorNetworkInfo.read.poolToken(bntToken);\n const bntPool = await ContractsApi.BancorNetworkInfo.read.bntPool();\n const protocolBnBNTAmount = await ContractsApi.Token(bnBNT).read.balanceOf(\n bntPool\n );\n return Number(shrinkToken(protocolBnBNTAmount.toString(), bntDecimals));\n};\n\nexport const protocolBnBNTAmount$ = from(fetchProtocolBnBNTAmount()).pipe(\n shareReplay(1)\n);\n\nexport const snapshots$ = from(fetchSnapshotRewards()).pipe(shareReplay(1));\n","import { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { fetchTokenBalanceMulticall } from 'services/web3/token/token';\nimport { HoldingRaw } from 'store/portfolio/v3Portfolio.types';\nimport BigNumber from 'bignumber.js';\nimport { multicall } from 'services/web3/multicall/multicall';\nimport { APIPoolV3 } from 'services/api/bancorApi/bancorApi.types';\n\nconst fetchPoolTokenToUnderlyingMulticall = async (\n data: { poolDltId: string; amount: string }[]\n): Promise> => {\n const calls = data.map(({ poolDltId, amount }) => ({\n contractAddress: ContractsApi.BancorNetworkInfo.read.address,\n interface: ContractsApi.BancorNetworkInfo.read.interface,\n methodName: 'poolTokenToUnderlying',\n methodParameters: [poolDltId, amount],\n }));\n const res = await multicall(calls);\n\n if (!res || !res.length) {\n throw new Error('Multicall Error while fetching pool token to underlying');\n }\n\n return new Map(\n res.map((bn, idx) => {\n const tokenId = data[idx].poolDltId;\n const amount = bn && bn.length ? bn[0].toString() : '0';\n return [tokenId, amount];\n })\n );\n};\n\nexport const fetchPortfolioV3Holdings = async (\n apiPools: APIPoolV3[],\n user: string\n): Promise => {\n try {\n const poolTokenIdsMap = new Map(\n apiPools.map((pool) => [pool.poolDltId, pool.poolTokenDltId])\n );\n const poolTokenIds = apiPools.map((pool) => pool.poolTokenDltId);\n const poolTokenBalancesMap = await fetchTokenBalanceMulticall(\n poolTokenIds,\n user\n );\n\n const poolIdsWithPoolTokenBalance = apiPools.map(({ poolDltId }) => {\n const poolTokenId = poolTokenIdsMap.get(poolDltId) ?? '';\n const amount = poolTokenBalancesMap.get(poolTokenId) ?? '0';\n return {\n poolDltId,\n amount,\n };\n });\n\n const poolTokenToUnderlyingMap = await fetchPoolTokenToUnderlyingMulticall(\n poolIdsWithPoolTokenBalance\n );\n\n const holdingsRaw: HoldingRaw[] = apiPools\n .map(({ poolDltId }) => {\n const poolTokenId = poolTokenIdsMap.get(poolDltId) ?? '';\n const poolTokenBalanceWei = poolTokenBalancesMap.get(poolTokenId);\n const tokenBalanceWei = poolTokenToUnderlyingMap.get(poolDltId);\n\n if (!poolTokenId || !poolTokenBalanceWei || !tokenBalanceWei) {\n return undefined;\n }\n\n return {\n poolDltId,\n poolTokenId,\n poolTokenBalanceWei,\n tokenBalanceWei,\n } as HoldingRaw;\n })\n .filter((holdingRaw) => !!holdingRaw) as HoldingRaw[];\n\n return holdingsRaw.filter((h) => new BigNumber(h.tokenBalanceWei).gt(0));\n } catch (e) {\n console.error('failed to fetchPortfolioV3Holdings', e);\n throw e;\n }\n};\n","import { ContractsApi } from 'services/web3/v3/contractsApi';\nimport {\n WithdrawalRequest,\n WithdrawalRequestRaw,\n WithdrawalSettings,\n} from 'store/portfolio/v3Portfolio.types';\nimport { ppmToDec } from 'utils/helperFunctions';\nimport BigNumber from 'bignumber.js';\nimport { expandToken } from 'utils/formulas';\n\nexport const fetchPortfolioV3WithdrawalSettings =\n async (): Promise => {\n const lockDuration =\n await ContractsApi.PendingWithdrawals.read.lockDuration();\n const withdrawalFeePPM =\n await ContractsApi.NetworkSettings.read.withdrawalFeePPM();\n const withdrawalFee = ppmToDec(withdrawalFeePPM).toNumber();\n\n return { lockDuration, withdrawalFee };\n };\n\nexport const fetchPortfolioV3Withdrawals = async (\n user: string\n): Promise => {\n const withdrawalRequestIds =\n await ContractsApi.PendingWithdrawals.read.withdrawalRequestIds(user);\n\n const withdrawalRequests = await Promise.all(\n withdrawalRequestIds.map(\n async (id) =>\n await ContractsApi.PendingWithdrawals.read.withdrawalRequest(id)\n )\n );\n\n return withdrawalRequests.map((request, idx) => ({\n id: withdrawalRequestIds[idx].toNumber(),\n provider: request.provider,\n poolToken: request.poolToken,\n reserveToken: request.reserveToken,\n createdAt: request.createdAt,\n poolTokenAmountWei: request.poolTokenAmount.toString(),\n reserveTokenAmountWei: request.reserveTokenAmount.toString(),\n }));\n};\n\nexport const fetchWithdrawalRequestOutputBreakdown = async (\n req: WithdrawalRequest\n): Promise<{ tkn: number; bnt: number }> => {\n try {\n const res = await ContractsApi.BancorNetworkInfo.read.withdrawalAmounts(\n req.reserveToken,\n expandToken(req.poolTokenAmount, req.pool.reserveToken.decimals)\n );\n const tkn = new BigNumber(res.baseTokenAmount.toString())\n .div(res.totalAmount.toString())\n .times(100)\n .toNumber();\n const bnt = new BigNumber(100).minus(tkn).toNumber();\n return {\n tkn,\n bnt,\n };\n } catch (e) {\n console.error('failed to fetch output distribution: ', e);\n throw e;\n }\n};\n","import { BehaviorSubject, combineLatest } from 'rxjs';\nimport { user$ } from 'services/observables/user';\nimport { switchMapIgnoreThrow } from 'services/observables/customOperators';\nimport { shareReplay } from 'rxjs/operators';\nimport { fetchPortfolioV3Holdings } from 'services/web3/v3/portfolio/holdings';\nimport {\n fetchPortfolioV3Withdrawals,\n fetchPortfolioV3WithdrawalSettings,\n} from 'services/web3/v3/portfolio/withdraw';\nimport { WithdrawalSettings } from 'store/portfolio/v3Portfolio.types';\nimport { fetchStandardRewardsByUser } from 'services/web3/v3/portfolio/standardStaking';\nimport { oneMinute$ } from 'services/observables/timers';\nimport { apiPoolsV3$ } from 'services/observables/apiData';\nimport { poolsV3$ } from 'services/observables/pools';\n\nexport const portfolioHoldings$ = combineLatest([\n apiPoolsV3$,\n user$,\n oneMinute$,\n]).pipe(\n switchMapIgnoreThrow(async ([apiPools, user]) => {\n if (!user) return [];\n\n return fetchPortfolioV3Holdings(apiPools, user);\n }),\n shareReplay(1)\n);\n\nexport const portfolioStandardRewards$ = combineLatest([\n user$,\n poolsV3$,\n oneMinute$,\n]).pipe(\n switchMapIgnoreThrow(async ([user, poolsV3]) => {\n if (!user) return [];\n\n return fetchStandardRewardsByUser(user, poolsV3);\n }),\n shareReplay(1)\n);\n\nexport const portfolioWithdrawals$ = combineLatest([user$, oneMinute$]).pipe(\n switchMapIgnoreThrow(async ([user]) => {\n if (!user) return [];\n\n return fetchPortfolioV3Withdrawals(user);\n }),\n shareReplay(1)\n);\n\nconst portfolioWithdrawalSettingsReceiver$ =\n new BehaviorSubject({\n lockDuration: 0,\n withdrawalFee: 0,\n });\n\nexport const portfolioWithdrawalSettings$ =\n portfolioWithdrawalSettingsReceiver$.pipe(\n switchMapIgnoreThrow(() => fetchPortfolioV3WithdrawalSettings()),\n shareReplay(1)\n );\n","import { bancorNetwork$ } from 'services/observables/contracts';\nimport { Token } from 'services/observables/tokens';\nimport { web3, writeWeb3 } from 'services/web3';\nimport {\n bntDecimals,\n bntToken,\n changeGas,\n ethToken,\n wethToken,\n zeroAddress,\n} from 'services/web3/config';\nimport { take } from 'rxjs/operators';\nimport BigNumber from 'bignumber.js';\nimport {\n ConversionEvents,\n sendConversionEvent,\n} from 'services/api/googleTagManager';\nimport { calcReserve, expandToken, shrinkToken } from 'utils/formulas';\nimport { getFutureTime, ppmToDec } from 'utils/helperFunctions';\nimport { BancorNetwork__factory, Converter__factory } from '../abis/types';\nimport { MultiCall as MCInterface, multicall } from '../multicall/multicall';\nimport { ErrorCode } from '../types';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport dayjs from 'utils/dayjs';\nimport { apiData$, apiPoolsV3$ } from 'services/observables/apiData';\n\nexport const getRateAndPriceImapct = async (\n fromToken: Token,\n toToken: Token,\n amount: string,\n forceV3Routing: boolean\n) => {\n try {\n const networkContractAddress = await bancorNetwork$\n .pipe(take(1))\n .toPromise();\n\n const contract = BancorNetwork__factory.connect(\n networkContractAddress,\n web3.provider\n );\n\n const from =\n fromToken.address === wethToken\n ? { ...fromToken, address: ethToken }\n : fromToken;\n const to =\n toToken.address === wethToken\n ? { ...toToken, address: ethToken }\n : toToken;\n\n const path = await contract.conversionPath(from.address, to.address);\n\n const fromAmountWei = expandToken(amount, fromToken.decimals);\n const rateShape: MCInterface = {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'rateByPath',\n methodParameters: [path, fromAmountWei],\n };\n\n const v2SpotRate = await calculateSpotPriceAndRate(\n fromToken,\n to,\n rateShape\n );\n const v2Rate = shrinkToken(v2SpotRate.rate, toToken.decimals);\n const v2PI = new BigNumber(1)\n .minus(new BigNumber(v2Rate).div(amount).div(v2SpotRate.spotPrice))\n .times(100);\n const v2PriceImpact = isNaN(v2PI.toNumber()) ? '0.0000' : v2PI.toFixed(4);\n\n const tradingEnabled = await v3PoolTradingEnabled(fromToken.address);\n const v3Rate = tradingEnabled\n ? await getV3Rate(fromToken, toToken, amount)\n : '0';\n const v3PI = tradingEnabled\n ? await getV3PriceImpact(fromToken, toToken, amount, v3Rate)\n : new BigNumber(0);\n const v3PriceImpact = isNaN(v3PI.toNumber()) ? '0.0000' : v3PI.toFixed(4);\n\n const isV3 =\n forceV3Routing || v3Rate !== '0' || Number(v3Rate) >= Number(v2Rate);\n\n console.log('V2 Rate', v2Rate);\n console.log('V3 Rate', v3Rate);\n\n return {\n rate: isV3 ? v3Rate : v2Rate,\n priceImpact: isV3 ? v3PriceImpact : v2PriceImpact,\n isV3,\n };\n } catch (error) {\n console.error('Failed fetching rate and price impact: ', error);\n return { rate: '0', priceImpact: '0.0000', isV3: false };\n }\n};\n\nexport const getRate = async (\n fromToken: Token,\n toToken: Token,\n amount: string\n) => {\n try {\n const networkContractAddress = await bancorNetwork$\n .pipe(take(1))\n .toPromise();\n\n const contract = BancorNetwork__factory.connect(\n networkContractAddress,\n web3.provider\n );\n\n const from = fromToken.address === wethToken ? ethToken : fromToken.address;\n const to = toToken.address === wethToken ? ethToken : toToken.address;\n\n const path = await contract.conversionPath(from, to);\n\n const fromAmountWei = expandToken(amount, fromToken.decimals);\n const toAmountWei = await contract.rateByPath(path, fromAmountWei);\n return shrinkToken(toAmountWei.toString(), toToken.decimals);\n } catch (error) {\n console.error('Failed fetching rate', error);\n return { rate: '0', priceImpact: '0.0000' };\n }\n};\n\nexport const calculateMinimumReturn = (\n expectedWei: string,\n slippageTolerance: number\n): string => {\n const res = new BigNumber(expectedWei)\n .times(new BigNumber(1).minus(slippageTolerance))\n .toFixed(0);\n\n return res === '0' ? '1' : res;\n};\n\nexport const swap = async (\n isV3: boolean,\n user: string,\n slippageTolerance: number,\n fromToken: Token,\n toToken: Token,\n fromAmount: string,\n toAmount: string,\n onHash: (txHash: string) => void,\n onCompleted: (txHash: string) => void,\n rejected: Function,\n failed: (error: string) => void\n) => {\n try {\n sendConversionEvent(ConversionEvents.wallet_req);\n\n const tx = await executeSwapTx(\n isV3,\n user,\n slippageTolerance,\n fromToken,\n toToken,\n fromAmount,\n toAmount\n );\n\n sendConversionEvent(ConversionEvents.wallet_confirm, tx.hash);\n\n onHash(tx.hash);\n await tx.wait();\n onCompleted(tx.hash);\n } catch (e: any) {\n console.error('Swap failed with error: ', e);\n\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed(e.message);\n }\n};\n\nexport const executeSwapTx = async (\n isV3: boolean,\n user: string,\n slippageTolerance: number,\n fromToken: Token,\n toToken: Token,\n fromAmount: string,\n toAmount: string\n) => {\n const fromIsEth = fromToken.address === ethToken;\n const fromWei = expandToken(fromAmount, fromToken.decimals);\n const expectedToWei = expandToken(toAmount, toToken.decimals);\n const minReturn = calculateMinimumReturn(expectedToWei, slippageTolerance);\n\n if (isV3) {\n return await ContractsApi.BancorNetwork.write.tradeBySourceAmount(\n fromToken.address,\n toToken.address,\n fromWei,\n minReturn,\n getFutureTime(dayjs.duration({ days: 7 })),\n user,\n { value: fromIsEth ? fromWei : undefined }\n );\n }\n\n const networkContractAddress = await bancorNetwork$.pipe(take(1)).toPromise();\n\n const contract = BancorNetwork__factory.connect(\n networkContractAddress,\n writeWeb3.signer\n );\n\n const path = await findPath(fromToken.address, toToken.address);\n if (path.length === 0) throw new Error('No path was found between tokens');\n\n const estimate = await contract.estimateGas.convertByPath(\n path,\n fromWei,\n minReturn,\n zeroAddress,\n zeroAddress,\n 0,\n { value: fromIsEth ? fromWei : undefined }\n );\n const gasLimit = changeGas(estimate.toString());\n\n return await contract.convertByPath(\n path,\n fromWei,\n minReturn,\n zeroAddress,\n zeroAddress,\n 0,\n { value: fromIsEth ? fromWei : undefined, gasLimit }\n );\n};\n\nconst findPath = async (from: string, to: string) => {\n if (from === bntToken) {\n const pool = await findPoolByToken(to);\n if (!pool) return [];\n return [from, pool.pool_dlt_id, to];\n }\n\n if (to === bntToken) {\n const pool = await findPoolByToken(from);\n if (!pool) return [];\n return [from, pool.pool_dlt_id, to];\n }\n\n const fromPool = await findPoolByToken(from);\n const toPool = await findPoolByToken(to);\n if (!(fromPool && toPool)) return [];\n\n return [from, fromPool.pool_dlt_id, bntToken, toPool.pool_dlt_id, to];\n};\n\nconst calculateSpotPriceAndRate = async (\n from: Token,\n to: Token,\n rateShape: MCInterface\n) => {\n let pool;\n if (from.address === bntToken) pool = await findPoolByToken(to.address);\n if (to.address === bntToken) pool = await findPoolByToken(from.address);\n\n if (pool) {\n const fromShape = buildTokenPoolCall(pool.converter_dlt_id, from.address);\n const toShape = buildTokenPoolCall(pool.converter_dlt_id, to.address);\n\n const mCall = [fromShape, toShape, rateShape];\n const res = await multicall(mCall);\n\n if (res && res.length === mCall.length) {\n return {\n spotPrice: calcReserve(\n shrinkToken(res[0].toString(), from.decimals),\n shrinkToken(res[1].toString(), to.decimals),\n ppmToDec(pool.fee)\n ),\n rate: res[2].toString(),\n };\n }\n }\n const empty = { rate: '0', spotPrice: new BigNumber(0) };\n //First hop\n const fromPool = await findPoolByToken(from.address);\n if (!fromPool) return empty;\n\n const fromShape1 = buildTokenPoolCall(\n fromPool.converter_dlt_id,\n from.address\n );\n const bntShape1 = buildTokenPoolCall(fromPool.converter_dlt_id, bntToken);\n\n //Second hop\n const toPool = await findPoolByToken(to.address);\n if (!toPool) return empty;\n\n const bntShape2 = buildTokenPoolCall(toPool.converter_dlt_id, bntToken);\n const toShape2 = buildTokenPoolCall(toPool.converter_dlt_id, to.address);\n\n const mCall = [fromShape1, bntShape1, bntShape2, toShape2, rateShape];\n const res = await multicall(mCall);\n\n if (res && res.length === mCall.length) {\n const spot1 = calcReserve(\n shrinkToken(res[0].toString(), from.decimals),\n shrinkToken(res[1].toString(), 18),\n ppmToDec(fromPool.fee)\n );\n\n const spot2 = calcReserve(\n shrinkToken(res[2].toString(), 18),\n shrinkToken(res[3].toString(), to.decimals),\n ppmToDec(toPool.fee)\n );\n\n return { spotPrice: spot1.times(spot2), rate: res[4].toString() };\n }\n\n return empty;\n};\n\nexport const buildTokenPoolCall = (\n contractAddress: string,\n tokenAddress: string\n): MCInterface => {\n const contract = Converter__factory.connect(contractAddress, web3.provider);\n\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'getConnectorBalance',\n methodParameters: [tokenAddress],\n };\n};\n\nconst findPoolByToken = async (tkn: string) => {\n const apiData = await apiData$.pipe(take(1)).toPromise();\n\n const pool = apiData.pools.find(\n (x) => x && x.reserves.find((x) => x.address === tkn)\n );\n if (pool) return pool;\n};\n\nexport const v3PoolTradingEnabled = async (tkn: string) => {\n const pools = await apiPoolsV3$.pipe(take(1)).toPromise();\n const pool = pools.find((pool) => pool.poolDltId === tkn);\n return pool && pool.tradingEnabled;\n};\n\nexport const getV3Rate = async (\n fromToken: Token,\n toToken: Token,\n amount: string\n) => {\n try {\n const res =\n await ContractsApi.BancorNetworkInfo.read.tradeOutputBySourceAmount(\n fromToken.address,\n toToken.address,\n expandToken(amount, fromToken.decimals)\n );\n return shrinkToken(res.toString(), fromToken.decimals);\n } catch (error) {\n return '0';\n }\n};\n\nexport const getV3RateInverse = async (\n fromToken: Token,\n toToken: Token,\n amount: string\n) => {\n try {\n const res =\n await ContractsApi.BancorNetworkInfo.read.tradeInputByTargetAmount(\n fromToken.address,\n toToken.address,\n expandToken(amount, fromToken.decimals)\n );\n return shrinkToken(res.toString(), fromToken.decimals);\n } catch (error) {\n return '0';\n }\n};\n\nexport const getV3PriceImpact = async (\n fromToken: Token,\n toToken: Token,\n amount: string,\n rate: string\n) => {\n try {\n const fromBNT = fromToken.address === bntToken;\n const toBNT = toToken.address === bntToken;\n\n if (fromBNT || toBNT) {\n const tradingFeePPM =\n await ContractsApi.BancorNetworkInfo.read.tradingFeePPM(\n fromBNT ? toToken.address : fromToken.address\n );\n const tradingLiquidity =\n await ContractsApi.BancorNetworkInfo.read.tradingLiquidity(\n fromBNT ? toToken.address : fromToken.address\n );\n\n const spotPrice = calcReserve(\n shrinkToken(\n toBNT\n ? tradingLiquidity.baseTokenTradingLiquidity.toString()\n : tradingLiquidity.bntTradingLiquidity.toString(),\n toBNT ? fromToken.decimals : toToken.decimals\n ),\n shrinkToken(\n fromBNT\n ? tradingLiquidity.baseTokenTradingLiquidity.toString()\n : tradingLiquidity.bntTradingLiquidity.toString(),\n fromBNT ? toToken.decimals : fromToken.decimals\n ),\n ppmToDec(tradingFeePPM)\n );\n\n const priceImpact = new BigNumber(1)\n .minus(new BigNumber(rate).div(amount).div(spotPrice))\n .times(100);\n\n return priceImpact;\n }\n\n const fromLiqudity =\n await ContractsApi.BancorNetworkInfo.read.tradingLiquidity(\n fromToken.address\n );\n const toLiqudity =\n await ContractsApi.BancorNetworkInfo.read.tradingLiquidity(\n toToken.address\n );\n\n const fromTradingFeePPM =\n await ContractsApi.BancorNetworkInfo.read.tradingFeePPM(\n fromToken.address\n );\n const toTradingFeePPM =\n await ContractsApi.BancorNetworkInfo.read.tradingFeePPM(toToken.address);\n\n const spot1 = calcReserve(\n shrinkToken(\n fromLiqudity.baseTokenTradingLiquidity.toString(),\n fromToken.decimals\n ),\n shrinkToken(fromLiqudity.bntTradingLiquidity.toString(), bntDecimals),\n ppmToDec(fromTradingFeePPM)\n );\n\n const spot2 = calcReserve(\n shrinkToken(toLiqudity.bntTradingLiquidity.toString(), bntDecimals),\n shrinkToken(\n toLiqudity.baseTokenTradingLiquidity.toString(),\n toToken.decimals\n ),\n ppmToDec(toTradingFeePPM)\n );\n\n const spotPrice = spot1.times(spot2);\n\n const priceImpact = new BigNumber(1)\n .minus(new BigNumber(rate).div(amount).div(spotPrice))\n .times(100);\n\n return priceImpact;\n } catch (error) {\n return new BigNumber(0);\n }\n};\n","import { bancorConverterRegistry$ } from 'services/observables/contracts';\nimport { switchMapIgnoreThrow } from 'services/observables/customOperators';\nimport { ConverterRegistry__factory } from 'services/web3/abis/types';\nimport { web3 } from 'services/web3';\nimport { shareReplay, startWith } from 'rxjs/operators';\nimport { combineLatest } from 'rxjs';\nimport { ConverterAndAnchor } from 'services/web3/types';\nimport { user$ } from 'services/observables/user';\nimport { multicall } from 'services/web3/multicall/multicall';\nimport { utils } from 'ethers';\nimport { zip } from 'lodash';\nimport { poolsNew$, PoolToken } from 'services/observables/pools';\nimport { findPoolByConverter } from 'utils/helperFunctions';\nimport { shrinkToken } from 'utils/formulas';\nimport { buildTokenPoolCall } from 'services/web3/swap/market';\nimport { ropstenImage } from 'services/web3/config';\nimport BigNumber from 'bignumber.js';\nimport { apiPools$ } from 'services/observables/apiData';\nimport {\n buildTokenBalanceCall,\n buildTokenTotalSupplyCall,\n} from 'services/web3/token/token';\n\nconst trueAnchors$ = bancorConverterRegistry$.pipe(\n switchMapIgnoreThrow(async (converterRegistry) => {\n const contract = ConverterRegistry__factory.connect(\n converterRegistry,\n web3.provider\n );\n return await contract.getAnchors();\n }),\n shareReplay(1)\n);\n\nconst anchorAndConverters$ = combineLatest([\n trueAnchors$,\n bancorConverterRegistry$,\n]).pipe(\n switchMapIgnoreThrow(async ([anchorAddresses, converterRegistryAddress]) => {\n const contract = ConverterRegistry__factory.connect(\n converterRegistryAddress,\n web3.provider\n );\n\n const converters = await contract.getConvertersByAnchors(anchorAddresses);\n return zipAnchorAndConverters(anchorAddresses, converters);\n }),\n startWith([] as ConverterAndAnchor[]),\n shareReplay(1)\n);\n\nexport const partialPoolTokens$ = combineLatest([\n anchorAndConverters$,\n user$,\n]).pipe(\n switchMapIgnoreThrow(async ([anchorAndConverters, user]) => {\n if (!user) return [];\n\n const calls = anchorAndConverters.map((x) =>\n buildTokenBalanceCall(x.anchorAddress, user)\n );\n\n const res = await multicall(calls);\n if (res) {\n const partialPTokens = res\n .map((x, index) => {\n const anchorConverter = anchorAndConverters[index];\n return {\n balance: x.length > 0 ? (x[0] as BigNumber).toString() : '0',\n anchor: anchorConverter.anchorAddress,\n converter: anchorConverter.converterAddress,\n };\n })\n .filter((x) => x.balance !== '0');\n\n const calls = partialPTokens.map((x) =>\n buildTokenTotalSupplyCall(x.anchor)\n );\n const total = await multicall(calls);\n if (total) {\n return partialPTokens.map((token, index) => ({\n totalSupply: total[index].toString(),\n ...token,\n }));\n }\n }\n\n return [];\n })\n);\n\nconst zipAnchorAndConverters = (\n anchorAddresses: string[],\n converterAddresses: string[]\n): ConverterAndAnchor[] => {\n if (anchorAddresses.length !== converterAddresses.length)\n throw new Error(\n 'was expecting as many anchor addresses as converter addresses'\n );\n\n const zipped = zip(anchorAddresses, converterAddresses) as [string, string][];\n return zipped.map(([anchorAddress, converterAddress]) => ({\n anchorAddress: utils.getAddress(anchorAddress!),\n converterAddress: utils.getAddress(converterAddress!),\n }));\n};\n\nexport const poolTokens$ = combineLatest([\n poolsNew$,\n partialPoolTokens$,\n apiPools$,\n]).pipe(\n switchMapIgnoreThrow(async ([pools, partialPoolTokens, apiPools]) => {\n const res = await Promise.all(\n partialPoolTokens.map(async (poolToken) => {\n const pool = findPoolByConverter(poolToken.converter, pools, apiPools);\n if (!pool) {\n return null;\n }\n const tkn = pool.reserves[0];\n const bnt = pool.reserves[1];\n\n const amount = shrinkToken(poolToken.balance, pool.decimals);\n const percent = new BigNumber(amount).div(\n shrinkToken(poolToken.totalSupply, pool.decimals)\n );\n\n const balances = await multicall(\n pool.reserves.map((x) =>\n buildTokenPoolCall(pool.converter_dlt_id, x.address)\n )\n );\n if (!balances) {\n return null;\n }\n const tknBalanceWei = new BigNumber(balances[0].toString());\n const bntBalanceWei = new BigNumber(balances[1].toString());\n\n const tknAmount = percent.times(\n shrinkToken(tknBalanceWei, pool.decimals)\n );\n const bntAmount = percent.times(\n shrinkToken(bntBalanceWei, pool.decimals)\n );\n\n const value = tknAmount\n // @ts-ignore\n .times(Number(tkn.usdPrice || 0))\n // @ts-ignore\n .plus(bntAmount.times(Number(bnt.usdPrice || 0)))\n .toString();\n\n return {\n bnt: {\n token: {\n symbol: 'BNT',\n logoURI: ropstenImage,\n usdPrice: '0',\n decimals: 0,\n ...bnt,\n },\n amount: bntAmount.toString(),\n },\n tkn: {\n token: {\n symbol: pool.name.replace('/BNT', ''),\n logoURI: ropstenImage,\n usdPrice: '0',\n decimals: 0,\n ...tkn,\n },\n amount: tknAmount.toString(),\n },\n amount,\n value: value,\n poolDecimals: pool.decimals,\n converter: poolToken.converter,\n poolName: pool.name,\n version: pool.version,\n };\n })\n );\n return res.filter((x) => !!x);\n })\n);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgEarn(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 21\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.2703 4.75018C19.2372 4.75134 19.2043 4.75484 19.1718 4.76068H14.5189C14.4243 4.7593 14.3304 4.77724 14.2427 4.81344C14.1549 4.84964 14.075 4.90339 14.0077 4.97156C13.9403 5.03972 13.8869 5.12095 13.8503 5.21052C13.8138 5.30009 13.795 5.39622 13.795 5.49331C13.795 5.5904 13.8138 5.68652 13.8503 5.77609C13.8869 5.86566 13.9403 5.94689 14.0077 6.01506C14.075 6.08323 14.1549 6.13697 14.2427 6.17317C14.3304 6.20938 14.4243 6.22731 14.5189 6.22594H17.5539L9.9989 13.9815L1.22561 4.97531C1.15909 4.90499 1.07949 4.84908 0.991543 4.8109C0.903592 4.77272 0.809072 4.75305 0.713581 4.75305C0.571548 4.75308 0.432754 4.79662 0.314959 4.87808C0.197164 4.95955 0.105723 5.07524 0.0523376 5.21035C-0.00104816 5.34546 -0.0139516 5.49385 0.0152781 5.63654C0.0445079 5.77922 0.114542 5.90971 0.216419 6.0113L9.4943 15.5355C9.62815 15.6728 9.80965 15.75 9.9989 15.75C10.1881 15.75 10.3696 15.6728 10.5035 15.5355L18.5631 7.26192V10.3775C18.5618 10.4746 18.5792 10.571 18.6145 10.6611C18.6498 10.7512 18.7021 10.8332 18.7685 10.9023C18.8349 10.9714 18.9141 11.0263 19.0013 11.0638C19.0886 11.1013 19.1822 11.1206 19.2768 11.1206C19.3714 11.1206 19.465 11.1013 19.5523 11.0638C19.6395 11.0263 19.7186 10.9714 19.785 10.9023C19.8514 10.8332 19.9038 10.7512 19.9391 10.6611C19.9743 10.571 19.9918 10.4746 19.9905 10.3775V5.60206C20.0076 5.4958 20.0016 5.38697 19.9731 5.28334C19.9445 5.1797 19.8941 5.0838 19.8253 5.00246C19.7565 4.92112 19.6712 4.85634 19.5752 4.81274C19.4793 4.76913 19.3752 4.74777 19.2703 4.75018Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEarn);\nexport default __webpack_public_path__ + \"static/media/earn.dd36ebbc.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPortfolio(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 18,\n viewBox: \"0 0 15 18\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.37432 0C4.89703 0 2.87432 2.02271 2.87432 4.5C2.87432 6.97729 4.89703 9 7.37432 9C9.8516 9 11.8743 6.97729 11.8743 4.5C11.8743 2.02271 9.8516 0 7.37432 0ZM7.37432 1.35C9.12201 1.35 10.5243 2.75231 10.5243 4.5C10.5243 6.24769 9.12201 7.65 7.37432 7.65C5.62662 7.65 4.22432 6.24769 4.22432 4.5C4.22432 2.75231 5.62662 1.35 7.37432 1.35ZM1.96465 10.8C0.983733 10.8 0.174316 11.6094 0.174316 12.5903L0.174316 13.275C0.174316 14.8969 1.19999 16.1515 2.5623 16.9031C3.92462 17.6547 5.64996 18 7.37432 18C9.09867 18 10.824 17.6547 12.1863 16.9031C13.3479 16.2623 14.2221 15.2382 14.4671 13.95H14.5752L14.5752 12.5903C14.5752 11.6094 13.7649 10.8 12.784 10.8L1.96465 10.8ZM1.96465 12.15L12.784 12.15C13.0352 12.15 13.2252 12.3391 13.2252 12.5903V12.6H13.2243V13.275C13.2243 14.3531 12.6187 15.1235 11.5342 15.7219C10.4496 16.3203 8.91246 16.65 7.37432 16.65C5.83617 16.65 4.29901 16.3203 3.21445 15.7219C2.12989 15.1235 1.52432 14.3531 1.52432 13.275L1.52432 12.5903C1.52432 12.3391 1.71346 12.15 1.96465 12.15Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPortfolio);\nexport default __webpack_public_path__ + \"static/media/portfolio.e73529df.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMore(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 19,\n height: 6,\n viewBox: \"0 0 19 6\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.375 5.25C3.61764 5.25 4.625 4.24264 4.625 3C4.625 1.75736 3.61764 0.75 2.375 0.75C1.13236 0.75 0.125 1.75736 0.125 3C0.125 4.24264 1.13236 5.25 2.375 5.25ZM11.375 3C11.375 4.24264 10.3676 5.25 9.125 5.25C7.88236 5.25 6.875 4.24264 6.875 3C6.875 1.75736 7.88236 0.75 9.125 0.75C10.3676 0.75 11.375 1.75736 11.375 3ZM18.125 3C18.125 4.24264 17.1176 5.25 15.875 5.25C14.6324 5.25 13.625 4.24264 13.625 3C13.625 1.75736 14.6324 0.75 15.875 0.75C17.1176 0.75 18.125 1.75736 18.125 3Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMore);\nexport default __webpack_public_path__ + \"static/media/more.034476c3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCoins(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 14 13\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.9097 7.30981C13.7773 6.58465 13.4824 5.91502 13.034 5.32026C12.542 4.66745 11.924 4.17448 11.1969 3.85649C10.6323 3.60916 10.0393 3.48886 9.43743 3.48718V3.31557C9.43662 3.13133 9.43662 2.9471 9.43823 2.76287C9.44308 2.29598 9.28636 1.87031 8.9721 1.49763C8.66673 1.1359 8.27734 0.852398 7.74577 0.605071C6.99284 0.255954 6.14539 0.0616259 5.15577 0.0119923C4.44242 -0.0250225 3.74847 0.0237698 3.09249 0.156687C2.37269 0.302222 1.76518 0.529359 1.23522 0.851557C0.870874 1.07365 0.588122 1.32518 0.370808 1.62046C0.122795 1.95864 0.00242358 2.29598 0.00242358 2.65351C0.00080786 3.94146 0.00080786 5.2294 0.00080786 6.51735V6.6141C0.00080786 7.82381 0.00080786 9.03268 0 10.2424C0 10.6992 0.148646 11.1131 0.444323 11.4715C0.756157 11.8509 1.15847 12.1453 1.71105 12.3993C2.39692 12.7148 3.16358 12.9024 4.05384 12.9739C4.27116 12.9916 4.4917 13 4.71063 13C5.05398 13 5.39974 12.9781 5.73904 12.9361C6.37806 12.8561 6.93225 12.7199 7.43312 12.5196C7.43716 12.518 7.4404 12.5171 7.44201 12.518C7.93965 12.7737 8.47607 12.9293 9.03511 12.9798C9.71291 13.0412 10.3729 12.9504 10.9974 12.7098C11.8618 12.3766 12.5679 11.8273 13.0954 11.0761C13.8871 9.95048 14.161 8.68272 13.9097 7.30981ZM4.95542 7.29551C4.89402 7.6135 4.86413 7.92139 4.86413 8.22929C4.07727 8.24107 3.36716 8.14685 2.69502 7.94158C2.20627 7.79268 1.82738 7.61097 1.501 7.37038C1.25299 7.18699 1.09304 7.00275 0.997708 6.78908C0.955699 6.69401 0.934695 6.604 0.934695 6.51315V6.24142C0.98155 6.2776 1.03083 6.31377 1.08092 6.34826C1.50424 6.63765 2.00188 6.8589 2.60212 7.02462C3.34939 7.23241 4.14029 7.32327 4.95542 7.29551ZM4.96026 9.19588C5.02166 9.51303 5.11376 9.82093 5.23413 10.1128C5.2002 10.1154 5.16546 10.1179 5.13153 10.1196C4.24531 10.1633 3.44149 10.0708 2.67483 9.83523C2.20223 9.68969 1.81769 9.50462 1.49939 9.26991C1.25299 9.08736 1.09384 8.90481 0.999323 8.69366C0.955699 8.59691 0.934695 8.50438 0.934695 8.41184V8.14264C1.50343 8.57168 2.17476 8.85181 3.08683 9.04109C3.69515 9.16728 4.32528 9.21944 4.96026 9.19588ZM8.45426 2.89915C8.31692 3.23313 8.08749 3.49559 7.75304 3.7017C7.379 3.9322 6.94114 4.10634 6.41441 4.23337C5.88607 4.36124 5.32542 4.42601 4.70175 4.43106C3.94559 4.42181 3.27991 4.32422 2.66594 4.13158C2.16345 3.97426 1.80395 3.79676 1.5002 3.55701C1.27884 3.38203 1.11969 3.19443 1.01467 2.98412C0.894302 2.74268 0.909651 2.52059 1.06395 2.2842C1.20694 2.06463 1.41295 1.8762 1.71105 1.69196C2.08832 1.4581 2.53022 1.28732 3.09976 1.15356C3.61518 1.03242 4.14109 0.973537 4.7074 0.973537C4.85605 0.973537 5.00954 0.977744 5.16546 0.986156C5.78994 1.01981 6.38533 1.13253 6.93387 1.32265C7.44282 1.49848 7.82009 1.70795 8.11981 1.98219C8.25149 2.10249 8.35005 2.22447 8.41952 2.35486C8.5205 2.54246 8.53101 2.71071 8.45426 2.89915ZM5.14849 5.39008C5.37793 5.37578 5.60736 5.34634 5.82952 5.31774C5.59686 5.62563 5.4062 5.95708 5.25917 6.31125C4.80273 6.34994 4.32771 6.33817 3.80745 6.27507C3.26941 6.20946 2.80247 6.09841 2.37915 5.93437C2.02369 5.79725 1.61572 5.61217 1.28207 5.28493C1.07769 5.08471 0.973472 4.90468 0.943581 4.70278C0.933887 4.63464 0.933887 4.55977 0.934695 4.48069C0.934695 4.44957 0.935502 4.41844 0.934695 4.38732C0.934695 4.37217 0.934695 4.35703 0.934695 4.34273C1.02517 4.41087 1.11889 4.47817 1.21664 4.53958C1.71994 4.85589 2.30806 5.08219 3.01494 5.23193C3.7202 5.38083 4.43758 5.43467 5.14849 5.39008ZM1.34509 10.3139C1.86293 10.6058 2.44297 10.8136 3.11915 10.9474C3.81633 11.0862 4.53371 11.1299 5.31168 11.082C5.40378 11.0761 5.49426 11.0668 5.58555 11.0567C5.63725 11.0508 5.68976 11.0458 5.74146 11.0407C5.94505 11.3276 6.17771 11.5901 6.43461 11.8239C6.08238 11.9114 5.71481 11.972 5.33996 12.0023C4.41496 12.078 3.5247 11.9897 2.69502 11.739C2.13921 11.5707 1.72074 11.3579 1.37821 11.0685C1.1714 10.8944 1.05103 10.7362 0.987206 10.5562C0.958123 10.4737 0.941158 10.3888 0.937118 10.3097C0.933079 10.2214 0.932271 10.1322 0.932271 10.0413C1.06557 10.1431 1.2021 10.2331 1.34509 10.3139ZM9.43339 4.45546C10.4093 4.4563 11.3246 4.85253 12.0113 5.57011C12.6963 6.28601 13.0712 7.2383 13.068 8.25032C13.0607 10.3341 11.4304 12.03 9.42935 12.0292C8.44053 12.0284 7.51633 11.6229 6.82723 10.8885C6.14055 10.1574 5.77459 9.1799 5.79559 8.13507C5.83598 6.10682 7.46867 4.45546 9.43339 4.45546Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCoins);\nexport default __webpack_public_path__ + \"static/media/coins.182e0b62.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as IconTrade } from 'assets/icons/trade.svg';\nimport { ReactComponent as IconEarn } from 'assets/icons/earn.svg';\nimport { ReactComponent as IconPortfolio } from 'assets/icons/portfolio.svg';\nimport { ReactComponent as IconMore } from 'assets/icons/more.svg';\nimport { useState } from 'react';\nimport { MobileSidebar } from './MobileSidebar';\nimport { SettingsMenuContent } from 'elements/settings/SettingsMenu';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { Navigate } from 'components/navigate/Navigate';\n\nexport const MobileBottomNav = () => {\n const [show, setShow] = useState(false);\n\n return (\n
\n \n \n Trade\n \n \n \n Earn\n \n \n \n Portfolio\n \n setShow(true)}\n className=\"flex flex-col items-center gap-[8px]\"\n >\n \n More\n \n\n \n \n \n
\n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDollar(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 9 16\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.04 5.776C6.88 5.46667 6.69867 5.17333 6.496 4.896C6.29333 4.608 6.048 4.37867 5.76 4.208C5.472 4.02667 5.12 3.936 4.704 3.936C4.064 3.936 3.59467 4.06933 3.296 4.336C3.008 4.592 2.864 4.96533 2.864 5.456C2.864 5.86133 2.98667 6.19733 3.232 6.464C3.47733 6.72 3.79733 6.944 4.192 7.136C4.58667 7.31733 5.008 7.49333 5.456 7.664C5.744 7.77067 6.05333 7.90933 6.384 8.08C6.71467 8.25067 7.024 8.464 7.312 8.72C7.6 8.96533 7.83467 9.27467 8.016 9.648C8.19733 10.0107 8.288 10.448 8.288 10.96C8.288 11.8453 8.03733 12.576 7.536 13.152C7.03467 13.728 6.29867 14.0587 5.328 14.144V15.792H4.144V14.096C3.39733 13.9467 2.74133 13.6053 2.176 13.072C1.61067 12.528 1.17867 11.8613 0.88 11.072L2.032 10.384C2.37333 11.152 2.77333 11.76 3.232 12.208C3.69067 12.656 4.26667 12.88 4.96 12.88C5.6 12.88 6.08 12.72 6.4 12.4C6.72 12.0693 6.88 11.6267 6.88 11.072C6.88 10.592 6.74667 10.1973 6.48 9.888C6.224 9.57867 5.89333 9.32267 5.488 9.12C5.09333 8.91733 4.68267 8.74133 4.256 8.592C3.97867 8.496 3.67467 8.368 3.344 8.208C3.024 8.048 2.72 7.84533 2.432 7.6C2.144 7.344 1.904 7.03467 1.712 6.672C1.53067 6.30933 1.44 5.872 1.44 5.36C1.44 4.90133 1.55733 4.48533 1.792 4.112C2.02667 3.728 2.34667 3.41333 2.752 3.168C3.15733 2.912 3.62133 2.74667 4.144 2.672V0.912H5.328V2.688C5.808 2.77333 6.23467 2.93867 6.608 3.184C6.992 3.42933 7.312 3.71733 7.568 4.048C7.824 4.37867 8.016 4.70933 8.144 5.04L7.04 5.776Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDollar);\nexport default __webpack_public_path__ + \"static/media/dollar.af5c9859.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgEdit(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 16\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.138 10.5406L13.1035 9.63644C13.2544 9.49516 13.5169 9.59406 13.5169 9.7975V13.9059C13.5169 14.6547 12.8682 15.2622 12.0686 15.2622H1.44824C0.648689 15.2622 0 14.6547 0 13.9059V3.95978C0 3.21099 0.648689 2.60348 1.44824 2.60348H9.70017C9.91439 2.60348 10.023 2.84648 9.87215 2.99059L8.90665 3.89479C8.8614 3.93717 8.80105 3.95978 8.73468 3.95978H1.44824V13.9059H12.0686V10.6989C12.0686 10.6395 12.0928 10.583 12.138 10.5406ZM16.8629 4.83854L8.93984 12.2586L6.21233 12.5412C5.42183 12.6231 4.74901 11.9987 4.83651 11.2527L5.13822 8.69834L13.0613 1.27827C13.7522 0.631202 14.8686 0.631202 15.5565 1.27827L16.8599 2.49893C17.5508 3.146 17.5508 4.1943 16.8629 4.83854ZM13.882 5.71166L12.129 4.06998L6.5231 9.3228L6.30285 11.1679L8.27305 10.9617L13.882 5.71166ZM15.8371 3.45964L14.5337 2.23898C14.41 2.12313 14.2078 2.12313 14.0871 2.23898L13.1548 3.11209L14.9078 4.75378L15.8401 3.88066C15.9608 3.76198 15.9608 3.57549 15.8371 3.45964Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEdit);\nexport default __webpack_public_path__ + \"static/media/edit.a842b13e.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as IconCoins } from 'assets/icons/coins.svg';\nimport { ReactComponent as IconDollar } from 'assets/icons/dollar.svg';\nimport 'elements/swapSwitch/SwapSwitch.css';\nimport { useAppSelector } from 'store';\nimport { useDispatch } from 'react-redux';\nimport { setUsdToggle } from 'store/user/user';\nimport { ButtonToggle } from 'components/button/Button';\n\nexport const SwapSwitch = () => {\n const dispatch = useDispatch();\n const isEnabled = useAppSelector((state) => state.user.usdToggle);\n const setIsEnabled = (state: boolean) => {\n dispatch(setUsdToggle(state));\n };\n\n return (\n
\n ,\n ,\n ]}\n onClass=\"bg-white text-black dark:bg-charcoal dark:text-white\"\n toggle={isEnabled}\n setToggle={() => setIsEnabled(!isEnabled)}\n />\n
\n );\n};\n","import { classNameGenerator } from 'utils/pureFunctions';\nimport 'elements/swapHeader/SwapHeader.css';\nimport { SwapSwitch } from 'elements/swapSwitch/SwapSwitch';\n\ninterface SwapHeaderProps {\n isLimit: boolean;\n setIsLimit: Function;\n}\n\nexport const SwapHeader = ({ isLimit, setIsLimit }: SwapHeaderProps) => {\n const marketActive = classNameGenerator({\n 'swap-header-active': !isLimit,\n });\n\n const limitActive = classNameGenerator({\n 'swap-header-active': isLimit,\n });\n\n return (\n
\n
\n
\n setIsLimit(false)}\n >\n Market\n \n \n \n
\n\n \n
\n
\n );\n};\n","import { classNameGenerator, sanitizeNumberInput } from 'utils/pureFunctions';\nimport 'components/inputField/InputField.css';\n\ninterface InputFieldProps {\n input: string;\n setInput?: Function;\n placeholder?: string;\n disabled?: boolean;\n format?: boolean;\n bgGrey?: boolean;\n borderGrey?: boolean;\n onChange?: Function;\n onBlur?: Function;\n customClass?: string;\n dataCy?: string;\n}\n\nexport const InputField = ({\n input,\n setInput,\n placeholder,\n format,\n bgGrey,\n borderGrey,\n onChange,\n onBlur,\n dataCy,\n customClass,\n}: InputFieldProps) => {\n const inputFieldStyles = `input-field justify-center ${classNameGenerator({\n 'input-field-bg-grey': bgGrey,\n 'input-field-border': borderGrey,\n 'text-right': format,\n [`${customClass}`]: customClass,\n })}`;\n\n return (\n {\n const val = format\n ? sanitizeNumberInput(event.target.value)\n : event.target.value;\n onChange ? onChange(val) : setInput && setInput(val);\n }}\n onBlur={() => onBlur && onBlur()}\n />\n );\n};\n","import 'elements/layoutHeader/LayoutHeader.css';\n\ninterface LayoutHeaderMobileProps {\n children: JSX.Element | JSX.Element[];\n}\nexport const LayoutHeaderMobile = ({ children }: LayoutHeaderMobileProps) => {\n return (\n
\n
{children}
\n
\n );\n};\n","import { Dialog, Transition } from '@headlessui/react';\nimport { Fragment } from 'react';\nimport { ReactComponent as IconChevron } from 'assets/icons/chevronRight.svg';\nimport { ReactComponent as IconBancor } from 'assets/icons/bancor.svg';\nimport 'elements/layoutHeader/LayoutHeader.css';\nimport { LayoutHeaderMobile } from 'elements/layoutHeader/LayoutHeaderMobile';\nimport { Button } from 'components/button/Button';\n\ninterface ModalFullscreenProps {\n title?: string | JSX.Element | JSX.Element[];\n children: JSX.Element | JSX.Element[];\n setIsOpen: Function;\n isOpen: boolean;\n showHeader?: boolean;\n}\n\nexport const ModalFullscreen = ({\n title,\n children,\n setIsOpen,\n isOpen,\n showHeader,\n}: ModalFullscreenProps) => {\n return (\n <>\n \n setIsOpen(false)}\n >\n
\n {showHeader && (\n \n \n
\n \n
\n
\n )}\n\n
\n {title && (\n
\n {title}\n
\n )}\n\n {children}\n
\n
\n \n \n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSearch(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 13 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.9372 11.0089L8.6927 7.86258C9.37273 7.048 9.78008 6.01055 9.78008 4.88084C9.78008 2.26181 7.59073 0.138672 4.89004 0.138672C2.18935 0.138672 0 2.26181 0 4.88084C0 7.49987 2.18935 9.62302 4.89004 9.62302C6.05497 9.62302 7.12477 9.22799 7.96475 8.56852L11.2092 11.7149C11.4108 11.9104 11.7371 11.9107 11.9381 11.7158C12.1405 11.5195 12.1387 11.2044 11.9372 11.0089ZM8.74956 4.8804C8.74956 6.94806 7.02112 8.62423 4.889 8.62423C2.75687 8.62423 1.02844 6.94806 1.02844 4.8804C1.02844 2.81275 2.75687 1.13658 4.889 1.13658C7.02112 1.13658 8.74956 2.81275 8.74956 4.8804Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSearch);\nexport default __webpack_public_path__ + \"static/media/search.d74675ae.svg\";\nexport { ForwardRef as ReactComponent };","import { Token } from 'services/observables/tokens';\nimport { useMemo } from 'react';\nimport { TokenMinimal } from 'services/observables/tokens';\nimport { Image } from 'components/image/Image';\n\ninterface SuggestedTokensProps {\n allTokens: (Token | TokenMinimal)[];\n suggestedTokens: string[];\n onClick: (token: Token | TokenMinimal) => void;\n}\n\nexport const SuggestedTokens = ({\n allTokens,\n suggestedTokens,\n onClick,\n}: SuggestedTokensProps) => {\n const suggestedTokenList = useMemo(\n () =>\n suggestedTokens\n .map((token) => allTokens.find((t) => t.symbol === token))\n .filter((token) => !!token),\n [allTokens, suggestedTokens]\n );\n\n return (\n
\n
Popular Tokens
\n
\n {suggestedTokenList.map((token) => (\n onClick(token!)}\n className=\"bg-fog dark:bg-grey dark:border dark:border-grey dark:hover:border-black-disabled pt-10 pb-5 w-full flex flex-col items-center rounded-10 hover:shadow-widget transition-all duration-500\"\n >\n \n {token!.symbol}\n \n ))}\n
\n
\n );\n};\n","import { Switch as HUISwitch } from '@headlessui/react';\n\nexport const Switch = ({\n selected,\n onChange,\n}: {\n selected: boolean;\n onChange: (checked: boolean) => void;\n}) => {\n return (\n \n \n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgChevronDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 10 6\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.187761 0.210793C0.0675962 0.338409 -2.39893e-07 0.511883 -2.3202e-07 0.69201C-2.24117e-07 0.8728 0.067593 1.04627 0.187761 1.17389L4.54123 5.80059C4.6614 5.92821 4.82412 6 4.99435 6C5.16458 6 5.3273 5.92821 5.44746 5.80059L9.80094 1.17389C9.92611 1.0476 9.99809 0.872136 9.99996 0.688674C10.0018 0.50523 9.93425 0.328421 9.81158 0.198813C9.68953 0.069202 9.52305 -0.00258297 9.35032 7.15937e-05C9.17759 0.00272615 9.01298 0.0791665 8.89407 0.212102L4.99433 4.35761L1.0946 0.212102C0.974436 0.0844855 0.811718 0.0120334 0.641485 0.0120334C0.471252 0.0113692 0.307909 0.0831532 0.187744 0.210775L0.187761 0.210793Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevronDown);\nexport default __webpack_public_path__ + \"static/media/chevronDown.8b4803b0.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as IconSearch } from 'assets/icons/search.svg';\nimport { ReactComponent as IconClose } from 'assets/icons/times.svg';\n\ninterface Props {\n value: string;\n setValue: (value: string) => void;\n className?: string;\n}\n\nconst defaultClassName =\n 'block border border-silver pl-[38px] pr-[38px] dark:placeholder-white-disabled dark:bg-charcoal dark:border-grey';\n\nexport const SearchInput = ({ value, setValue, className }: Props) => {\n return (\n
\n \n {value.length > 0 && (\n setValue('')}\n className=\"absolute h-full right-0 mr-14 text-graphite hover:text-error\"\n >\n \n \n )}\n\n setValue(e.target.value)}\n placeholder=\"Search\"\n className={`${defaultClassName} ${className}`}\n />\n
\n );\n};\n","import { useMemo, useState } from 'react';\nimport { useAppSelector } from 'store';\nimport { Token } from 'services/observables/tokens';\nimport { Modal } from 'components/modal/Modal';\nimport { ModalFullscreen } from 'components/modalFullscreen/ModalFullscreen';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { wait } from 'utils/pureFunctions';\nimport { ReactComponent as IconEdit } from 'assets/icons/edit.svg';\nimport { getTokenListLS, setTokenListLS } from 'utils/localStorage';\nimport { isMobile } from 'react-device-detect';\nimport { SuggestedTokens } from './SuggestedTokens';\nimport { Switch } from 'components/switch/Switch';\nimport { TokenList } from 'services/observables/tokens';\nimport { userPreferredListIds$ } from 'services/observables/tokenLists';\nimport { orderBy } from 'lodash';\nimport { SearchInput } from 'components/searchInput/SearchInput';\nimport { Image } from 'components/image/Image';\n\ninterface SearchableTokenListProps {\n onClick: Function;\n isOpen: boolean;\n setIsOpen: Function;\n excludedTokens?: string[];\n includedTokens?: string[];\n tokens: Token[];\n limit?: boolean;\n}\n\ninterface SearchableTokenListLayoutProps {\n manage: boolean;\n setManage: Function;\n isOpen: boolean;\n onClose: Function;\n children: JSX.Element;\n}\n\nconst SearchableTokenListLayout = ({\n manage,\n setManage,\n onClose,\n isOpen,\n children,\n}: SearchableTokenListLayoutProps) => {\n if (isMobile) {\n return (\n {\n if (manage) return setManage(false);\n onClose();\n }}\n isOpen={isOpen}\n showHeader\n >\n {children}\n \n );\n }\n\n return (\n setManage(false)}\n >\n {children}\n \n );\n};\n\nconst suggestedTokens = ['BNT', 'ETH', 'WBTC', 'USDC', 'USDT'];\n\nexport const SearchableTokenList = ({\n onClick,\n isOpen,\n setIsOpen,\n excludedTokens = [],\n includedTokens = [],\n tokens,\n limit,\n}: SearchableTokenListProps) => {\n const [search, setSearch] = useState('');\n const [manage, setManage] = useState(false);\n const [userPreferredListIds, setUserLists] = useState(getTokenListLS());\n\n const tokensLists = useAppSelector(\n (state) => state.bancor.tokenLists\n );\n\n const onClose = async () => {\n setIsOpen(false);\n await wait(500);\n setManage(false);\n setSearch('');\n };\n\n const handleTokenlistClick = (listId: string) => {\n const alreadyPreferred = userPreferredListIds.includes(listId);\n\n const newUserPreferredListIds = alreadyPreferred\n ? userPreferredListIds.filter((list) => list !== listId)\n : [...userPreferredListIds, listId];\n\n if (newUserPreferredListIds.length === 0) return;\n\n setTokenListLS(newUserPreferredListIds);\n setUserLists(newUserPreferredListIds);\n userPreferredListIds$.next(newUserPreferredListIds);\n };\n\n const tokenName = (name: string) => {\n if (name.length < 19) return name;\n return name + '...';\n };\n\n const sortedTokens = useMemo(() => {\n const filtered = tokens.filter(\n (token) =>\n (includedTokens.length === 0 ||\n includedTokens.includes(token.address)) &&\n !excludedTokens.includes(token.address) &&\n (token.symbol.toLowerCase().includes(search.toLowerCase()) ||\n (token.name &&\n token.name.toLowerCase().includes(search.toLowerCase())))\n );\n return orderBy(filtered, 'balanceUsd', 'desc').slice(\n 0,\n limit ? 300 : filtered.length\n );\n }, [excludedTokens, includedTokens, limit, search, tokens]);\n\n return (\n \n {manage ? (\n
\n
\n {tokensLists.map((tokenList) => {\n const isSelected = userPreferredListIds.some(\n (listId) => tokenList.name === listId\n );\n return (\n \n
\n \n
\n
{tokenList.name}
\n
\n {tokenList.tokens.length} Tokens\n
\n
\n
\n
\n handleTokenlistClick(tokenList.name)}\n />\n
\n
\n );\n })}\n
\n \n ) : (\n <>\n
\n \n
\n \n
\n {\n onClick(token);\n onClose();\n }}\n />\n
\n
\n
Token
\n
Balance
\n
\n {sortedTokens.map((token) => {\n return (\n {\n onClick(token);\n onClose();\n }}\n className=\"flex items-center justify-between rounded focus:ring-2 focus:ring-primary px-14 py-5 my-5 w-full\"\n >\n
\n \n
\n
{token.symbol}
\n
\n {tokenName(token.name ?? token.symbol)}\n
\n
\n
\n
\n
\n {token.balance && prettifyNumber(token.balance)}\n
\n
\n {token.balanceUsd &&\n prettifyNumber(token.balanceUsd, true)}\n
\n
\n \n );\n })}\n \n
\n
\n {\n setUserLists(getTokenListLS());\n setManage(true);\n }}\n className=\"text-primary font-semibold\"\n >\n \n \n Manage Token Lists\n \n \n Only supported tokens will be displayed\n \n \n
\n \n )}\n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgClockSolid(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 53 52\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.5 26C0.5 11.6391 12.1391 0 26.5 0C35.3279 0 43.1273 4.39812 47.8268 11.123C50.7723 15.338 52.5 20.467 52.5 26C52.5 40.3609 40.8609 52 26.5 52C12.1391 52 0.5 40.3609 0.5 26ZM26.5007 39.5829C34.002 39.5829 40.0829 33.502 40.0829 26.0007C40.0829 18.4995 34.002 12.4185 26.5007 12.4185C18.9995 12.4185 12.9185 18.4995 12.9185 26.0007C12.9185 33.502 18.9995 39.5829 26.5007 39.5829ZM26.5007 42.2507C35.4753 42.2507 42.7507 34.9753 42.7507 26.0007C42.7507 17.0261 35.4753 9.75071 26.5007 9.75071C17.5261 9.75071 10.2507 17.0261 10.2507 26.0007C10.2507 34.9753 17.5261 42.2507 26.5007 42.2507ZM26.1051 15.5522C26.8418 15.5522 27.439 16.1494 27.439 16.8861V26.6498H31.6539C32.3906 26.6498 32.9878 27.247 32.9878 27.9837C32.9878 28.7203 32.3906 29.3175 31.6539 29.3175H26.1051C25.3684 29.3175 24.7712 28.7203 24.7712 27.9837V16.8861C24.7712 16.1494 25.3684 15.5522 26.1051 15.5522Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClockSolid);\nexport default __webpack_public_path__ + \"static/media/clock-solid.70bd1a25.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from 'react';\nimport { classNameGenerator, sanitizeNumberInput } from 'utils/pureFunctions';\nimport { SearchableTokenList } from 'components/searchableTokenList/SearchableTokenList';\nimport { Token } from 'services/observables/tokens';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\nimport 'components/tokenInputField/TokenInputField.css';\nimport 'components/inputField/InputField.css';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport BigNumber from 'bignumber.js';\nimport { useAppSelector } from 'store';\nimport { Image } from 'components/image/Image';\n\ninterface TokenInputFieldProps {\n label?: string;\n border?: boolean;\n selectable?: boolean;\n disabled?: boolean;\n input: string;\n setInput?: Function;\n amountUsd?: string;\n setAmountUsd?: Function;\n onChange?: Function;\n token?: Token;\n setToken?: Function;\n debounce?: Function;\n startEmpty?: boolean;\n errorMsg?: string;\n usdSlippage?: number;\n dataCy?: string;\n fieldBalance?: string;\n excludedTokens?: string[];\n includedTokens?: string[];\n isLoading?: boolean;\n balanceLabel?: string;\n}\n\nexport const TokenInputField = ({\n dataCy,\n label,\n border,\n selectable,\n token,\n setToken,\n input,\n setInput,\n amountUsd,\n setAmountUsd,\n onChange,\n disabled,\n debounce,\n startEmpty,\n errorMsg,\n usdSlippage,\n fieldBalance,\n excludedTokens = [],\n includedTokens = [],\n isLoading,\n balanceLabel = 'Balance',\n}: TokenInputFieldProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const balance = fieldBalance ? fieldBalance : token ? token.balance : null;\n const balanceUsd =\n token && balance\n ? new BigNumber(balance).times(token.usdPrice ?? 0).toString()\n : null;\n\n const toggle = useAppSelector((state) => state.user.usdToggle);\n const loadingBalances = useAppSelector(\n (state) => state.user.loadingBalances\n );\n const tokens = useAppSelector((state) => state.bancor.tokens);\n\n const onInputChange = (text: string, token?: Token) => {\n text = sanitizeNumberInput(text);\n if (toggle) {\n const tokenAmount = sanitizeNumberInput(\n new BigNumber(text).div(token?.usdPrice!).toString(),\n token?.decimals\n );\n if (setAmountUsd) setAmountUsd(text !== 'NaN' ? text : '');\n if (onChange) onChange(tokenAmount);\n else {\n if (setInput) setInput(tokenAmount);\n if (debounce) debounce(tokenAmount);\n }\n } else {\n const usdAmount = new BigNumber(text).times(token?.usdPrice!).toString();\n if (setAmountUsd)\n setAmountUsd(usdAmount !== '0' && usdAmount !== 'NaN' ? usdAmount : '');\n const val = sanitizeNumberInput(text, token?.decimals);\n if (onChange) onChange(val);\n else {\n if (setInput) setInput(val);\n if (debounce) debounce(val);\n }\n }\n };\n\n const inputValue = () => {\n if (!toggle && !disabled) return input;\n if (!toggle && disabled) return `${sanitizeNumberInput(input, 6)}`;\n if (!amountUsd) return '';\n return `$${sanitizeNumberInput(amountUsd, 6)}`;\n };\n\n const convertedAmount = () => {\n const tokenAmount = prettifyNumber(input);\n const usdAmount = prettifyNumber(amountUsd ?? 0, true);\n const amount = toggle ? tokenAmount : usdAmount;\n\n if ((input || amountUsd) && token) return amount;\n else return `${toggle ? '' : '$'}0`;\n };\n\n const setMaxAmount = () => {\n if (balance && balanceUsd && token) {\n if (token.symbol === 'ETH') {\n const reducedBalance = new BigNumber(balance).minus(0.01).toString();\n const reducedUsdBalance = new BigNumber(reducedBalance)\n .times(token.usdPrice!)\n .toString();\n onInputChange(toggle ? reducedUsdBalance : reducedBalance, token);\n } else onInputChange(toggle ? balanceUsd : balance, token);\n }\n };\n\n const inputFieldStyles = `token-input-field ${classNameGenerator({\n 'border-silver dark:border-grey': border,\n '!border-error': errorMsg,\n })}`;\n\n return (\n
\n
\n {label}\n {loadingBalances && token ? (\n
\n ) : (\n balance &&\n balanceUsd &&\n token && (\n setMaxAmount()}\n disabled={disabled}\n className={`text-12 ${classNameGenerator({\n 'cursor-not-allowed': disabled,\n })}`}\n >\n {balanceLabel}: {prettifyNumber(balance)}\n \n {prettifyNumber(balanceUsd, true)}\n \n \n )\n )}\n
\n {startEmpty && !token ? (\n (selectable ? setIsOpen(true) : {})}\n className=\"flex items-center text-primary font-medium text-20 mt-10 mb-30 py-5\"\n >\n Select a token\n \n \n ) : (\n
\n (selectable ? setIsOpen(true) : {})}\n >\n {token ? (\n <>\n \n {token.symbol}\n \n ) : (\n <>\n
\n
\n \n )}\n\n {selectable && (\n
\n \n
\n )}\n
\n
\n
\n
\n {isLoading ? (\n
\n
\n
\n
\n ) : (\n
\n {convertedAmount()} {toggle && token?.symbol}\n {!usdSlippage ||\n (usdSlippage !== 0 && (\n \n ({usdSlippage}%)\n \n ))}\n
\n )}\n
\n onInputChange(event.target.value, token)}\n />\n
\n {errorMsg && (\n
{errorMsg}
\n )}\n
\n
\n )}\n\n {\n if (setToken) setToken(token);\n onInputChange(inputValue(), token);\n }}\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n tokens={tokens}\n excludedTokens={excludedTokens}\n includedTokens={includedTokens}\n />\n \n );\n};\n","import { Listbox, Transition } from '@headlessui/react';\nimport { ReactComponent as IconCheck } from 'assets/icons/circlecheck.svg';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\n\nimport 'components/dropdown/Dropdown.css';\nimport { classNameGenerator } from 'utils/pureFunctions';\n\ninterface DropdownProps {\n title: string;\n items: { id: string; title: any; disabled?: boolean }[];\n selected: any;\n setSelected: Function;\n openUp?: boolean;\n}\n\nexport const Dropdown = ({\n title,\n items,\n selected,\n setSelected,\n openUp,\n}: DropdownProps) => {\n return (\n
\n setSelected(val)}>\n \n
{title}
\n
\n \n \n {items.map((item) => (\n \n `${active && 'bg-black-disabled00'} py-10`\n }\n >\n {({ selected }) => (\n
\n {selected && (\n \n \n \n )}\n \n {item.title}\n \n
\n )}\n \n ))}\n \n \n
\n
\n );\n};\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSync(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 28 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.69141 12.0168L5.68017 15.917L9.76991 11.9239L5.68017 15.917C4.81497 9.15179 7.6493 5.79812 7.6493 5.79812C14.3926 -2.29688 21.8253 4.03253 21.8253 4.03253\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.6027 12.8231L22.6139 8.92285L18.5242 12.9159L22.6139 8.92285C23.4797 15.6881 20.6448 19.0417 20.6448 19.0417C13.9015 27.1367 6.46875 20.8073 6.46875 20.8073\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSync);\nexport default __webpack_public_path__ + \"static/media/sync.0c48d871.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from 'react';\nimport dayjs from 'utils/dayjs';\nimport { Dropdown } from 'components/dropdown/Dropdown';\nimport { Modal } from 'components/modal/Modal';\nimport { Duration } from 'dayjs/plugin/duration';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\nimport { ReactComponent as IconClock } from 'assets/icons/clock-solid.svg';\nimport { formatDuration } from 'utils/helperFunctions';\nimport { Button, ButtonSize } from 'components/button/Button';\n\ninterface ModalDurationProps {\n duration: Duration;\n setDuration: Function;\n}\n\ninterface DurationItem {\n id: string;\n title: number;\n}\n\nexport const ModalDuration = ({\n duration,\n setDuration,\n}: ModalDurationProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [days, setDays] = useState(duration.days());\n const [hours, setHours] = useState(duration.hours());\n const [minutes, setMinutes] = useState(duration.minutes());\n\n const daysItems: DurationItem[] = Array.from(\n { length: 31 },\n (_, index: number) => ({\n id: index.toString(),\n title: index,\n })\n );\n\n const hoursItems: DurationItem[] = Array.from(\n { length: 24 },\n (_, index: number) => ({\n id: index.toString(),\n title: index,\n })\n );\n\n const minutesItems: DurationItem[] = Array.from(\n { length: 60 },\n (_, index: number) => ({\n id: index.toString(),\n title: index,\n })\n );\n\n return (\n <>\n setIsOpen(true)}\n className=\"flex items-center bg-white dark:bg-charcoal rounded-10 px-40 py-8\"\n >\n {formatDuration(duration)}\n \n \n \n
\n \n
Custom Time
\n
\n Set up your custom time peroid\n
\n
\n
\n Days\n
\n setDays(x.title)}\n title={days?.toString()}\n items={daysItems}\n />\n
\n
\n
\n Hours\n
\n setHours(x.title)}\n title={hours?.toString()}\n items={hoursItems}\n />\n
\n
\n
\n Minutes\n
\n setMinutes(x.title)}\n title={minutes?.toString()}\n items={minutesItems}\n openUp\n />\n
\n
\n
\n {\n setDuration(dayjs.duration({ days, hours, minutes }));\n setIsOpen(false);\n }}\n size={ButtonSize.Full}\n className=\"mt-15\"\n >\n Confirm\n \n
\n
\n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLock(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 23 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.7991 13H8.10491V8.09171C8.10491 6.20646 9.59969 4.64018 11.467 4.62113C13.3532 4.60209 14.8951 6.14933 14.8951 8.04886V8.81058C14.8951 9.44376 15.3996 9.95316 16.0268 9.95316H17.5357C18.1629 9.95316 18.6674 9.44376 18.6674 8.81058V8.04886C18.6674 4.04985 15.4374 0.798265 11.4764 0.812547C7.51549 0.826829 4.33259 4.12126 4.33259 8.12027V13H3.20089C1.95131 13 0.9375 14.0236 0.9375 15.2852V22.9023C0.9375 24.1639 1.95131 25.1875 3.20089 25.1875H19.7991C21.0487 25.1875 22.0625 24.1639 22.0625 22.9023V15.2852C22.0625 14.0236 21.0487 13 19.7991 13Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLock);\nexport default __webpack_public_path__ + \"static/media/lock.990d1bc2.svg\";\nexport { ForwardRef as ReactComponent };","import { Token } from 'services/observables/tokens';\nimport BigNumber from 'bignumber.js';\nimport {\n bancorNetwork$,\n exchangeProxy$,\n liquidityProtection$,\n} from 'services/observables/contracts';\nimport { take } from 'rxjs/operators';\nimport { user$ } from 'services/observables/user';\nimport {\n NULL_APPROVAL_CONTRACTS,\n UNLIMITED_WEI,\n} from 'services/web3/approval/constants';\nimport { ethToken, getNetworkVariables } from 'services/web3/config';\nimport { expandToken } from 'utils/formulas';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\n\ninterface GetApprovalReturn {\n allowanceWei: string;\n isApprovalRequired: boolean;\n}\n\nexport enum ApprovalContract {\n BancorNetwork,\n BancorNetworkV3,\n ExchangeProxy,\n LiquidityProtection,\n Governance,\n}\n\nconst getApproval = async (\n token: string,\n user: string,\n spender: string,\n amountWei: string\n): Promise => {\n if (token === ethToken)\n return { allowanceWei: '', isApprovalRequired: false };\n\n const allowanceWei = (\n await ContractsApi.Token(token).read.allowance(user, spender)\n ).toString();\n\n const isApprovalRequired = new BigNumber(amountWei).gt(\n new BigNumber(allowanceWei)\n );\n return { allowanceWei, isApprovalRequired };\n};\n\nconst setApproval = async (\n token: string,\n user: string,\n spender: string,\n amountWei?: string,\n resolveImmediately?: boolean\n): Promise => {\n const isEth = token === ethToken;\n if (isEth) return '';\n\n const amountFinal = amountWei ? amountWei : UNLIMITED_WEI;\n\n const isNullApprovalContract = NULL_APPROVAL_CONTRACTS.includes(token);\n\n if (isNullApprovalContract) {\n const { allowanceWei } = await getApproval(\n token,\n user,\n spender,\n amountFinal\n );\n if (Number(allowanceWei) !== 0) {\n const tx = await ContractsApi.Token(token).write.approve(spender, '0');\n await tx.wait();\n }\n }\n\n try {\n const tx = await ContractsApi.Token(token).write.approve(\n spender,\n amountFinal\n );\n if (!resolveImmediately) await tx.wait();\n return tx.hash;\n } catch (e: any) {\n const isTxDenied = e.message.toLowerCase().includes('denied');\n\n if (!isTxDenied) {\n // TODO send this error with failed contract to Sentry or GTM\n NULL_APPROVAL_CONTRACTS.push(token);\n console.error(\n 'Approval had failed, next try forcing a zero approval in case required',\n e.message\n );\n }\n\n throw e;\n }\n};\n\nexport const getNetworkContractApproval = async (\n token: Token,\n contract: ApprovalContract | string,\n amount: string\n): Promise => {\n const user = await user$.pipe(take(1)).toPromise();\n const amountWei = expandToken(amount, token.decimals);\n const { isApprovalRequired } = await getApproval(\n token.address,\n user,\n await getApprovalAddress(contract),\n amountWei\n );\n return isApprovalRequired;\n};\n\nexport const setNetworkContractApproval = async (\n token: Token,\n contract: ApprovalContract | string,\n amount?: string,\n resolveImmediately?: boolean\n) => {\n const user = await user$.pipe(take(1)).toPromise();\n const amountWei = amount ? expandToken(amount, token.decimals) : undefined;\n return await setApproval(\n token.address,\n user,\n await getApprovalAddress(contract),\n amountWei,\n resolveImmediately\n );\n};\n\nconst getApprovalAddress = async (\n contract: ApprovalContract | string\n): Promise => {\n if (typeof contract === 'string') return contract;\n\n switch (contract) {\n case ApprovalContract.BancorNetwork:\n return await bancorNetwork$.pipe(take(1)).toPromise();\n case ApprovalContract.BancorNetworkV3:\n return ContractsApi.BancorNetwork.contractAddress;\n case ApprovalContract.ExchangeProxy:\n return await exchangeProxy$.pipe(take(1)).toPromise();\n case ApprovalContract.LiquidityProtection:\n return await liquidityProtection$.pipe(take(1)).toPromise();\n case ApprovalContract.Governance:\n return getNetworkVariables().governanceContractAddress;\n }\n};\n\nexport const resetApproval = async (\n contract: string,\n user: string,\n token: string\n): Promise => {\n const tx = await ContractsApi.Token(token).write.approve(contract, '0');\n await tx.wait();\n};\n","export const UNLIMITED_WEI =\n '115792089237316195423570985008687907853269984665640564039457584007913129639935';\n\nexport const NULL_APPROVAL_CONTRACTS = [\n '0x8A9C67fee641579dEbA04928c4BC45F66e26343A',\n '0x309627af60F0926daa6041B8279484312f2bf060',\n '0x4Fabb145d64652a948d72533023f6E7A623C7C53',\n '0xD46bA6D942050d489DBd938a2C909A5d5039A161',\n '0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C',\n '0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c',\n '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07',\n '0x1b22C32cD936cB97C28C5690a0695a82Abf688e6',\n '0x0F5D2fB29fb7d3CFeE444a200298f468908cC942',\n '0x83cee9e086A77e492eE0bB93C2B0437aD6fdECCc',\n '0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a',\n '0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7',\n '0x27f610BF36ecA0939093343ac28b1534a721DBB4',\n '0xF6B55acBBC49f4524Aa48D19281A9A77c54DE10f',\n '0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466',\n '0x4AaC461C86aBfA71e9d00d9a2cde8d74E4E1aeEa',\n '0xdd974D5C2e2928deA5F71b9825b8b646686BD200',\n '0x814e0908b12A99FeCf5BC101bB5d0b8B5cDf7d26',\n '0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3',\n '0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe',\n '0xe3818504c1B32bF1557b16C238B2E01Fd3149C17',\n '0x3d1BA9be9f66B8ee101911bC36D3fB562eaC2244',\n '0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5',\n '0x780116D91E5592E58a3b3c76A351571b39abCEc6',\n '0xb056c38f6b7Dc4064367403E26424CD2c60655e1',\n '0x4162178B78D6985480A308B2190EE5517460406D',\n '0x0Cf0Ee63788A0849fE5297F3407f701E122cC023',\n '0xc20464e0C373486d2B3335576e83a218b1618A5E',\n '0xcbee6459728019CB1f2bB971dDe2eE3271BC7617',\n '0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792',\n '0x744d70FDBE2Ba4CF95131626614a1763DF805B9E',\n '0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40',\n '0x84F7c44B6Fed1080f647E354D552595be2Cc602F',\n '0xEF2463099360a085f1f10b076Ed72Ef625497a06',\n '0xf04a8ac553FceDB5BA99A64799155826C136b0Be',\n '0xF433089366899D83a9f26A773D59ec7eCF30355e',\n '0xa485bD50228440797Abb4d4595161d7546811160',\n '0x9214eC02CB71CbA0ADA6896b8dA260736a67ab10',\n '0x960b236A07cf122663c4303350609A66A7B288C0',\n '0x47Ec6AF8E27C98e41d1Df7fb8219408541463022',\n '0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6',\n '0x6c37Bf4f042712C978A73e3fd56D1F5738dD7C43',\n '0x0cB20b77AdBe5cD58fCeCc4F4069D04b327862e5',\n '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n '0xB8BAa0e4287890a5F79863aB62b7F175ceCbD433',\n '0x0000000000085d4780B73119b644AE5ecd22b376',\n '0x26E75307Fc0C021472fEb8F727839531F112f317',\n '0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671',\n '0xC011A72400E58ecD99Ee497CF89E3775d4bd732F',\n '0xb1A5b7e9a268742B9B5D2455fFcf43BaBC6929bA',\n '0x5e6F3BC1186132565946feA123181529e7AeAFD8',\n '0xd758b77BCC792AFD58857E1d5C610aE649FDEE6b',\n '0x57Ab1E02fEE23774580C119740129eAC7081e9D3',\n '0x0316EB71485b0Ab14103307bf65a021042c6d380',\n '0x45804880De22913dAFE09f4980848ECE6EcbAf78',\n '0x67Abf1C62D8Acd07aDa35908d38Cd67bE7DfEB36',\n '0xEE4dC4C5Ca843B83035d8E5159AC1bd1b4EbdfF5',\n '0x94A2aAA374A8F2D52dad24330C8a0Ec2934700ae',\n '0x7db5454F3500f28171d1f9c7a38527C9cF94e6b2',\n '0xb5f278Ee11811eFEC0692EC61b1e9f9984f2de11',\n '0x0eCDd783dc7bF820614044B51862ED29714d2BA5',\n '0x37Be876EF051eB8EDdD0745107c5222D8CA8EC60',\n '0x83Ee8ec605C0aE3D7F1c9e360aB45A6C1C033Ab9',\n '0xE7845A9679dAd2B1cCCe49d5F0239d1c528f7A40',\n '0x623FA86c0e010Fe4701cEDF294C9cddb8f4F26e6',\n '0x8Ae56a6850a7cbeaC3c3Ab2cB311e7620167eAC8',\n '0x7cE0641D19095ed3226fC5222836901bcE41585D',\n '0xCB0aD5f479812edD6e2cED1cfE621bF39D7E9158',\n '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n '0x8E870D67F660D95d5be530380D0eC0bd388289E1',\n '0x79A91cCaaa6069A571f0a3FA6eD257796Ddd0eB4',\n '0x107721d9aA07d9DE8f2CC9545e0C9346A9Bb503b',\n '0x4a527d8fc13C5203AB24BA0944F4Cb14658D1Db6',\n '0xa1d65E8fB6e87b60FECCBc582F7f97804B725521',\n '0x0Ae055097C6d159879521C384F1D2123D1f195e6',\n '0x80fB784B7eD66730e8b1DBd9820aFD29931aab03',\n '0x0B244e01B1B0C9a959b3b0Bc19E3852395319876',\n '0x1cEB5cB57C4D4E2b2433641b95Dd330A33185A44',\n '0xF35cCfbcE1228014F66809EDaFCDB836BFE388f5',\n '0x48Fb253446873234F2fEBbF9BdeAA72d9d387f94',\n];\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDeposit(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.1742 15.5992L19.4992 28.2742M19.4992 28.2742L6.82422 15.5992M19.4992 28.2742L19.4992 1.94922M29.2492 37.0492L10.7242 37.0492\",\n stroke: \"currentColor\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDeposit);\nexport default __webpack_public_path__ + \"static/media/deposit.49ea3d61.svg\";\nexport { ForwardRef as ReactComponent };","import { Modal } from 'components/modal/Modal';\nimport { ReactComponent as IconLock } from 'assets/icons/lock.svg';\nimport {\n addNotification,\n NotificationType,\n} from 'store/notification/notification';\nimport {\n ApprovalContract,\n setNetworkContractApproval,\n} from 'services/web3/approval';\nimport { useDispatch } from 'react-redux';\nimport { Token } from 'services/observables/tokens';\nimport { web3 } from 'services/web3';\nimport { wait } from 'utils/pureFunctions';\nimport { sendConversionApprovedEvent } from 'services/api/googleTagManager';\nimport { ErrorCode } from 'services/web3/types';\nimport { Button, ButtonSize } from 'components/button/Button';\n\ninterface ModalApproveProps {\n setIsOpen: Function;\n isOpen: boolean;\n amount: string;\n fromToken?: Token;\n handleApproved: Function;\n waitForApproval?: boolean;\n contract: ApprovalContract;\n}\n\nexport const ModalApprove = ({\n setIsOpen,\n isOpen,\n amount,\n fromToken,\n handleApproved,\n waitForApproval,\n contract,\n}: ModalApproveProps) => {\n const dispatch = useDispatch();\n\n if (!fromToken) return null;\n\n // Wait for user to choose approval and proceed with approval based on user selection\n // Prop amount is UNDEFINED when UNLIMITED\n const approve = async (amount?: string) => {\n try {\n setIsOpen(false);\n const isUnlimited = amount === undefined;\n sendConversionApprovedEvent(isUnlimited);\n const txHash = await setNetworkContractApproval(\n fromToken,\n contract,\n amount\n );\n dispatch(\n addNotification({\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Approve ${fromToken.symbol} is pending confirmation`,\n updatedInfo: {\n successTitle: 'Transaction Confirmed',\n successMsg: `${amount || 'Unlimited'} approval set for ${\n fromToken.symbol\n }`,\n errorTitle: 'Transaction Failed',\n errorMsg: `${fromToken.symbol} approval had failed. Please try again or contact support.`,\n },\n txHash,\n })\n );\n if (waitForApproval) {\n let tx = null;\n while (tx === null)\n try {\n await wait(2000);\n tx = await web3.provider.getTransactionReceipt(txHash);\n } catch (error) {}\n }\n handleApproved();\n } catch (e: any) {\n setIsOpen(false);\n if (e.code === ErrorCode.DeniedTx)\n dispatch(\n addNotification({\n type: NotificationType.error,\n title: 'Transaction Rejected',\n msg: 'You rejected the transaction. If this was by mistake, please try again.',\n })\n );\n else\n addNotification({\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `${fromToken.symbol} approval had failed. Please try again or contact support.`,\n });\n }\n };\n\n return (\n \n
\n
\n
\n \n
\n

Approve {fromToken.symbol}

\n

\n Before you can proceed, you need to approve {fromToken.symbol}{' '}\n spending.\n

\n approve()}\n className=\"my-15\"\n >\n Approve\n \n

\n Want to approve before each transaction?\n

\n \n
\n
\n
\n );\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport dayjs from 'utils/dayjs';\nimport BigNumber from 'bignumber.js';\nimport { InputField } from 'components/inputField/InputField';\nimport { TokenInputField } from 'components/tokenInputField/TokenInputField';\nimport { ModalDuration } from 'elements/modalDuration/modalDuration';\nimport { Token, updateUserBalances } from 'services/observables/tokens';\nimport { ReactComponent as IconSync } from 'assets/icons/sync.svg';\nimport { classNameGenerator } from 'utils/pureFunctions';\nimport { getRate } from 'services/web3/swap/market';\nimport { KeeprDaoToken, swapLimit } from 'services/api/keeperDao';\nimport {\n addNotification,\n NotificationType,\n} from 'store/notification/notification';\nimport { useDispatch } from 'react-redux';\nimport { useWeb3React } from '@web3-react/core';\nimport { ethToken, wethToken } from 'services/web3/config';\nimport { useAppSelector } from 'store';\nimport { ModalApprove } from 'elements/modalApprove/modalApprove';\nimport {\n ApprovalContract,\n getNetworkContractApproval,\n} from 'services/web3/approval';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport {\n ConversionEvents,\n sendConversionEvent,\n setCurrentConversion,\n} from 'services/api/googleTagManager';\nimport { calculatePercentageChange } from 'utils/formulas';\nimport { ModalDepositETH } from 'elements/modalDepositETH/modalDepositETH';\nimport {\n Button,\n ButtonPercentages,\n ButtonSize,\n} from 'components/button/Button';\nimport useAsyncEffect from 'use-async-effect';\nimport { useWalletConnect } from 'elements/walletConnect/useWalletConnect';\n\nenum Field {\n from,\n to,\n rate,\n}\n\ninterface SwapLimitProps {\n fromToken: Token;\n setFromToken: Function;\n toToken?: Token;\n setToToken: Function;\n switchTokens: Function;\n refreshLimit: Function;\n}\n\nexport const SwapLimit = ({\n fromToken,\n setFromToken,\n toToken,\n setToToken,\n switchTokens,\n refreshLimit,\n}: SwapLimitProps) => {\n const dispatch = useDispatch();\n const { chainId } = useWeb3React();\n const account = useAppSelector((state) => state.user.account);\n const [fromAmount, setFromAmount] = useState('');\n const [toAmount, setToAmount] = useState('');\n const [toAmountUsd, setToAmountUsd] = useState('');\n const [fromAmountUsd, setFromAmountUsd] = useState('');\n const [rate, setRate] = useState('');\n const [marketRate, setMarketRate] = useState(-1);\n const [percentage, setPercentage] = useState('');\n const [selPercentage, setSelPercentage] = useState(1);\n const [showApproveModal, setShowApproveModal] = useState(false);\n const [showEthModal, setShowEthModal] = useState(false);\n const [fromError, setFromError] = useState('');\n const [rateWarning, setRateWarning] = useState({ type: '', msg: '' });\n const [isLoadingRate, setIsLoadingRate] = useState(false);\n const [duration, setDuration] = useState(\n dayjs.duration({ days: 7, hours: 0, minutes: 0 })\n );\n const { handleWalletButtonClick } = useWalletConnect();\n\n const previousField = useRef();\n const lastChangedField = useRef();\n const keeperDaoTokens = useAppSelector(\n (state) => state.bancor.keeperDaoTokens\n );\n const fiatToggle = useAppSelector((state) => state.user.usdToggle);\n const percentages = useMemo(() => [1, 3, 5], []);\n\n const calculatePercentageByRate = useCallback(\n (marketRate: number, rate: string) => {\n const percentage = calculatePercentageChange(Number(rate), marketRate);\n const index = percentages.indexOf(percentage);\n if (index === -1) {\n setPercentage(percentage.toFixed(2));\n setSelPercentage(-1);\n } else {\n setPercentage('');\n setSelPercentage(index);\n }\n },\n [percentages]\n );\n\n const calcFrom = useCallback(\n (to: string, rate: string) => {\n if (rate && to) {\n const amount = new BigNumber(to).div(rate);\n setFromAmount(amount.toString());\n const usdAmount = amount.times(fromToken!.usdPrice!).toString();\n setFromAmountUsd(usdAmount);\n }\n },\n [fromToken]\n );\n const calcTo = useCallback(\n (from: string, rate: string) => {\n if (rate && from && toToken) {\n const amount = new BigNumber(rate).times(from);\n setToAmount(amount.toString());\n const usdAmount = amount.times(toToken.usdPrice!).toString();\n setToAmountUsd(usdAmount);\n }\n },\n [toToken]\n );\n const calcRate = useCallback(\n (from: string, to: string) => {\n if (from && to) {\n const rate = new BigNumber(to).div(from).toString();\n setRate(rate);\n calculatePercentageByRate(marketRate, rate);\n }\n },\n [calculatePercentageByRate, marketRate]\n );\n\n const handleFieldChanged = useCallback(\n (field: Field, from: string, to: string, rate: string) => {\n if (\n previousField.current !== lastChangedField.current &&\n lastChangedField.current !== field\n )\n previousField.current = lastChangedField.current;\n lastChangedField.current = field;\n\n switch (field) {\n case Field.from:\n if (previousField.current === Field.to) calcRate(from, to);\n else calcTo(from, rate);\n break;\n case Field.to:\n if (previousField.current === Field.from) calcRate(from, to);\n else calcFrom(to, rate);\n break;\n case Field.rate:\n const isTooHigh = new BigNumber(rate).lt(marketRate);\n const isTooLow = new BigNumber(marketRate).times(1.2).lt(rate);\n if (isTooHigh) {\n setRateWarning({\n type: 'error',\n msg: 'Pay attention! The rate is lower than market rate, you can get a better rate on market swap',\n });\n } else if (isTooLow) {\n setRateWarning({\n type: 'warning',\n msg: 'Pay attention! The rate is too high above market rate and will likely not be fulfilled',\n });\n } else {\n setRateWarning({\n type: '',\n msg: '',\n });\n }\n if (previousField.current === Field.from) calcTo(from, rate);\n else calcFrom(to, rate);\n break;\n }\n },\n [calcRate, calcTo, calcFrom, marketRate]\n );\n\n const calculateRateByMarket = (\n marketRate: number,\n selPercentage: number,\n percentage: string\n ) => {\n const perc =\n selPercentage === -1\n ? Number(percentage) / 100\n : percentages[selPercentage] / 100;\n const rate = (marketRate * (1 + perc)).toFixed(6);\n handleFieldChanged(Field.rate, fromAmount, toAmount, rate);\n setRate(rate);\n };\n\n useAsyncEffect(\n async (isMounted) => {\n if (!fromToken || !toToken) return;\n if (toToken.address === ethToken && fromToken.address === wethToken)\n return;\n\n if (isMounted()) {\n setIsLoadingRate(true);\n const rate = Number(await getRate(fromToken, toToken, '1'));\n setMarketRate(rate);\n calculateRateByMarket(rate, 1, '');\n setIsLoadingRate(false);\n setRateWarning({\n type: '',\n msg: '',\n });\n }\n },\n [toToken?.address, fromToken?.address]\n );\n\n //Check if approval is required\n const checkApproval = async (token: Token) => {\n try {\n const isApprovalReq = await getNetworkContractApproval(\n token,\n ApprovalContract.ExchangeProxy,\n fromAmount\n );\n if (isApprovalReq) {\n sendConversionEvent(ConversionEvents.approvePop);\n setShowApproveModal(true);\n } else await handleSwap(true, token.address === wethToken);\n } catch (e: any) {\n dispatch(\n addNotification({\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `${token.symbol} approval had failed. Please try again or contact support.`,\n })\n );\n }\n };\n\n const updateETHandWETH = async () => {\n if (!(toToken && account)) return;\n\n setFromAmount('');\n setFromAmountUsd('');\n\n await updateUserBalances();\n };\n\n const handleSwap = async (\n approved: boolean = false,\n weth: boolean = false,\n showETHtoWETHModal: boolean = false\n ) => {\n if (!account) {\n handleWalletButtonClick();\n return;\n }\n\n if (!(fromToken && toToken && fromAmount && toAmount)) return;\n\n if (showETHtoWETHModal) return setShowEthModal(true);\n\n if (!approved) return checkApproval(fromToken);\n\n const notification = await swapLimit(\n weth ? { ...fromToken, address: wethToken } : fromToken,\n toToken,\n fromAmount,\n toAmount,\n account,\n duration,\n checkApproval\n );\n\n if (notification) dispatch(addNotification(notification));\n if (fromToken.address === ethToken) updateETHandWETH();\n refreshLimit();\n };\n\n const isSwapDisabled = () => {\n if (isLoadingRate) return true;\n if (fromError !== '') return true;\n const isInputZero =\n fromAmount === '' ||\n toAmount === '' ||\n rate === '' ||\n new BigNumber(fromAmount).eq(0) ||\n new BigNumber(toAmount).eq(0) ||\n new BigNumber(rate).eq(0);\n if (isInputZero && account) return true;\n if (!toToken) return true;\n if (!account) return false;\n if (\n toToken.address === ethToken ||\n keeperDaoTokens.findIndex((x) => x.address === toToken.address) === -1 ||\n (fromToken.address !== ethToken &&\n keeperDaoTokens.findIndex((x) => x.address === fromToken.address) ===\n -1)\n )\n return true;\n\n return false;\n };\n\n // handle input errors\n useEffect(() => {\n const isInsufficient =\n fromToken &&\n fromToken.balance &&\n new BigNumber(fromAmount).gt(fromToken.balance);\n if (isInsufficient) setFromError('Token balance is currently insufficient');\n else setFromError('');\n }, [fromAmount, fromToken]);\n\n const handleRateInput = (val: string) => {\n setRate(val);\n calculatePercentageByRate(marketRate, val);\n handleFieldChanged(Field.rate, fromAmount, toAmount, val);\n };\n\n const swapButtonText = () => {\n if (!toToken) return 'Select a token';\n if (!account) return 'Connect your wallet';\n else if (\n fromToken.address !== ethToken &&\n keeperDaoTokens.findIndex((x) => x.address === fromToken.address) === -1\n )\n return `${fromToken.symbol} token is not supported`;\n if (toToken.address === ethToken) return 'Please change ETH to WETH';\n else if (\n keeperDaoTokens.findIndex((x) => x.address === toToken.address) === -1\n )\n return `${toToken.symbol} token is not supported`;\n\n return 'Trade';\n };\n\n const handleSwapClick = () => {\n const tokenPair = fromToken.symbol + '/' + toToken?.symbol;\n setCurrentConversion(\n 'Limit',\n chainId,\n tokenPair,\n fromToken.symbol,\n toToken?.symbol,\n fromAmount,\n fromAmountUsd,\n toAmount,\n toAmountUsd,\n fiatToggle,\n rate,\n percentage,\n duration.asSeconds().toString()\n );\n sendConversionEvent(ConversionEvents.click);\n handleSwap(false, false, fromToken.address === ethToken);\n };\n\n return (\n
\n
\n {\n setFromAmount(val);\n handleFieldChanged(Field.from, val, toAmount, rate);\n }}\n border\n selectable\n excludedTokens={\n toToken\n ? [\n toToken.address,\n ...(toToken.address === ethToken ||\n toToken.address === wethToken\n ? [ethToken, wethToken]\n : []),\n ]\n : []\n }\n errorMsg={fromError}\n includedTokens={[ethToken, ...keeperDaoTokens.map((x) => x.address)]}\n />\n
\n\n
\n
\n switchTokens()}\n />\n
\n
\n {\n setToAmount(val);\n handleFieldChanged(Field.to, fromAmount, val, rate);\n }}\n selectable\n startEmpty\n excludedTokens={\n fromToken\n ? [\n fromToken.address,\n ...(fromToken.address === ethToken ||\n fromToken.address === wethToken\n ? [ethToken, wethToken]\n : []),\n ]\n : []\n }\n includedTokens={keeperDaoTokens.map((x) => x.address)}\n />\n {toToken && (\n <>\n
\n
Rate
\n {isLoadingRate ? (\n
\n ) : (\n
\n Market Rate:{' '}\n {`1 ${fromToken?.symbol} = ${prettifyNumber(marketRate)} ${\n toToken?.symbol\n }`}\n
\n )}\n
\n
\n
{`1 ${fromToken?.symbol} =`}
\n
\n {isLoadingRate && (\n
\n
\n
\n )}\n \n
\n
\n {rateWarning.msg && marketRate !== -1 && (\n
\n
\n \n {rateWarning.msg}\n
\n
\n )}\n
\n {\n const index = percentages.indexOf(percentage);\n calculateRateByMarket(marketRate, index, '');\n setSelPercentage(index);\n setPercentage('');\n }}\n itemStyle=\"w-[70px]\"\n />\n
\n {\n const percNum = Number(percentage);\n const index = percentages.indexOf(percNum);\n if (index !== -1 || !percNum) setPercentage('');\n\n const sel = percNum\n ? index\n : selPercentage === -1\n ? 1\n : selPercentage;\n calculateRateByMarket(marketRate, sel, percentage);\n setSelPercentage(sel);\n }}\n onChange={(val: string) => {\n calculateRateByMarket(marketRate, -1, val);\n setPercentage(val);\n }}\n format\n placeholder=\"Custom\"\n customClass=\"text-14 py-6 rounded-[12px] border border-graphite dark:border-white-low dark:bg-grey p-6\"\n />\n
\n
\n\n
\n Expires in\n \n
\n \n )}\n
\n\n \n handleSwap(true, fromToken.address === ethToken)\n }\n contract={ApprovalContract.ExchangeProxy}\n />\n handleSwap(true)}\n />\n handleSwapClick()}\n disabled={isSwapDisabled()}\n className=\"disabled:bg-silver dark:disabled:bg-charcoal\"\n >\n {swapButtonText()}\n \n
\n \n );\n};\n","import { Modal } from 'components/modal/Modal';\nimport { ReactComponent as IconDeposit } from 'assets/icons/deposit.svg';\nimport { Button, ButtonSize } from 'components/button/Button';\n\ninterface ModalDepositETHProps {\n amount: string;\n isOpen: boolean;\n setIsOpen: Function;\n onConfirm: Function;\n}\nexport const ModalDepositETH = ({\n amount,\n isOpen,\n setIsOpen,\n onConfirm,\n}: ModalDepositETHProps) => {\n return (\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n onClose={() => setIsOpen(false)}\n >\n
\n \n
Confirm WETH deposit
\n\n
\n
\n You Will Receive\n
\n {amount} WETH\n
\n
\n WETH is a token that represents ETH 1:1 and conforms to the ERC20\n token standard\n
\n {\n setIsOpen(false);\n onConfirm();\n }}\n >\n Confirm\n \n
\n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgInfoSolid(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 10 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.7,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.992 0C7.752 0 9.984 2.232 9.984 4.992C9.984 7.752 7.752 9.984 4.992 9.984C2.232 9.984 0 7.752 0 4.992C0 2.232 2.232 0 4.992 0ZM4.99199 1.896C4.89599 1.896 4.82399 1.896 4.75199 1.92C4.67999 1.944 4.58399 1.992 4.53599 2.04C4.48799 2.088 4.43999 2.16 4.39199 2.232C4.36799 2.304 4.34399 2.4 4.34399 2.52C4.34399 2.62249 4.3615 2.68996 4.38156 2.76728L4.39199 2.808C4.41599 2.88 4.46399 2.952 4.53599 3C4.60799 3.048 4.67999 3.072 4.75199 3.096C4.82399 3.12 4.91998 3.12 4.99198 3.12H4.99199H4.99202C5.08801 3.12 5.184 3.12 5.25599 3.096C5.32799 3.072 5.39999 3.048 5.44799 3C5.49599 2.952 5.54398 2.88001 5.59198 2.80802L5.59199 2.808C5.59698 2.79303 5.60301 2.77703 5.60942 2.75999C5.63387 2.69506 5.66399 2.61506 5.66399 2.52C5.66399 2.4 5.63999 2.304 5.59199 2.232C5.56799 2.16 5.51999 2.088 5.44799 2.04C5.42652 2.02568 5.40718 2.01136 5.3887 1.99768L5.38866 1.99766C5.3452 1.96548 5.30651 1.93683 5.25599 1.92C5.18399 1.896 5.08799 1.896 4.99199 1.896ZM4.39062 8.06417V3.57617H5.61462V8.06417H4.39062Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfoSolid);\nexport default __webpack_public_path__ + \"static/media/info-solid.beba923b.svg\";\nexport { ForwardRef as ReactComponent };","import { Summary } from 'services/api/intoTheBlock';\nimport { pick, toPairs } from 'lodash';\n\nexport const Speedometer = ({ summary }: { summary: Summary | null }) => {\n const rotation = summary ? summary.score * 180 : 90;\n\n const gradientColour =\n rotation > 110 ? '#0ED3B0' : rotation > 70 ? 'grey' : 'red';\n\n const title = () => {\n if (!summary) return 'neutral';\n if (summary.score < summary.bullish && summary.score > summary.bearish)\n return 'neutral';\n const findTitle = toPairs(\n pick(summary, ['bullish', 'bearish', 'neutral'])\n ).sort(([, a], [, b]) => Number(b) - Number(a))[0];\n return findTitle[0];\n };\n\n const titleColour =\n rotation > 110\n ? 'text-success'\n : rotation > 70\n ? 'text-graphite'\n : 'text-error';\n\n return (\n
\n
\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n
\n \n {title()}\n
\n
\n
\n
\n {summary ? summary.bearish : 0}\n
\n
Bearish
\n
\n
\n
\n {summary ? summary.neutral : 0}\n
\n
Neutral
\n
\n
\n
\n {summary ? summary.bullish : 0}\n
\n
Bullish
\n
\n
\n \n );\n};\n","import { classNameGenerator } from 'utils/pureFunctions';\n\nexport interface LinePercentageData {\n color: string;\n decPercent: number;\n label?: string;\n}\n\ninterface LinePercentageProps {\n percentages?: LinePercentageData[];\n showEmpty?: boolean;\n}\n\nconst linePercentages = (percentages: LinePercentageData[]) => {\n let count = 0;\n return percentages.map((_, index) => {\n const i = percentages[percentages.length - 1 - index];\n const linePercentage = 100 - count;\n count += i.decPercent * 100;\n return {\n linePercentage,\n percentage: i,\n color: i.color,\n };\n });\n};\n\nexport const LinePercentage = ({\n percentages,\n showEmpty,\n}: LinePercentageProps) => {\n return (\n <>\n
\n {percentages &&\n percentages.map((p) => (\n
\n \n {(p.decPercent * 100).toFixed(0) + '%'}\n {p.label && p.label}\n \n
\n ))}\n
\n
\n \n {percentages &&\n linePercentages(percentages).map((p, index) => (\n \n ))}\n {showEmpty && (\n
\n )}\n \n \n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLightbulb(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 17 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.5 0C3.52799 0 -0.00578833 3.91594 7.11796e-06 8.26125C0.00290484 10.3369 0.796882 12.2302 2.10376 13.6772C3.34253 15.0483 4.53253 17.2819 4.63637 18L4.63927 21.5241C4.63927 21.6717 4.68466 21.8156 4.7687 21.9384L5.95242 23.6653C6.09586 23.8744 6.33733 24 6.59572 24H10.4038C10.6627 24 10.9042 23.8744 11.0471 23.6653L12.2308 21.9384C12.3149 21.8156 12.3598 21.6712 12.3603 21.5241L12.3636 18C12.4728 17.2631 13.6671 15.038 14.8963 13.6772C16.2055 12.2273 17 10.3298 17 8.25C17 3.69375 13.1943 0 8.5 0ZM10.8153 21.2958L9.98992 22.5H7.00961L6.18424 21.2958L6.18375 21H10.8153V21.2958ZM10.8172 19.5H6.18231L6.17893 18H10.8192L10.8172 19.5ZM13.7343 12.6881C13.0586 13.4362 11.9797 14.9428 11.2915 16.4995H5.70901C5.02032 14.9423 3.94188 13.4362 3.26623 12.6881C2.14915 11.4516 1.55174 9.88359 1.54788 8.25C1.53918 4.64109 4.46395 1.5 8.5 1.5C12.3347 1.5 15.4545 4.52812 15.4545 8.25C15.4545 9.88359 14.8436 11.46 13.7343 12.6881ZM8.5 3C5.51776 3 3.09091 5.35547 3.09091 8.25C3.09091 8.66438 3.43671 9 3.86364 9C4.29057 9 4.63637 8.66438 4.63637 8.25C4.63637 6.18234 6.36921 4.5 8.5 4.5C8.92694 4.5 9.27273 4.16437 9.27273 3.75C9.27273 3.33562 8.92694 3 8.5 3Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLightbulb);\nexport default __webpack_public_path__ + \"static/media/lightbulb.21aa9427.svg\";\nexport { ForwardRef as ReactComponent };","import {\n LinePercentage,\n LinePercentageData,\n} from 'components/linePercentage/LinePercentage';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\nimport { ReactComponent as IconInfo } from 'assets/icons/info-solid.svg';\n\ninterface InsightCardProps {\n label: string;\n percentages: LinePercentageData[];\n tooltip: string;\n}\n\nexport const InsightCard = ({ data }: { data: InsightCardProps | null }) => {\n return (\n
\n \n {data ? data.label : 'No available insights'}\n
\n (\n \n )}\n children={data ? data.tooltip : ''}\n />\n
\n
\n
\n \n
\n
\n );\n};\n","import { prettifyNumber } from 'utils/helperFunctions';\nimport { Speedometer } from './Speedometer';\nimport { IntoTheBlock } from 'services/api/intoTheBlock';\nimport { Token } from 'services/observables/tokens';\nimport { InsightCard } from 'elements/swapInsights/InsightCard';\n\nexport const InsightRow = ({\n token,\n data,\n}: {\n token: Token;\n data?: IntoTheBlock;\n}) => {\n const cards = [\n data && data.inOutOfTheMoney\n ? {\n label: 'Holders making money at the current price',\n tooltip:\n 'Shows what percentage of addresses holding this crypto-asset are making profits (in the money), breaking even (at the money) and losing money (out of the money) given the current market price.',\n percentages: [\n { color: 'success', decPercent: data.inOutOfTheMoney.in },\n {\n color: 'graphite',\n decPercent: data.inOutOfTheMoney.between,\n },\n { color: 'error', decPercent: data.inOutOfTheMoney.out },\n ],\n }\n : null,\n data && data.concentration\n ? {\n label: 'Concentration by large holders',\n tooltip:\n 'The total holdings of whales and Investors that own more than 0.1% of the circulating supply',\n percentages: [\n { color: 'primary', decPercent: data.concentration },\n { color: 'graphite', decPercent: 1 - data.concentration },\n ],\n }\n : null,\n data && data.byTimeHeldComposition\n ? {\n label: 'Holders composition by time held',\n tooltip:\n 'Shows ownership distribution by time held. A Hodler (holding this crypto for over a year), a Cruiser (holding for more than a month but less than a year) or a Trader (holding for less than a month).',\n percentages: [\n {\n color: 'primary',\n decPercent: data.byTimeHeldComposition.cruiser,\n },\n {\n color: 'error',\n decPercent: data.byTimeHeldComposition.trader,\n },\n {\n color: 'success',\n decPercent: data.byTimeHeldComposition.hodler,\n },\n ],\n }\n : null,\n ];\n\n return (\n
\n
\n \n
\n
\n
\n \n
{token.symbol}
\n
\n Price {prettifyNumber(token.usdPrice ?? 0, true)}\n
\n
\n
\n {cards.map((card, index) => (\n \n ))}\n
\n
\n
\n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIntotheblock(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 20,\n viewBox: \"0 0 17 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.44566 9.75931C7.80333 9.38691 7.28456 9.09269 6.77286 8.78706C6.56056 8.66003 6.36242 8.67143 6.15774 8.78923C5.84365 8.96946 5.52792 9.14806 5.21492 9.33046C3.8524 10.1236 2.49097 10.9188 1.1279 11.7114C0.930847 11.826 0.725625 11.9275 0.457258 12.0713C0.437117 11.8118 0.412077 11.6387 0.411532 11.4655C0.408266 9.36629 0.416431 7.26761 0.401189 5.16839C0.397923 4.73574 0.559597 4.45562 0.927036 4.24228C3.26232 2.88677 5.59379 1.52421 7.92308 0.158929C8.25024 -0.0326991 8.5627 -0.0625561 8.89585 0.132872C11.4592 1.63766 14.0237 3.1392 16.587 4.64399C16.6616 4.68796 16.7231 4.75474 16.8325 4.84594C14.0509 6.47124 11.3013 8.07809 8.51316 9.70774C8.59699 9.8022 8.64 9.88146 8.70695 9.92108C9.15822 10.1903 9.6182 10.4444 10.0668 10.718C10.3128 10.8684 10.5371 10.8597 10.7788 10.7158C11.2148 10.4558 11.6568 10.2072 12.095 9.95094C13.347 9.21972 14.598 8.4874 15.8505 7.75672C16.0182 7.65901 16.1913 7.57106 16.4346 7.43861C16.4575 7.69049 16.4858 7.86204 16.4863 8.03358C16.4923 10.1507 16.4852 12.2678 16.5037 14.385C16.5076 14.8339 16.2904 15.0755 15.9338 15.2829C13.9431 16.4381 11.9584 17.6036 9.97258 18.7664C9.65958 18.9493 9.35093 19.1393 9.0401 19.3255C8.66613 19.5497 8.28617 19.5573 7.9024 19.3516C7.77447 19.2832 7.6471 19.2137 7.52189 19.1409C5.23724 17.8066 2.95204 16.4728 0.668468 15.1357C0.468145 15.0185 0.279254 14.8833 0 14.7009C2.82629 13.0474 5.58072 11.4356 8.44566 9.75931ZM7.92254 18.3342C7.94703 18.0867 7.97643 17.932 7.97589 17.7767C7.97207 16.1845 7.96935 14.5923 7.95248 13.0007C7.94758 12.5632 8.06516 12.2342 8.48976 12.0306C8.8131 11.8754 9.10869 11.6631 9.42387 11.472C8.79786 10.8418 8.43532 10.7647 7.77556 11.1501C5.88175 12.2554 3.99393 13.3709 2.10556 14.4849C2.00431 14.5446 1.91667 14.6287 1.76262 14.7476C3.82627 15.9495 5.83712 17.1204 7.92254 18.3342ZM7.47181 8.02598C8.07441 8.71106 8.35367 8.7762 9.04718 8.37395C10.9257 7.28498 12.7989 6.18624 14.6725 5.08859C14.8032 5.01205 14.9191 4.91054 15.0754 4.79599C14.9409 4.70045 14.8593 4.63151 14.7683 4.57939C12.8413 3.46654 10.9138 2.35586 8.98512 1.24627C8.97423 1.24029 8.95082 1.25278 8.93449 1.26038C8.91925 1.26744 8.90619 1.27829 8.87026 1.30218C8.86427 1.42921 8.85066 1.57144 8.85121 1.71421C8.85284 3.35851 8.84849 5.00282 8.86427 6.64658C8.86808 7.05535 8.74234 7.32787 8.35149 7.50158C8.04393 7.63729 7.76903 7.84521 7.47181 8.02598ZM1.73649 4.79654C1.933 4.92628 2.0348 4.99902 2.14149 5.06308C3.27375 5.74165 4.40546 6.42076 5.54044 7.0939C5.71028 7.19432 5.89101 7.28878 6.07935 7.34361C6.63514 7.50647 7.09784 7.28281 7.55183 6.98207C7.94322 6.72258 7.98405 6.3567 7.98133 5.94196C7.97208 4.56962 7.97915 3.19674 7.97643 1.82441C7.97589 1.63658 7.95302 1.44875 7.93506 1.17624C5.8382 2.40092 3.82899 3.57457 1.73649 4.79654ZM8.88659 18.3684C11.0243 17.1231 13.0498 15.943 15.1401 14.7253C14.9093 14.5793 14.7613 14.48 14.6078 14.3893C13.5299 13.7553 12.4576 13.1125 11.371 12.4937C10.2567 11.8585 10.6193 11.839 9.43476 12.4747C9.02105 12.6967 8.83379 12.9866 8.8425 13.4681C8.86645 14.8426 8.84958 16.2177 8.8523 17.5927C8.8523 17.8077 8.87026 18.0216 8.88659 18.3684ZM15.5392 8.94449C14.1031 9.78103 12.7379 10.5758 11.2741 11.4286C12.7374 12.2776 14.1021 13.0696 15.5392 13.9035C15.5392 12.2125 15.5392 10.6333 15.5392 8.94449ZM5.59597 8.09221C4.13546 7.24535 2.78437 6.46201 1.36579 5.63959C1.36579 7.31104 1.36579 8.88206 1.36579 10.5584C2.78873 9.72891 4.1371 8.94286 5.59597 8.09221Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIntotheblock);\nexport default __webpack_public_path__ + \"static/media/intotheblock.96e46f58.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgInfo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 10 11\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.5 5.5C9.5 7.98528 7.48528 10 5 10C2.51472 10 0.5 7.98528 0.5 5.5C0.5 3.01472 2.51472 1 5 1C7.48528 1 9.5 3.01472 9.5 5.5Z\",\n stroke: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 8L5 5\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5 3C4.72386 3 4.5 3.22386 4.5 3.5C4.5 3.77614 4.72386 4 5 4C5.27614 4 5.5 3.77614 5.5 3.5C5.5 3.22386 5.27614 3 5 3Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfo);\nexport default __webpack_public_path__ + \"static/media/info.c1cd5c10.svg\";\nexport { ForwardRef as ReactComponent };","import { InsightRow } from './InsightRow';\nimport { ReactComponent as IconLightbulb } from 'assets/icons/lightbulb.svg';\nimport { ReactComponent as IconIntotheblock } from 'assets/icons/intotheblock.svg';\nimport { IntoTheBlock } from 'services/api/intoTheBlock';\nimport { ReactComponent as IconTimes } from 'assets/icons/times.svg';\nimport { useLocalStorage } from 'hooks/useLocalStorage';\nimport { Token } from 'services/observables/tokens';\nimport { sendInsight } from 'services/api/googleTagManager';\nimport { useState } from 'react';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\ninterface InsightProps {\n fromToken: Token;\n toToken?: Token;\n fromTokenIntoBlock?: IntoTheBlock;\n toTokenIntoBlock?: IntoTheBlock;\n}\n\nexport const Insight = ({\n fromToken,\n toToken,\n fromTokenIntoBlock,\n toTokenIntoBlock,\n}: InsightProps) => {\n const [isExpanded, setIsExpanded] = useLocalStorage(\n 'insightsExpanded',\n false\n );\n const [show, setShow] = useState(isExpanded);\n\n return (\n setShow(isExpanded)}\n className={`hidden 2xl:block widget-large mx-auto overflow-hidden transition-all duration-500 ease-in-out ${\n isExpanded ? 'max-w-full h-[583px] w-[780px]' : 'w-[65px] h-[65px]'\n }`}\n >\n \n
\n {!isExpanded ? (\n (\n {\n sendInsight(!isExpanded);\n setShow(!isExpanded);\n setIsExpanded(!isExpanded);\n }}\n >\n \n \n )}\n children={'Insight'}\n />\n ) : (\n {\n sendInsight(!isExpanded);\n setShow(!isExpanded);\n setIsExpanded(!isExpanded);\n }}\n >\n \n \n )}\n \n Insights\n
\n \n
\n

Powered by

\n \n \n intothe\n block\n \n \n
\n \n \n {show && (\n
\n {fromToken && (\n \n )}\n {toToken && }\n
\n )}\n \n \n );\n};\n","import { useState } from 'react';\n\nexport const useLocalStorage = (key: string, initialValue: T) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? (JSON.parse(item) as T) : initialValue;\n } catch (error) {\n console.error(error);\n return initialValue;\n }\n });\n\n const setValue = (value: T) => {\n try {\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n console.error(error);\n }\n };\n return [storedValue, setValue] as [T, (value: T) => void];\n};\n","import axios from 'axios';\n\nconst baseUrl = 'https://api.intotheblock.com';\nconst apiKey = process.env.REACT_APP_INTOTHEBLOCK_KEY || '';\nconst axiosConfig = {\n headers: { 'x-api-key': apiKey },\n};\n\ninterface SignalsRes {\n summary: Summary;\n}\n\nexport interface Summary {\n bearish: number;\n bullish: number;\n neutral: number;\n score: number;\n thresholds: Thresholds;\n}\n\ninterface Thresholds {\n bearish: number;\n bullish: number;\n}\n\ninterface OverviewRes {\n concentration: number;\n inOutOfTheMoney?: InOutOfTheMoney;\n byTimeHeldComposition?: ByTimeHeldComposition;\n}\n\ninterface InOutOfTheMoney {\n in: number;\n between: number;\n out: number;\n}\n\ninterface ByTimeHeldComposition {\n hodler: number;\n cruiser: number;\n trader: number;\n}\n\nexport interface IntoTheBlock {\n summary: Summary;\n inOutOfTheMoney?: InOutOfTheMoney;\n concentration: number;\n byTimeHeldComposition?: ByTimeHeldComposition;\n symbol: string;\n}\n\nconst calculateTimeHeld = (timeHeld: ByTimeHeldComposition) => {\n const sumTimeHeld = timeHeld.hodler + timeHeld.cruiser + timeHeld.trader;\n return {\n hodler: timeHeld.hodler / sumTimeHeld,\n cruiser: timeHeld.cruiser / sumTimeHeld,\n trader: timeHeld.trader / sumTimeHeld,\n };\n};\n\nconst calculateInOut = (inOut: InOutOfTheMoney) => {\n const sumInOut = inOut.in + inOut.between + inOut.out;\n return {\n in: inOut.in / sumInOut,\n between: inOut.between / sumInOut,\n out: inOut.out / sumInOut,\n };\n};\n\nexport const intoTheBlockByToken = async (\n symbol: string\n): Promise => {\n try {\n const [signal, overview] = await Promise.all([\n axios.get(`${baseUrl}/${symbol}/signals`, axiosConfig),\n axios.get(`${baseUrl}/${symbol}/overview`, axiosConfig),\n ]);\n const inOut = overview.data.inOutOfTheMoney;\n const timeHeld = overview.data.byTimeHeldComposition;\n\n const byTimeHeldComposition = timeHeld && calculateTimeHeld(timeHeld);\n const inOutOfTheMoney = inOut && calculateInOut(inOut);\n\n return {\n summary: signal.data.summary,\n symbol,\n concentration: overview.data.concentration,\n ...(inOutOfTheMoney && { inOutOfTheMoney }),\n ...(byTimeHeldComposition && { byTimeHeldComposition }),\n };\n } catch (error) {}\n};\n","import { useAppSelector } from 'store/index';\nimport { useTokenInputV3Return } from 'elements/trade/useTknFiatInput';\nimport { Image } from 'components/image/Image';\nimport { prettifyNumber, toBigNumber } from 'utils/helperFunctions';\nimport { useMemo, useRef, useState } from 'react';\nimport { Token } from 'services/observables/tokens';\nimport { SearchableTokenList } from 'components/searchableTokenList/SearchableTokenList';\nimport { ReactComponent as IconChevron } from 'assets/icons/chevronDown.svg';\nimport { classNameGenerator } from 'utils/pureFunctions';\n\ninterface Props {\n input?: useTokenInputV3Return;\n isLoading?: boolean;\n onFocus?: () => void;\n label?: string;\n tokens: Token[];\n onTokenSelect: (token: Token) => void;\n disabled?: boolean;\n errorMsg?: string;\n excludedTokens?: string[];\n includedTokens?: string[];\n disableSelection?: boolean;\n}\n\nexport const TradeWidgetInput = ({\n input,\n isLoading,\n onFocus,\n label,\n tokens,\n onTokenSelect,\n disabled,\n errorMsg,\n excludedTokens,\n includedTokens,\n disableSelection,\n}: Props) => {\n const isFiat = useAppSelector((state) => state.user.usdToggle);\n const inputRef = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const value = useMemo(() => {\n if (!input) return '';\n return isFiat ? input.inputFiat : input.inputTkn;\n }, [input, isFiat]);\n\n const handleFocusChange = (state: boolean) => {\n if (state) {\n onFocus && onFocus();\n inputRef.current?.focus();\n } else {\n inputRef.current?.blur();\n }\n setIsFocused(state);\n };\n\n return (\n <>\n
\n
\n {label &&
{label}
}\n {input?.token &&\n input?.token.balance &&\n Number(input?.token.balance) > 0 && (\n {\n if (!disabled && input)\n if (input.token.balanceUsd && isFiat)\n input.handleChange(input.token.balanceUsd.toString());\n else if (input.token.balance && !isFiat)\n input.handleChange(input.token.balance.toString());\n }}\n className={`${\n disabled\n ? 'cursor-text'\n : 'hover:text-primary transition-colors duration-300'\n }`}\n >\n Balance: {prettifyNumber(input?.token.balance)} (\n {prettifyNumber(input?.token.balanceUsd ?? 0, true)})\n \n )}\n
\n\n \n {!tokens.length && (\n
\n
\n
\n
\n )}\n
\n {input && (\n {\n if (!disableSelection) {\n e.preventDefault();\n setIsOpen(true);\n }\n }}\n >\n \n
{input.token.symbol}
\n {!disableSelection && }\n \n )}\n\n {!!tokens.length && !input && (\n {\n setIsOpen(true);\n }}\n className=\"h-[75px] text-primary text-20 flex uppercase font-medium items-center space-x-10\"\n >\n
Select a Token
\n \n \n )}\n
\n {\n handleFocusChange(true)}\n className=\"text-right cursor-text h-full flex-grow flex justify-center flex-col\"\n >\n {!isLoading && input ? (\n <>\n {\n !disabled && input.handleChange(e.target.value);\n }}\n placeholder={'0.00'}\n onFocus={() => handleFocusChange(true)}\n onBlur={() => handleFocusChange(false)}\n />\n {toBigNumber(input.inputTkn).plus(input.inputFiat).gt(0) && (\n
\n {prettifyNumber(\n !isFiat ? input.inputFiat : input.inputTkn,\n !isFiat\n )}{' '}\n {input.oppositeUnit}\n
\n )}\n \n ) : (\n (!tokens.length || (isLoading && input)) && (\n
\n
\n
\n
\n )\n )}\n
\n }\n
\n {errorMsg && (\n
\n
{errorMsg}
\n
\n )}\n
\n\n \n \n );\n};\n","import { ChangeEvent, useCallback, useMemo, useState } from 'react';\nimport { calcFiatValue, calcTknValue } from 'utils/helperFunctions';\nimport { Token } from 'services/observables/tokens';\nimport { sanitizeNumberInput } from 'utils/pureFunctions';\n\nexport const calcOppositeValue = (\n isFiat: boolean,\n amount: string,\n usdPrice: string | null,\n decimals: number\n) => {\n if (amount === '') return '';\n\n if (isFiat) return calcTknValue(amount, usdPrice, decimals);\n\n return calcFiatValue(amount, usdPrice);\n};\n\nexport interface useTokenInputV3Props {\n token: Token;\n setInputTkn: (amount: string) => void;\n setInputFiat: (amount: string) => void;\n isFiat: boolean;\n}\n\nexport const useTokenInputV3 = ({\n token,\n setInputTkn,\n setInputFiat,\n isFiat,\n}: useTokenInputV3Props) => {\n const [isFocused, setIsFocused] = useState(false);\n const { symbol, usdPrice, decimals } = useMemo(() => token, [token]);\n const inputUnit = isFiat ? 'USD' : symbol;\n\n const oppositeUnit = isFiat ? symbol : 'USD';\n\n const handleChange = useCallback(\n (e: ChangeEvent) => {\n const value = sanitizeNumberInput(e.target.value);\n\n if (isFiat) {\n const oppositeValue = value\n ? calcOppositeValue(true, value, usdPrice, decimals)\n : '';\n setInputTkn(oppositeValue);\n setInputFiat(value);\n } else {\n const oppositeValue = value\n ? calcOppositeValue(false, value, usdPrice, decimals)\n : '';\n setInputTkn(value);\n\n setInputFiat(oppositeValue);\n }\n },\n [decimals, isFiat, setInputTkn, setInputFiat, usdPrice]\n );\n\n return { handleChange, inputUnit, oppositeUnit, isFocused, setIsFocused };\n};\n","import { Token } from 'services/observables/tokens';\nimport { useCallback, useState } from 'react';\nimport { useAppSelector } from 'store/index';\nimport { debounce } from 'lodash';\nimport { sanitizeNumberInput } from 'utils/pureFunctions';\nimport { calcOppositeValue } from 'components/tokenInput/useTokenInputV3';\n\ninterface useTokenInputV3Props {\n token?: Token;\n inputTkn: string;\n setInputTkn: (amount: string) => void;\n inputFiat: string;\n setInputFiat: (amount: string) => void;\n onDebounce?: (amount: string) => void;\n}\n\nexport interface useTokenInputV3Return {\n handleChange: (val: string) => void;\n inputUnit: string;\n oppositeUnit: string;\n inputTkn: string;\n setInputTkn: (val: string) => void;\n inputFiat: string;\n setInputFiat: (val: string) => void;\n isTyping: boolean;\n token: Token;\n}\n\nexport const useTknFiatInput = ({\n token,\n inputTkn,\n setInputTkn,\n inputFiat,\n setInputFiat,\n onDebounce = () => {},\n}: useTokenInputV3Props): useTokenInputV3Return | undefined => {\n const isFiat = useAppSelector((state) => state.user.usdToggle);\n const symbol = token?.symbol ?? 'N/A';\n const decimals = token?.decimals ?? 18;\n const usdPrice = token?.usdPrice ?? '0';\n\n const inputUnit = isFiat ? 'USD' : symbol;\n\n const oppositeUnit = isFiat ? symbol : 'USD';\n const [isTyping, setIsTyping] = useState(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedChangeHandler = useCallback(debounce(onDebounce, 300), [\n token?.address,\n onDebounce,\n ]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedSetIsTyping = useCallback(debounce(setIsTyping, 300), [\n token?.address,\n ]);\n\n const handleChange = useCallback(\n (val: string) => {\n setIsTyping(true);\n const value = sanitizeNumberInput(val);\n\n if (isFiat) {\n const oppositeValue = value\n ? calcOppositeValue(true, value, usdPrice, decimals)\n : '';\n setInputTkn(oppositeValue);\n setInputFiat(value);\n debouncedChangeHandler(oppositeValue);\n } else {\n const oppositeValue = value\n ? calcOppositeValue(false, value, usdPrice, decimals)\n : '';\n setInputTkn(value);\n setInputFiat(oppositeValue);\n debouncedChangeHandler(value);\n }\n\n value ? debouncedSetIsTyping(false) : setIsTyping(false);\n },\n [\n debouncedSetIsTyping,\n isFiat,\n usdPrice,\n decimals,\n setInputTkn,\n setInputFiat,\n debouncedChangeHandler,\n ]\n );\n\n if (!token) return undefined;\n\n return {\n handleChange,\n inputUnit,\n oppositeUnit,\n setInputTkn,\n setInputFiat,\n inputTkn,\n inputFiat,\n isTyping,\n token,\n };\n};\n","import PQueue from 'p-queue';\nimport { Token } from 'services/observables/tokens';\nimport { useAppSelector } from 'store/index';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { getRateAndPriceImapct } from 'services/web3/swap/market';\nimport { calcOppositeValue } from 'components/tokenInput/useTokenInputV3';\nimport {\n useTknFiatInput,\n useTokenInputV3Return,\n} from 'elements/trade/useTknFiatInput';\nimport { toBigNumber } from 'utils/helperFunctions';\nimport { wethToken } from 'services/web3/config';\n\nconst queue = new PQueue({ concurrency: 1 });\n\ninterface UseTradeWidgetProps {\n from?: string;\n to?: string;\n tokens: Token[];\n}\n\nexport interface UseTradeWidgetReturn {\n isLoading: boolean;\n fromInput: useTokenInputV3Return | undefined;\n toInput: useTokenInputV3Return | undefined;\n priceImpact: string;\n filteredTokens: Token[];\n isV3: boolean;\n}\n\nexport const useTradeWidget = ({\n from,\n to,\n tokens,\n}: UseTradeWidgetProps): UseTradeWidgetReturn => {\n const isFiat = useAppSelector((state) => state.user.usdToggle);\n const forceV3Routing = useAppSelector((state) => state.user.forceV3Routing);\n\n const [fromInputTkn, setFromInputTkn] = useState('');\n const [fromInputFiat, setFromInputFiat] = useState('');\n\n const [toInputTkn, setToInputTkn] = useState('');\n const [toInputFiat, setToInputFiat] = useState('');\n\n const [priceImpact, setPriceImpact] = useState('0.0000');\n const [isV3, setIsV3] = useState(false);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const tokensMap = useMemo(\n () => new Map(tokens.map((token) => [token.address, token])),\n [tokens]\n );\n\n const fromToken = useMemo(() => tokensMap.get(from ?? ''), [from, tokensMap]);\n const toToken = useMemo(() => tokensMap.get(to ?? ''), [to, tokensMap]);\n\n const onFromDebounce = useCallback(\n async (val: string) => {\n if (!fromToken || !toToken) return;\n queue.clear();\n await queue.add(async () => {\n if (queue.size !== 0) return;\n setIsLoading(!!val);\n try {\n const { rate, priceImpact, isV3 } =\n fromToken.address === wethToken\n ? { rate: val, priceImpact: '0', isV3: true }\n : val\n ? await getRateAndPriceImapct(\n fromToken,\n toToken,\n val,\n forceV3Routing\n )\n : { rate: '', priceImpact: '', isV3: true };\n\n setPriceImpact(priceImpact);\n setIsV3(isV3);\n\n const toValue =\n toBigNumber(rate).isZero() || isNaN(Number(rate)) ? '' : rate;\n\n const toValueFiat = toValue\n ? calcOppositeValue(\n false,\n toValue,\n toToken.usdPrice,\n toToken.decimals\n )\n : '';\n if (isFiat) {\n setToInputTkn(toValue);\n setToInputFiat(toValueFiat);\n } else {\n setToInputTkn(toValue);\n setToInputFiat(toValueFiat);\n }\n } catch (e) {\n console.error('Trade Widget onFromDebounce failed.', e);\n } finally {\n setIsLoading(false);\n }\n });\n },\n [forceV3Routing, fromToken, isFiat, toToken]\n );\n\n const fromInput = useTknFiatInput({\n token: fromToken,\n setInputTkn: setFromInputTkn,\n setInputFiat: setFromInputFiat,\n onDebounce: onFromDebounce,\n inputTkn: fromInputTkn,\n inputFiat: fromInputFiat,\n });\n\n const toInput = useTknFiatInput({\n token: toToken,\n setInputTkn: setToInputTkn,\n setInputFiat: setToInputFiat,\n inputTkn: toInputTkn,\n inputFiat: toInputFiat,\n });\n\n const filteredTokens = useMemo(\n () => tokens.filter((t) => t.address !== from && t.address !== to),\n [from, to, tokens]\n );\n\n const onTokenChange = useCallback(() => {\n void onFromDebounce(fromInputTkn);\n setFromInputFiat(\n calcOppositeValue(\n false,\n fromInputTkn,\n fromToken?.usdPrice ?? '',\n fromToken?.decimals ?? 0\n )\n );\n }, [fromInputTkn, fromToken?.decimals, fromToken?.usdPrice, onFromDebounce]);\n\n const fromTokenAddressRef = useRef(fromToken?.address);\n const toTokenAddressRef = useRef(toToken?.address);\n\n useEffect(() => {\n if (toToken?.address !== toTokenAddressRef.current) {\n toTokenAddressRef.current = toToken?.address;\n onTokenChange();\n return;\n }\n if (fromToken?.address !== fromTokenAddressRef.current) {\n fromTokenAddressRef.current = fromToken?.address;\n onTokenChange();\n }\n }, [fromToken?.address, onTokenChange, toToken?.address]);\n\n return { fromInput, toInput, isLoading, priceImpact, filteredTokens, isV3 };\n};\n","import { ReactComponent as IconLock } from '../../assets/icons/lock.svg';\nimport { Modal } from 'components/modal/Modal';\nimport { Token } from 'services/observables/tokens';\nimport { Button, ButtonSize } from 'components/button/Button';\n\ninterface Props {\n isOpen: boolean;\n setIsOpen: Function;\n setApproval: Function;\n token: Token;\n amount: string;\n isLoading: boolean;\n onClose?: Function;\n}\n\nexport const ModalApproveNew = ({\n isOpen,\n setIsOpen,\n setApproval,\n token,\n amount,\n isLoading,\n onClose,\n}: Props) => {\n return (\n {\n if (onClose) onClose();\n setIsOpen(false);\n }}\n title={'Set Allowance'}\n setIsOpen={setIsOpen}\n isOpen={isOpen}\n >\n
\n
\n
\n \n
\n

Approve {token.symbol}

\n

\n Before you can proceed, you need to approve {token.symbol} spending.\n

\n setApproval()}\n size={ButtonSize.Full}\n className=\"my-15\"\n disabled={isLoading}\n >\n {isLoading ? 'waiting for confirmation' : 'Approve'}\n \n

\n Want to approve before each transaction?\n

\n setApproval(amount)}\n className=\"underline\"\n disabled={isLoading}\n >\n Approve limited permission\n \n
\n
\n \n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { useCallback, useRef, useState } from 'react';\nimport {\n ApprovalContract,\n getNetworkContractApproval,\n setNetworkContractApproval,\n} from 'services/web3/approval';\nimport { ModalApproveNew } from 'elements/modalApprove/modalApproveNew';\nimport {\n addNotification,\n NotificationType,\n} from 'store/notification/notification';\nimport { useDispatch } from 'react-redux';\nimport { ErrorCode } from 'services/web3/types';\nimport { wait } from 'utils/pureFunctions';\nimport { web3 } from 'services/web3';\nimport { ConversionEvents } from 'services/api/googleTagManager';\n\ninterface Tokens {\n token: Token;\n amount: string;\n}\n\nexport const useApproveModal = (\n tokens: Tokens[] = [],\n onComplete: Function,\n contract: ApprovalContract | string = ApprovalContract.BancorNetwork,\n gtmPopupEvent?: (event: ConversionEvents) => void,\n gtmSelectEvent?: (isUnlimited: boolean) => void,\n onClose?: Function\n) => {\n const [isOpen, setIsOpen] = useState(false);\n const [tokenIndex, setTokenIndex] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const ref = useRef([]);\n\n const awaitConfirmation = useCallback(async () => {\n const receipts = [];\n for (const txHash of ref.current) {\n try {\n const receipt = await web3.provider.getTransactionReceipt(txHash);\n receipts.push(receipt);\n } catch (e: any) {\n console.error('failed to getTransactionReceipt for approve token tx');\n return;\n }\n }\n\n const successCount = receipts.filter((r) => r && r.status).length;\n if (successCount === ref.current.length) {\n ref.current = [];\n onComplete();\n } else {\n await wait(3000);\n await awaitConfirmation();\n }\n }, [onComplete]);\n\n const dispatch = useDispatch();\n\n const onStart = async () => {\n if (tokens.length === 0) {\n onComplete();\n return;\n }\n await checkApprovalRequired();\n };\n\n if (tokens.length === 0) return [onStart, <>] as [Function, JSX.Element];\n\n const checkNextToken = async (index = tokenIndex): Promise => {\n const nextIndex = index + 1;\n const count = tokens.length;\n if (count === nextIndex) {\n return awaitConfirmation();\n }\n await wait(500);\n setTokenIndex(nextIndex);\n return checkApprovalRequired(nextIndex);\n };\n\n const checkApprovalRequired = async (tokenIndex: number = 0) => {\n const { token, amount } = tokens[tokenIndex];\n const isApprovalRequired = await getNetworkContractApproval(\n token,\n contract,\n amount\n );\n\n if (!isApprovalRequired) {\n return checkNextToken(tokenIndex);\n }\n\n gtmPopupEvent && gtmPopupEvent(ConversionEvents.approvePop);\n\n setIsOpen(true);\n };\n\n const setApproval = async (amount?: string) => {\n if (gtmSelectEvent) {\n const isUnlimited = amount === undefined;\n gtmSelectEvent(isUnlimited);\n }\n const { token } = tokens[tokenIndex];\n try {\n setIsLoading(true);\n const txHash = await setNetworkContractApproval(\n token,\n contract,\n amount,\n true\n );\n\n ref.current = [...ref.current, txHash];\n dispatch(\n addNotification({\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Approve ${tokens[tokenIndex].token.symbol} is pending confirmation`,\n updatedInfo: {\n successTitle: 'Transaction Confirmed',\n successMsg: `${amount || 'Unlimited'} approval set for ${\n tokens[tokenIndex].token.symbol\n }`,\n errorTitle: 'Transaction Failed',\n errorMsg: `${tokens[tokenIndex].token.symbol} approval had failed. Please try again or contact support.`,\n },\n txHash,\n })\n );\n setIsOpen(false);\n setIsLoading(false);\n\n await checkNextToken();\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) {\n dispatch(\n addNotification({\n type: NotificationType.error,\n title: 'Transaction Rejected',\n msg: 'You rejected the transaction. If this was by mistake, please try again.',\n })\n );\n } else {\n dispatch(\n addNotification({\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `${tokens[tokenIndex].token.symbol} approval had failed. Please try again or contact support.`,\n })\n );\n }\n\n setIsOpen(false);\n setIsLoading(false);\n }\n };\n\n const ModalApprove = ModalApproveNew({\n isOpen,\n setIsOpen,\n amount: tokens[tokenIndex].amount,\n setApproval,\n token: tokens[tokenIndex].token,\n isLoading,\n onClose,\n });\n\n return [onStart, ModalApprove] as [Function, JSX.Element];\n};\n","import {\n addNotification,\n BaseNotification,\n NotificationType,\n} from 'store/notification/notification';\nimport { Token } from 'services/observables/tokens';\nimport { prettifyNumber } from 'utils/helperFunctions';\n\nconst showNotification = (notification: BaseNotification, dispatch: any) =>\n dispatch(addNotification(notification));\n\nexport const rejectNotification = (dispatch: any) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Transaction Rejected',\n msg: 'You rejected the trade. If this was by mistake, please try again.',\n },\n dispatch\n );\n\nexport const stakeNotification = (\n dispatch: any,\n amount: string,\n txHash: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Staking vBNT is pending confirmation',\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Your stake of ${amount} vBNT has been confirmed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Staking ${amount} vBNT had failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const unstakeNotification = (\n dispatch: any,\n amount: string,\n txHash: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Unstaking vBNT is pending confirmation',\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Unstaking ${amount} vBNT has been confirmed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Unstaking ${amount} vBNT had failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const stakeFailedNotification = (dispatch: any, amount: string) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Staking ${amount} vBNT had failed. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const unstakeFailedNotification = (dispatch: any, amount: string) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Staking ${amount} vBNT had failed. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const swapNotification = (\n dispatch: any,\n fromToken: Token,\n toToken: Token,\n fromAmount: string,\n toAmount: string,\n txHash: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Trading ${fromAmount} ${fromToken.symbol} is Pending Confirmation`,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Your trade ${fromAmount} ${fromToken.symbol} for ${toAmount} ${toToken.symbol} has been confirmed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Trading ${fromAmount} ${fromToken.symbol} for ${toAmount} ${toToken.symbol} had failed. Please try again or contact support`,\n },\n txHash,\n },\n dispatch\n );\n\nexport const swapFailedNotification = (\n dispatch: any,\n fromToken: Token,\n toToken: Token,\n fromAmount: string,\n toAmount: string\n) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Trading ${fromAmount} ${fromToken.symbol} for ${toAmount} ${toToken.symbol} had failed. Please try again or contact support`,\n },\n dispatch\n );\n\nexport const poolExistNotification = (dispatch: any) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Pool Already exist',\n msg: `The pool already exists on Bancor`,\n },\n dispatch\n );\n\nexport const poolCreateNotification = (dispatch: any, txHash: string) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Creating pool is pending confirmation',\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: 'Your pool was successfully created',\n errorTitle: 'Creating Pool Failed',\n errorMsg: 'Fail creating pool. Please try again or contact support.',\n },\n },\n dispatch\n );\n\nexport const ownershipNotification = (dispatch: any, txHash: string) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Accepting ownership is pending confirmation',\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: 'Ownership Accepted',\n errorTitle: 'Ownership Failed',\n errorMsg:\n 'Failed accepting ownership. Please try again or contact support.',\n },\n },\n dispatch\n );\n\nexport const setFeeNotification = (dispatch: any, txHash: string) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Setting convertion fee is pending confirmation',\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: 'Conversion fee has been set',\n errorTitle: 'Conversion fee failed',\n errorMsg:\n 'conversion fee setting failed. Please try again or contact support.',\n },\n },\n dispatch\n );\n\nexport const poolFailedNotification = (dispatch: any) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Creating Pool Failed',\n msg: `Fail creating pool. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const stakeRewardsNotification = (\n dispatch: any,\n txHash: string,\n amount: string,\n pool: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Staking ${amount} BNT rewards is Pending Confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `${amount} BNT rewards were successfully staked into the ${pool} pool`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Staking ${amount} BNT rewards had failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const claimRewardsNotification = (\n dispatch: any,\n txHash: string,\n amount: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Rewards claiming of ${amount} is Pending Confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `${amount} BNT rewards were successfully claimed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Claiming ${amount} BNT rewards had failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const stakeRewardsFailedNotification = (dispatch: any) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Staking Rewards',\n msg: `Failed to stake rewards. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const claimRewardsFailedNotification = (dispatch: any) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Claiming Rewards',\n msg: `Failed to claim rewards. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const withdrawProtectedPosition = (\n dispatch: any,\n token: Token,\n amount: string,\n txHash: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Withdrawal of ${amount} ${token.symbol} is Pending Confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Your withdraw of ${amount} ${token.symbol} has been confirmed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Withdrawing ${amount} ${token.symbol} had failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const withdrawProtectedPositionFailed = (\n dispatch: any,\n token: Token,\n amount: string\n) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Withdrawing ${amount} ${token.symbol} had failed. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const removeLiquidityNotification = (\n dispatch: any,\n amount: string,\n symbol: string,\n txHash: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Removing ${amount} ${symbol} is Pending Confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Your withdraw of ${amount} ${symbol} has been confirmed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Removing ${amount} ${symbol} had failed. Please try again or contact support`,\n },\n },\n dispatch\n );\n\nexport const removeLiquidityNotificationFailed = (\n dispatch: any,\n amount: string,\n symbol: string\n) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Removing ${amount} ${symbol} had failed. Please try again or contact support`,\n },\n dispatch\n );\n\nexport const claimBntNotification = (\n dispatch: any,\n txHash: string,\n amount: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Claiming locked ${amount} BNT is Pending Confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `${amount} locked BNT were successfully claimed`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Claiming locked ${amount} BNT had failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const addLiquiditySingleNotification = (\n dispatch: any,\n txHash: string,\n amount: string,\n symbol: string,\n pool: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Add Protection',\n msg: `Staking ${amount} ${symbol} for Protection is Pending Confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `You Staked ${amount} ${symbol} for Protection in Pool ${pool}`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Staking ${amount} ${symbol} for Protection in Pool ${pool} failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const addLiquiditySingleFailedNotification = (\n dispatch: any,\n amount: string,\n symbol: string,\n pool: string\n) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Staking ${amount} ${symbol} for protection in pool ${pool} failed. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const addLiquidityNotification = (\n dispatch: any,\n txHash: string,\n amountTkn: string,\n tkn: string,\n amountBnt: string,\n bnt: string,\n pool: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Add Liquidity',\n msg: `Adding ${amountTkn} ${tkn} and ${amountBnt} ${bnt} to pool ${pool} is Pending Confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `You Added ${amountTkn} ${tkn} and ${amountBnt} ${bnt} to pool ${pool}`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Adding ${amountTkn} ${tkn} and ${amountBnt} ${bnt} to pool ${pool} failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const addLiquidityFailedNotification = (\n dispatch: any,\n amountTkn: string,\n tkn: string,\n amountBnt: string,\n bnt: string,\n pool: string\n) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Transaction Failed',\n msg: `Adding ${amountTkn} ${tkn} and ${amountBnt} ${bnt} to pool ${pool} failed. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const withdrawCancelNotification = (\n dispatch: any,\n txHash: string,\n amount: string,\n symbol: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Cancel Withdraw',\n msg: `Cancellation for ${prettifyNumber(\n amount\n )} ${symbol} is Pending Confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `You cancelled your withdraw request for ${prettifyNumber(\n amount\n )} ${symbol}`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Cancellation request for ${prettifyNumber(\n amount\n )} ${symbol} failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const initWithdrawNotification = (\n dispatch: any,\n txHash: string,\n amount: string,\n symbol: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Cooldown is pending confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `${prettifyNumber(\n amount\n )} ${symbol} successfully began cooldown process.`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Initiating cooldown for ${prettifyNumber(\n amount\n )} ${symbol} failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const confirmWithdrawNotification = (\n dispatch: any,\n txHash: string,\n amount: string,\n symbol: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Withdrawal is pending confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `${prettifyNumber(\n amount\n )} ${symbol} successfully withdrawn from pool.`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Withdrawal for ${prettifyNumber(\n amount\n )} ${symbol} failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const migrateNotification = (dispatch: any, txHash: string) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Migrating your positions is pending confirmation',\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Successfully migrated your positions to V3`,\n errorTitle: 'Migration Failed',\n errorMsg: `Migrating positions failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const migrateFailedNotification = (dispatch: any) =>\n showNotification(\n {\n type: NotificationType.error,\n title: 'Migration Failed',\n msg: `Migrating positions failed. Please try again or contact support.`,\n },\n dispatch\n );\n\nexport const confirmJoinNotification = (\n dispatch: any,\n txHash: string,\n amount: string,\n symbol: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Stake in bonus program is pending confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `${prettifyNumber(\n amount\n )} ${symbol} successfully staked in bonus program.`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Stake ${prettifyNumber(\n amount\n )} ${symbol} in bonus program failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const confirmLeaveNotification = (\n dispatch: any,\n txHash: string,\n amount: string,\n symbol: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Unstake from bonus program is pending confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `${prettifyNumber(\n amount\n )} ${symbol} successfully unstaked from bonus program.`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Unstake ${prettifyNumber(\n amount\n )} ${symbol} from bonus program failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const confirmClaimNotification = (dispatch: any, txHash: string) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `Claim bonuses is pending confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success!',\n successMsg: `Successfully claimed from bonus program.`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Claim from bonus program failed. Please try again or contact support.`,\n },\n },\n dispatch\n );\n\nexport const confirmDepositNotification = (\n dispatch: any,\n txHash: string,\n amount: string,\n symbol: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: 'Deposit is pending confirmation',\n txHash,\n updatedInfo: {\n successTitle: 'Success',\n successMsg: `Your deposit of ${prettifyNumber(\n amount\n )} ${symbol} has been successfully completed.`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Your deposit of ${prettifyNumber(\n amount\n )} ${symbol} had failed.`,\n },\n },\n dispatch\n );\n\nexport const rewardsStakedToV3Notification = (\n dispatch: any,\n txHash: string,\n amount: string\n) =>\n showNotification(\n {\n type: NotificationType.success,\n title: 'Success!',\n msg: `${amount} BNT rewards were successfully staked to V3.`,\n txHash,\n },\n dispatch\n );\n\nexport const rewardsClaimedNotification = (\n dispatch: any,\n txHash: string,\n amount: string\n) =>\n showNotification(\n {\n type: NotificationType.success,\n title: 'Success!',\n msg: `${amount} BNT rewards were successfully claimed to your wallet.`,\n txHash,\n },\n dispatch\n );\n\nexport const confirmMigrateExtHoldingNotification = (\n dispatch: any,\n txHash: string,\n name: string\n) =>\n showNotification(\n {\n type: NotificationType.pending,\n title: 'Pending Confirmation',\n msg: `${name} migration is pending confirmation`,\n txHash,\n updatedInfo: {\n successTitle: 'Success',\n successMsg: `Your ${name} migration has been successfully completed.`,\n errorTitle: 'Transaction Failed',\n errorMsg: `Your ${name} migration has failed.`,\n },\n },\n dispatch\n );\n\nexport const failedNotification = (\n dispatch: any,\n title = 'Unknown Error',\n msg = `Something went wrong. Please try again or contact support.`\n) =>\n showNotification(\n {\n type: NotificationType.error,\n title,\n msg,\n },\n dispatch\n );\n","import { prettifyNumber, toBigNumber } from 'utils/helperFunctions';\nimport { UseTradeWidgetReturn } from 'elements/trade/useTradeWidget';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\nimport { useMemo } from 'react';\n\nexport const TradeWidgetDetails = ({\n fromInput,\n toInput,\n isLoading,\n priceImpact,\n isV3,\n}: UseTradeWidgetReturn) => {\n const loading = useMemo(\n () => isLoading || fromInput?.isTyping || toInput?.isTyping,\n [fromInput?.isTyping, isLoading, toInput?.isTyping]\n );\n\n return (\n <>\n {fromInput && toInput && fromInput.inputTkn !== '' && (\n
\n
\n
\n Best Rate\n (\n
\n {isV3 ? 'V3' : 'V2'}\n
\n )}\n />\n
\n {loading ? (\n
\n ) : (\n
\n 1 {fromInput?.token.symbol} ={' '}\n {prettifyNumber(\n toBigNumber(toInput.inputTkn ?? 0).div(\n fromInput.inputTkn ?? 0\n )\n )}{' '}\n {toInput?.token.symbol}\n
\n )}\n
\n
\n
Price Impact
\n {loading ? (\n
\n ) : (\n \n {prettifyNumber(priceImpact)} %\n
\n )}\n
\n
\n )}\n \n );\n};\n","import { toBigNumber } from 'utils/helperFunctions';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { useTokenInputV3Return } from 'elements/trade/useTknFiatInput';\nimport { ethToken, wethToken } from 'services/web3/config';\nimport BigNumber from 'bignumber.js';\nimport { useAppSelector } from 'store/index';\nimport { useMemo } from 'react';\n\ninterface Props {\n handleCTAClick: () => void;\n fromInput?: useTokenInputV3Return;\n toInput?: useTokenInputV3Return;\n isBusy: boolean;\n errorInsufficientBalance?: string;\n priceImpact: string;\n isLoading: boolean;\n}\n\nexport const TradeWidgetCTA = ({\n handleCTAClick,\n toInput,\n fromInput,\n isBusy,\n errorInsufficientBalance,\n priceImpact,\n isLoading,\n}: Props) => {\n const account = useAppSelector((state) => state.user.account);\n\n const usingWeth =\n (toInput?.token.address === wethToken &&\n fromInput?.token.address !== ethToken) ||\n (fromInput?.token.address === wethToken &&\n toInput?.token.address !== ethToken);\n\n const swapButtonText = () => {\n if (!toInput || !fromInput) return 'Select a token';\n if (usingWeth) return 'Please change WETH to ETH';\n if (fromInput.token.balance) {\n const isInsufficientBalance = new BigNumber(fromInput.token.balance).lt(\n fromInput.inputTkn\n );\n if (isInsufficientBalance) return 'Insufficient balance';\n }\n const isInputZero =\n fromInput.inputTkn === '' || new BigNumber(fromInput.inputTkn).eq(0);\n if (isInputZero) return 'Enter Amount';\n if (!toInput?.inputTkn) return 'Insufficient liquidity';\n if (!account) return 'Connect your wallet';\n const isHighSlippage = new BigNumber(priceImpact).gte(5);\n if (isHighSlippage) return 'Trade with high price impact';\n return 'Trade';\n };\n\n const buttonVariant = () => {\n const isHighSlippage = new BigNumber(priceImpact).gte(10);\n if (isHighSlippage || !account) return ButtonVariant.Secondary;\n return ButtonVariant.Primary;\n };\n\n const isSwapDisabled = useMemo(() => {\n return (\n !fromInput ||\n !toInput ||\n !toInput?.inputTkn ||\n usingWeth ||\n !toBigNumber(fromInput?.inputTkn ?? 0).gt(0) ||\n isBusy ||\n !!errorInsufficientBalance ||\n isLoading ||\n fromInput?.isTyping\n );\n }, [\n errorInsufficientBalance,\n fromInput,\n isBusy,\n isLoading,\n toInput,\n usingWeth,\n ]);\n\n return (\n \n {isLoading || fromInput?.isTyping ? (\n
please wait
\n ) : (\n swapButtonText()\n )}\n \n );\n};\n","import { ReactComponent as IconSync } from 'assets/icons/sync.svg';\n\ninterface Props {\n handleSelectSwitch: () => void;\n}\n\nexport const TradeWidgetSwitchBtn = ({ handleSelectSwitch }: Props) => {\n return (\n \n \n \n );\n};\n","import { TradeWidgetInput } from 'elements/trade/TradeWidgetInput';\nimport { useTradeWidget } from 'elements/trade/useTradeWidget';\nimport { Token } from 'services/observables/tokens';\nimport { useTrade } from 'elements/trade/useTrade';\nimport { TradeWidgetDetails } from 'elements/trade/TradeWidgetDetails';\nimport { TradeWidgetCTA } from 'elements/trade/TradeWidgetCTA';\nimport { TradeWidgetSwitchBtn } from 'elements/trade/TradeWidgetSwitchBtn';\nimport { wethToken } from 'services/web3/config';\n\ninterface Props {\n from?: string;\n to?: string;\n tokens: Token[];\n}\n\nexport const TradeWidget = (props: Props) => {\n const tradeWidget = useTradeWidget(props);\n const trade = useTrade(tradeWidget);\n\n return (\n
\n
\n \n
\n\n
\n \n\n \n\n \n\n \n
\n {trade.ApproveModal}\n
\n );\n};\n","import { useAppSelector } from 'store/index';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useNavigation } from 'hooks/useNavigation';\nimport { executeSwapTx } from 'services/web3/swap/market';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { toBigNumber } from 'utils/helperFunctions';\nimport { Token, updateUserBalances } from 'services/observables/tokens';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { UseTradeWidgetReturn } from 'elements/trade/useTradeWidget';\nimport { swapNotification } from 'services/notifications/notifications';\nimport { useDispatch } from 'react-redux';\nimport { openWalletModal } from 'store/user/user';\nimport { ApprovalContract } from 'services/web3/approval';\nimport { ethToken, wethToken } from 'services/web3/config';\nimport { withdrawWeth } from 'services/web3/swap/limit';\nimport { addNotification } from 'store/notification/notification';\n\nexport interface UseTradeReturn {\n ApproveModal: JSX.Element;\n isBusy: boolean;\n handleSelectSwitch: () => void;\n errorInsufficientBalance: string | undefined;\n handleSelectTo: (token: Token) => void;\n handleSelectFrom: (token: Token) => void;\n handleCTAClick: () => void;\n}\n\nexport const useTrade = ({\n fromInput,\n toInput,\n isV3,\n}: UseTradeWidgetReturn): UseTradeReturn => {\n const dispatch = useDispatch();\n const slippageTolerance = useAppSelector(\n (state) => state.user.slippageTolerance\n );\n const account = useAppSelector((state) => state.user.account);\n\n const [isBusy, setIsBusy] = useState(false);\n\n const { goToPage } = useNavigation();\n\n const handleTrade = async () => {\n if (!fromInput || !toInput || !account) {\n return;\n }\n\n if (fromInput.token.address === wethToken) {\n dispatch(addNotification(await withdrawWeth(fromInput.inputTkn)));\n setIsBusy(false);\n return;\n }\n\n try {\n const tx = await executeSwapTx(\n isV3,\n account,\n slippageTolerance,\n fromInput.token,\n toInput.token,\n fromInput.inputTkn,\n toInput.inputTkn\n );\n swapNotification(\n dispatch,\n fromInput.token,\n toInput.token,\n fromInput.inputTkn,\n toInput.inputTkn,\n tx.hash\n );\n setIsBusy(false);\n fromInput.setInputTkn('');\n fromInput.setInputFiat('');\n toInput.setInputTkn('');\n toInput.setInputFiat('');\n await tx.wait();\n await updateUserBalances();\n } catch (e) {\n console.error(e);\n setIsBusy(false);\n }\n };\n\n const handleCTAClick = () => {\n if (!account) {\n dispatch(openWalletModal(true));\n return;\n }\n setIsBusy(true);\n onStart();\n };\n\n const [onStart, ApproveModal] = useApproveModal(\n fromInput ? [{ token: fromInput.token, amount: fromInput.inputTkn }] : [],\n handleTrade,\n isV3\n ? ContractsApi.BancorNetwork.contractAddress\n : ApprovalContract.BancorNetwork,\n undefined,\n undefined,\n () => {\n setIsBusy(false);\n if (fromInput && toInput) {\n fromInput.setInputTkn('');\n fromInput.setInputFiat('');\n toInput.setInputTkn('');\n toInput.setInputFiat('');\n }\n }\n );\n\n const handleSelectFrom = useCallback(\n (token: Token) => {\n goToPage.trade(\n {\n from: token.address,\n to: token.address === wethToken ? ethToken : toInput?.token.address,\n },\n true\n );\n },\n [goToPage, toInput?.token.address]\n );\n\n const handleSelectTo = useCallback(\n (token: Token) => {\n goToPage.trade(\n {\n from: fromInput?.token.address,\n to: token.address,\n },\n true\n );\n },\n [fromInput?.token.address, goToPage]\n );\n\n const handleSelectSwitch = useCallback(() => {\n goToPage.trade(\n {\n from: toInput?.token.address,\n to:\n fromInput?.token.address === wethToken || !toInput?.token.address\n ? undefined\n : fromInput?.token.address,\n },\n true\n );\n }, [fromInput?.token.address, goToPage, toInput?.token.address]);\n\n const errorInsufficientBalance = useMemo(\n () =>\n toBigNumber(fromInput?.inputTkn || 0).gt(fromInput?.token.balance || 0) &&\n account\n ? 'Token balance insufficient'\n : undefined,\n [account, fromInput?.inputTkn, fromInput?.token.balance]\n );\n\n return {\n handleCTAClick,\n ApproveModal,\n isBusy,\n handleSelectFrom,\n handleSelectTo,\n handleSelectSwitch,\n errorInsufficientBalance,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { SwapHeader } from 'elements/swapHeader/SwapHeader';\nimport { SwapLimit } from 'elements/swapLimit/SwapLimit';\nimport { Token } from 'services/observables/tokens';\nimport { useAppSelector } from 'store';\nimport { ethToken } from 'services/web3/config';\nimport { Insight } from 'elements/swapInsights/Insight';\nimport { IntoTheBlock, intoTheBlockByToken } from 'services/api/intoTheBlock';\nimport { useAsyncEffect } from 'use-async-effect';\nimport { useNavigation } from 'hooks/useNavigation';\nimport { TradeWidget } from 'elements/trade/TradeWidget';\n\ninterface SwapWidgetProps {\n isLimit: boolean;\n setIsLimit: Function;\n from: string | null;\n to: string | null;\n limit: string | null;\n refreshLimit: Function;\n}\n\nexport const SwapWidget = ({\n isLimit,\n setIsLimit,\n from,\n to,\n limit,\n refreshLimit,\n}: SwapWidgetProps) => {\n const tokens = useAppSelector((state) => state.bancor.tokens);\n\n const ethOrFirst = useCallback(() => {\n const eth = tokens.find((x) => x.address === ethToken);\n return eth ? eth : tokens[0];\n }, [tokens]);\n\n const [fromToken, setFromToken] = useState(ethOrFirst());\n const [toToken, setToToken] = useState();\n\n const [fromTokenITB, setFromTokenITB] = useState();\n const [toTokenITB, setToTokenITB] = useState();\n\n useEffect(() => {\n if (tokens) {\n if (from) {\n const fromToken = tokens.find((x) => x.address === from);\n if (fromToken) setFromToken(fromToken);\n else setFromToken(ethOrFirst());\n } else setFromToken(ethOrFirst());\n\n if (to) {\n const toToken = tokens.find((x) => x.address === to);\n if (toToken) setToToken(toToken);\n else setToToken(undefined);\n } else setToToken(undefined);\n\n setIsLimit(limit);\n }\n }, [from, to, limit, tokens, setIsLimit, ethOrFirst]);\n\n useAsyncEffect(\n async (isMounted) => {\n if (fromToken) {\n const data = await intoTheBlockByToken(fromToken.symbol);\n if (isMounted()) {\n setFromTokenITB(data);\n }\n }\n },\n [fromToken]\n );\n\n useAsyncEffect(\n async (isMounted) => {\n if (toToken) {\n const data = await intoTheBlockByToken(toToken.symbol);\n if (isMounted()) {\n setToTokenITB(data);\n }\n }\n },\n [toToken]\n );\n\n const { goToPage } = useNavigation();\n\n return (\n
\n
\n
\n
\n \n goToPage.trade({\n from: fromToken?.address,\n to: toToken?.address,\n limit,\n })\n }\n />\n
\n {isLimit ? (\n \n goToPage.trade({\n from: from.address,\n to: toToken?.address,\n limit: true,\n })\n }\n toToken={toToken}\n setToToken={(to: Token) =>\n goToPage.trade({\n from: fromToken?.address,\n to: to.address,\n limit: true,\n })\n }\n switchTokens={() =>\n goToPage.trade({\n from: toToken?.address,\n to: fromToken?.address,\n limit: true,\n })\n }\n refreshLimit={refreshLimit}\n />\n ) : (\n \n )}\n
\n {isLimit ? (\n
\n Limit orders are powered by Rook\n
\n ) : (\n ''\n )}\n
\n \n
\n
\n );\n};\n","import { UsePaginationInstanceProps } from 'react-table';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\n\ninterface TablePaginationProps\n extends Omit, 'page'> {\n pageIndex: number;\n pageSize: number;\n}\n\nexport const TablePagination = ({\n gotoPage,\n previousPage,\n canPreviousPage,\n nextPage,\n canNextPage,\n pageCount,\n pageOptions,\n setPageSize,\n pageIndex,\n pageSize,\n}: TablePaginationProps) => {\n const showResults = [10, 20, 30, 40, 50];\n return (\n
\n
\n Show\n
\n {\n setPageSize(Number(e.target.value));\n }}\n >\n {showResults.map((pageSize) => (\n \n ))}\n \n
\n Results\n
\n
\n \n previousPage()}\n disabled={!canPreviousPage}\n className=\"px-5 py-10\"\n >\n \n \n
\n {\n const page = e.target.value ? Number(e.target.value) - 1 : 0;\n gotoPage(page);\n }}\n style={{ width: '20px' }}\n />\n / {pageOptions.length}\n
\n nextPage()}\n disabled={!canNextPage}\n className=\"px-5 py-10\"\n >\n \n \n \n
\n
\n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 16 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.36531 0.792893C7.97479 0.402369 7.34162 0.402369 6.9511 0.792893L0.587135 7.15685C0.196611 7.54738 0.196611 8.18054 0.587135 8.57107C0.97766 8.96159 1.61082 8.96159 2.00135 8.57107L7.6582 2.91421L13.3151 8.57107C13.7056 8.96159 14.3387 8.96159 14.7293 8.57107C15.1198 8.18054 15.1198 7.54738 14.7293 7.15685L8.36531 0.792893ZM6.6582 30.5C6.6582 31.0523 7.10592 31.5 7.6582 31.5C8.21049 31.5 8.6582 31.0523 8.6582 30.5H6.6582ZM6.6582 1.5V30.5H8.6582V1.5H6.6582Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrow);\nexport default __webpack_public_path__ + \"static/media/arrow.850bae9c.svg\";\nexport { ForwardRef as ReactComponent };","import { HeaderGroup } from 'react-table';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\nimport { ReactComponent as IconInfo } from 'assets/icons/info.svg';\nimport { TableColumn } from 'components/table/DataTable';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\ninterface TableHeaderProps {\n headerGroups: HeaderGroup[];\n columns: TableColumn[];\n}\n\nexport const TableHeader = ({\n headerGroups,\n columns,\n}: TableHeaderProps) => {\n const getColumn: (hg: HeaderGroup) => TableColumn = (() => {\n const idToColumn = columns.reduce(\n (map: Record>, col) => {\n map[col.id as string] = col;\n return map;\n },\n {}\n );\n return (hg: HeaderGroup) =>\n idToColumn[(hg.getHeaderProps().key as string).replace('header_', '')];\n })();\n\n const getStyleAttr = (column: HeaderGroup) => {\n const style = column.getHeaderProps(column.getSortByToggleProps()).style;\n const { width, minWidth, maxWidth } = getColumn(column);\n return { width, maxWidth, minWidth, ...style };\n };\n\n const getTooltip = (column: HeaderGroup) => {\n const tooltip = getColumn(column).tooltip;\n if (tooltip)\n return (\n \n (\n \n )}\n >\n {tooltip}\n \n \n );\n };\n\n const getSortBy = (isSorted: boolean, isSortedDesc?: boolean) => {\n return (\n \n {isSorted && (\n \n )}\n \n );\n };\n\n return (\n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n \n \n {column.render('Header')}\n {getTooltip(column)}\n {getSortBy(column.isSorted, column.isSortedDesc)}\n
\n \n ))}\n \n ))}\n \n );\n};\n","import { UsePaginationInstanceProps, UseTableInstanceProps } from 'react-table';\n\ninterface TableBodyProps {\n getTableBodyProps: UseTableInstanceProps['getTableBodyProps'];\n prepareRow: UseTableInstanceProps['prepareRow'];\n page: UsePaginationInstanceProps['page'];\n}\n\nexport const TableBody = ({\n getTableBodyProps,\n prepareRow,\n page,\n}: TableBodyProps) => {\n return (\n \n {page.map((row) => {\n prepareRow(row);\n return (\n \n {row.cells.map((cell) => {\n return (\n \n {cell.render('Cell')}\n \n );\n })}\n \n );\n })}\n \n );\n};\n","import {\n Column,\n SortingRule,\n useExpanded,\n usePagination,\n useSortBy,\n useTable,\n} from 'react-table';\nimport { TablePagination } from 'components/table/TablePagination';\nimport { TableHeader } from 'components/table/TableHeader';\nimport { TableBody } from 'components/table/TableBody';\nimport { classNameGenerator } from 'utils/pureFunctions';\nimport { useEffect } from 'react';\n\nexport type TableColumn = Column & {\n tooltip?: string;\n headerClassName?: string;\n};\n\ninterface TableProps {\n columns: TableColumn[];\n data: D[];\n defaultSort?: SortingRule;\n isLoading?: boolean;\n stickyColumn?: boolean;\n search?: string;\n noPagination?: boolean;\n}\n\nexport const DataTable = ({\n columns,\n data,\n defaultSort,\n isLoading,\n stickyColumn,\n search,\n noPagination = data.length <= 6,\n}: TableProps) => {\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n prepareRow,\n page,\n canPreviousPage,\n canNextPage,\n pageOptions,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize },\n } = useTable(\n {\n columns,\n data,\n initialState: {\n pageIndex: 0,\n sortBy: defaultSort ? [defaultSort] : [],\n },\n autoResetSortBy: false,\n disableSortRemove: true,\n autoResetPage: false,\n autoResetExpanded: false,\n },\n useSortBy,\n useExpanded,\n usePagination\n );\n\n useEffect(() => {\n gotoPage(0);\n }, [gotoPage, search]);\n\n return (\n <>\n \n \n headerGroups={headerGroups} columns={columns} />\n {!isLoading && (\n \n getTableBodyProps={getTableBodyProps}\n prepareRow={prepareRow}\n page={page}\n />\n )}\n
\n
\n\n {!isLoading && data.length === 0 && (\n
No record found
\n )}\n\n {isLoading && (\n
\n {[...Array(3)].map((_, index) => (\n
\n ))}\n
\n )}\n {!noPagination && (\n \n )}\n \n );\n};\n","import { useLocation } from 'react-router-dom';\n\nexport const useQuery = () => {\n return new URLSearchParams(useLocation().search);\n};\n","import { SwapWidget } from 'elements/swapWidget/SwapWidget';\nimport { useState } from 'react';\nimport { useSwapLimitTable } from 'elements/swapLimit/SwapLimitTable';\nimport { useQuery } from 'hooks/useQuery';\n\nexport const Swap = () => {\n const [isLimit, setIsLimit] = useState(false);\n const [SwapLimitTable, refreshLimit] = useSwapLimitTable();\n const query = useQuery();\n\n return (\n
\n \n {isLimit && SwapLimitTable ? SwapLimitTable : ''}\n
\n );\n};\n","import { ReactComponent as IconTimes } from 'assets/icons/times.svg';\nimport { withdrawWeth } from 'services/web3/swap/limit';\nimport { useInterval } from 'hooks/useInterval';\nimport { cancelOrders, getOrders, LimitOrder } from 'services/api/keeperDao';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Token } from 'services/observables/tokens';\nimport { useDispatch } from 'react-redux';\nimport { addNotification } from 'store/notification/notification';\nimport { useAppSelector } from 'store';\nimport { wethToken } from 'services/web3/config';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { SearchInput } from 'components/searchInput/SearchInput';\nimport { DataTable, TableColumn } from 'components/table/DataTable';\nimport { SortingRule } from 'react-table';\nimport dayjs from 'dayjs';\nimport { Image } from 'components/image/Image';\n\nexport const useSwapLimitTable = (): [JSX.Element | null, Function] => {\n const account = useAppSelector((state) => state.user.account);\n const [orders, setOrders] = useState([]);\n const [weth, setWeth] = useState();\n const [search, setSearch] = useState('');\n const dispatch = useDispatch();\n const tokens = useAppSelector((state) => state.bancor.tokens);\n\n const refreshOrders = useCallback(async () => {\n if (account) setOrders(await getOrders(account));\n }, [account]);\n\n useEffect(() => {\n const weth = tokens.find((x) => x.address === wethToken);\n if (weth) setWeth(weth);\n }, [tokens]);\n\n useInterval(() => {\n refreshOrders();\n }, 60000);\n\n useEffect(() => {\n refreshOrders();\n }, [refreshOrders]);\n\n const defaultSort: SortingRule = { id: 'expiration', desc: true };\n\n const data = useMemo(() => {\n return orders.filter(\n (t) =>\n t.getToken.symbol.toLowerCase().includes(search.toLowerCase()) ||\n t.payToken.symbol.toLowerCase().includes(search.toLowerCase())\n );\n }, [orders, search]);\n\n const handleWithdrawWeth = useCallback(async () => {\n weth &&\n weth.balance &&\n dispatch(addNotification(await withdrawWeth(weth.balance)));\n }, [dispatch, weth]);\n\n const handleCancelOrders = useCallback(async () => {\n dispatch(\n addNotification(await cancelOrders(orders.map((x) => x.orderRes)))\n );\n }, [dispatch, orders]);\n\n const columns = useMemo[]>(\n () => [\n {\n id: 'expiration',\n Header: 'Expiration',\n accessor: 'expiration',\n Cell: (expiration) => (\n <>\n \n {dayjs.unix(expiration.value).format('DD/MM/YYYY')}\n \n {dayjs.unix(expiration.value).format('h:mm:ss A')}\n \n ),\n minWidth: 240,\n sortDescFirst: true,\n },\n {\n id: 'payAmount',\n Header: 'You pay',\n accessor: 'payAmount',\n Cell: (payAmount) => {\n const payToken = payAmount.row.original.payToken;\n return (\n
\n \n {`${payToken.symbol} ${payAmount.value}`}\n
\n );\n },\n minWidth: 200,\n sortDescFirst: true,\n },\n {\n id: 'getAmount',\n Header: 'You get',\n accessor: 'getAmount',\n Cell: (getAmount) => {\n const getToken = getAmount.row.original.getToken;\n return (\n
\n \n {`${getToken.symbol} ${getAmount.value}`}\n
\n );\n },\n minWidth: 200,\n sortDescFirst: true,\n },\n {\n id: 'rate',\n Header: 'Rate',\n accessor: 'rate',\n Cell: (rate) => rate.value,\n minWidth: 200,\n sortDescFirst: true,\n },\n {\n id: 'filled',\n Header: 'Filled',\n accessor: 'filled',\n Cell: (filled) => prettifyNumber(filled.value ?? 0) + '%',\n minWidth: 70,\n sortDescFirst: true,\n },\n {\n id: 'actions',\n Header: '',\n accessor: 'hash',\n Cell: (cellData) => {\n return (\n \n dispatch(\n addNotification(\n await cancelOrders([cellData.row.original.orderRes])\n )\n )\n }\n >\n \n \n );\n },\n width: 50,\n minWidth: 50,\n disableSortBy: true,\n },\n ],\n [dispatch]\n );\n\n if (!account || orders.length === 0) return [null, refreshOrders];\n\n return [\n
\n
\n

Active Orders

\n
\n \n handleCancelOrders()}\n >\n Cancel All\n \n {weth && weth.balance && (\n handleWithdrawWeth()}\n >\n Withdraw {prettifyNumber(weth.balance)} WETH\n \n )}\n
\n
\n\n \n data={data}\n columns={columns}\n defaultSort={defaultSort}\n isLoading={!tokens.length}\n stickyColumn\n search={search}\n />\n
,\n refreshOrders,\n ];\n};\n","interface Props {\n title?: string;\n subtitle?: string;\n children: JSX.Element[] | JSX.Element;\n trailingSubtitle?: JSX.Element;\n trailingTitle?: JSX.Element;\n}\n\nexport const Page = ({\n title,\n subtitle,\n children,\n trailingSubtitle,\n trailingTitle,\n}: Props) => {\n return (\n
\n {title && (\n
\n

{title}

\n {trailingTitle}\n
\n )}\n {subtitle && (\n

\n {subtitle} {trailingSubtitle}\n

\n )}\n {children}\n
\n );\n};\n","import { Link, LinkProps, useMatch, useResolvedPath } from 'react-router-dom';\nimport { classNameGenerator } from 'utils/pureFunctions';\n\nexport const PageNavLink = ({ children, to, ...props }: LinkProps) => {\n let resolved = useResolvedPath(to);\n let match = useMatch({ path: resolved.pathname, end: true });\n\n const getTabBtnClasses = (selected: boolean, hidden?: boolean) =>\n classNameGenerator({\n 'px-6 py-[3px] rounded-[12px]': true,\n 'bg-white dark:bg-charcoal': selected,\n hidden: hidden,\n });\n\n return (\n \n {children}\n \n );\n};\n","import { useAppSelector } from 'store';\nimport BigNumber from 'bignumber.js';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { bntDecimals, bntToken } from 'services/web3/config';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { shrinkToken } from 'utils/formulas';\nimport {\n getUserRewardsFromSnapshot,\n getUserRewardsProof,\n} from 'store/liquidity/liquidity';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport {\n claimSnapshotRewards,\n stakeSnapshotRewards,\n} from 'services/web3/protection/rewards';\nimport {\n claimRewardsFailedNotification,\n rejectNotification,\n rewardsClaimedNotification,\n rewardsStakedToV3Notification,\n} from 'services/notifications/notifications';\nimport { useDispatch } from 'react-redux';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { useNavigation } from 'hooks/useNavigation';\n\nexport const useMyRewards = () => {\n const bnt = useAppSelector((state) => getTokenById(state, bntToken));\n const snapshots = useAppSelector((state) => state.liquidity.snapshots);\n const userRewards = useAppSelector(getUserRewardsFromSnapshot);\n const account = useAppSelector((state) => state.user.account);\n const proof = useAppSelector(getUserRewardsProof);\n const dispatch = useDispatch();\n const { goToPage } = useNavigation();\n const [hasClaimed, setHasClaimed] = useState(true);\n\n const handleClaimed = useCallback(async () => {\n const userClaimed = account\n ? await ContractsApi.StakingRewardsClaim.read.hasClaimed(account)\n : true;\n setHasClaimed(userClaimed);\n }, [account]);\n\n useEffect(() => {\n handleClaimed();\n }, [handleClaimed]);\n\n const claimable = useMemo(() => {\n return shrinkToken(userRewards.claimable, bntDecimals);\n }, [userRewards.claimable]);\n\n const claimed = useMemo(() => {\n return shrinkToken(userRewards.totalClaimed, bntDecimals);\n }, [userRewards.totalClaimed]);\n\n const totalRewards = useMemo(() => {\n return new BigNumber(claimable).plus(claimed);\n }, [claimable, claimed]);\n\n const totalRewardsUsd = useMemo(() => {\n return totalRewards.times(bnt?.usdPrice ?? 0);\n }, [bnt?.usdPrice, totalRewards]);\n\n const claimableRewards = useMemo(() => {\n return new BigNumber(claimable);\n }, [claimable]);\n\n const claimableRewardsUsd = useMemo(() => {\n return claimableRewards.times(bnt?.usdPrice ?? 0);\n }, [bnt?.usdPrice, claimableRewards]);\n\n const canClaim =\n !hasClaimed && !!account && userRewards.claimable !== '0' && proof;\n\n const stakeRewardsToV3 = useCallback(async () => {\n if (canClaim) {\n stakeSnapshotRewards(\n account,\n userRewards.claimable,\n proof,\n (txHash: string) => {\n console.log('txHash', txHash);\n },\n (txHash: string) => {\n handleClaimed();\n rewardsStakedToV3Notification(\n dispatch,\n txHash,\n prettifyNumber(claimableRewards)\n );\n goToPage.portfolio();\n },\n () => rejectNotification(dispatch),\n () => {\n claimRewardsFailedNotification(dispatch);\n }\n );\n }\n }, [\n account,\n canClaim,\n claimableRewards,\n dispatch,\n goToPage,\n handleClaimed,\n proof,\n userRewards.claimable,\n ]);\n\n const claimRewardsToWallet = useCallback(async () => {\n if (canClaim) {\n claimSnapshotRewards(\n account,\n userRewards.claimable,\n proof,\n (txHash: string) => {\n console.log('txHash', txHash);\n },\n (txHash: string) => {\n handleClaimed();\n rewardsClaimedNotification(\n dispatch,\n txHash,\n prettifyNumber(claimableRewards)\n );\n goToPage.portfolioV2();\n },\n () => rejectNotification(dispatch),\n () => {\n claimRewardsFailedNotification(dispatch);\n }\n );\n }\n }, [\n account,\n canClaim,\n claimableRewards,\n dispatch,\n goToPage,\n handleClaimed,\n proof,\n userRewards.claimable,\n ]);\n\n return {\n totalRewards,\n totalRewardsUsd,\n claimableRewards,\n claimableRewardsUsd,\n loading: !snapshots,\n userRewards,\n hasClaimed,\n handleClaimed,\n stakeRewardsToV3,\n claimRewardsToWallet,\n };\n};\n","import { Page } from 'components/Page';\nimport { Outlet } from 'react-router-dom';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { PageNavLink } from 'components/pageNavLink/PageNavLink';\nimport { useAppSelector } from 'store/index';\nimport { useMyRewards } from 'elements/earn/portfolio/liquidityProtection/rewards/useMyRewards';\nimport { LockedAvailableBnt } from 'services/web3/lockedbnt/lockedbnt';\nimport { getUserRewardsFromSnapshot } from 'store/liquidity/liquidity';\n\nexport const Portfolio = () => {\n const v1 = useAppSelector((state) => state.liquidity.poolTokens);\n\n const v2 = useAppSelector((state) => state.liquidity.protectedPositions);\n const userRewards = useAppSelector(getUserRewardsFromSnapshot);\n\n const lockedAvailableBNT = useAppSelector(\n (state) => state.liquidity.lockedAvailableBNT\n );\n const { hasClaimed } = useMyRewards();\n\n const showV2 =\n v2.length > 0 ||\n lockedAvailableBNT.locked.length > 0 ||\n lockedAvailableBNT.available > 0 ||\n (!hasClaimed && userRewards.claimable !== '0');\n\n const title = 'Portfolio';\n\n return (\n \n {(showV2 || v1.length > 0) && (\n V3\n )}\n {showV2 && (\n \n
\n
V2
\n
\n
\n \n )}\n {v1.length > 0 && (\n \n
\n
V1
\n
\n
\n \n )}\n
\n }\n >\n
\n \n
\n \n );\n};\n","import { fetchPortfolioV3Withdrawals } from 'services/web3/v3/portfolio/withdraw';\nimport {\n setHoldingsRaw,\n setIsPortfolioLoading,\n setStandardRewards,\n setWithdrawalRequestsRaw,\n} from 'store/portfolio/v3Portfolio';\nimport { fetchPortfolioV3Holdings } from 'services/web3/v3/portfolio/holdings';\nimport { updateUserBalances } from 'services/observables/tokens';\nimport { fetchStandardRewardsByUser } from 'services/web3/v3/portfolio/standardStaking';\nimport { take } from 'rxjs/operators';\nimport { apiPoolsV3$ } from 'services/observables/apiData';\nimport { user$ } from 'services/observables/user';\nimport { poolsV3$ } from 'services/observables/pools';\n\nexport const updatePortfolioData = async (dispatch: (data: any) => void) => {\n const account = await user$.pipe(take(1)).toPromise();\n const poolsV3 = await poolsV3$.pipe(take(1)).toPromise();\n\n if (!account) {\n return;\n }\n dispatch(setIsPortfolioLoading(true));\n const standardRewards = await fetchStandardRewardsByUser(account!, poolsV3);\n const apiPools = await apiPoolsV3$.pipe(take(1)).toPromise();\n const holdings = await fetchPortfolioV3Holdings(apiPools, account!);\n dispatch(setStandardRewards(standardRewards));\n dispatch(setHoldingsRaw(holdings));\n const requests = await fetchPortfolioV3Withdrawals(account!);\n dispatch(setWithdrawalRequestsRaw(requests));\n await updateUserBalances();\n dispatch(setIsPortfolioLoading(false));\n};\n","import BigNumber from 'bignumber.js';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { Image } from 'components/image/Image';\n\ninterface Props {\n symbol: string;\n amount: string;\n usdPrice: string;\n imgUrl: string;\n inverted?: boolean;\n}\nexport const TokenBalance = ({\n symbol,\n amount,\n usdPrice,\n imgUrl,\n inverted,\n}: Props) => {\n const usdAmount = new BigNumber(amount).times(usdPrice).toString();\n const label = inverted\n ? `${prettifyNumber(amount)} ${symbol}`\n : `${symbol} ${prettifyNumber(amount)}`;\n\n return (\n
\n \n
\n
{label}
\n \n {prettifyNumber(usdAmount, true)}\n \n
\n
\n );\n};\n","import dayjs from 'dayjs';\nimport { useInterval } from 'hooks/useInterval';\nimport { useState } from 'react';\nimport { formatTime } from 'utils/helperFunctions';\n\ninterface CountdownTimerProps {\n date?: number;\n msgEnded?: string;\n interval?: number;\n onEnded?: () => void;\n}\n\nexport const CountdownTimer = ({\n date,\n msgEnded = '',\n interval = 1000,\n onEnded,\n}: CountdownTimerProps) => {\n const now = dayjs().unix() * 1000;\n const [countdown, setCountdown] = useState(date ? date - now : -1);\n const timerEnded = countdown <= 0;\n\n useInterval(\n () => {\n setCountdown(countdown - interval);\n if (onEnded && countdown <= interval) onEnded();\n },\n timerEnded ? null : interval\n );\n\n return (\n
\n {timerEnded ? msgEnded : formatTime(countdown)}\n
\n );\n};\n","import { WithdrawalRequest } from 'store/portfolio/v3Portfolio.types';\nimport { useDateNow } from 'hooks/useDateNow';\nimport { memo, useMemo } from 'react';\nimport dayjs from 'dayjs';\nimport { TokenBalance } from 'components/tokenBalance/TokenBalance';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { CountdownTimer } from 'components/countdownTimer/CountdownTimer';\nimport { ReactComponent as IconTimes } from 'assets/icons/times.svg';\n\ninterface Props {\n withdrawalRequest: WithdrawalRequest;\n openCancelModal: (req: WithdrawalRequest) => void;\n openConfirmModal: (req: WithdrawalRequest) => void;\n}\n\nexport const WithdrawItem = memo(\n ({ withdrawalRequest, openCancelModal, openConfirmModal }: Props) => {\n const dateNow = useDateNow();\n const { lockEndsAt } = withdrawalRequest;\n const token = withdrawalRequest.pool.reserveToken;\n const isLocked = useMemo(\n () => lockEndsAt - dayjs(dateNow).unix() <= 0,\n [dateNow, lockEndsAt]\n );\n\n return (\n
\n \n
\n {isLocked && (\n openConfirmModal(withdrawalRequest)}\n size={ButtonSize.ExtraSmall}\n variant={ButtonVariant.Secondary}\n >\n Withdraw\n \n )}\n {!isLocked && (\n
\n Cooling down\n \n
\n )}\n openCancelModal(withdrawalRequest)}\n className=\"hover:text-error p-10\"\n >\n \n \n
\n
\n );\n }\n);\n","import { useEffect, useState } from 'react';\n\ninterface Props {\n intervalMs?: number;\n}\n\nexport const useDateNow = ({ intervalMs }: Props = {}): Date => {\n const [now, setNow] = useState(new Date());\n\n useEffect(() => {\n const interval = setInterval(() => {\n setNow(new Date());\n }, intervalMs || 1000);\n\n return () => clearInterval(interval);\n }, [intervalMs]);\n\n return now;\n};\n","import { prettifyNumber } from 'utils/helperFunctions';\nimport BigNumber from 'bignumber.js';\nimport { useMemo } from 'react';\nimport { Image } from 'components/image/Image';\n\ninterface Props {\n symbol: string;\n amount: string;\n usdPrice: string;\n logoURI: string;\n label?: string;\n}\n\nexport const TokenBalanceLarge = ({\n symbol,\n amount,\n usdPrice,\n logoURI,\n label,\n}: Props) => {\n const usdAmount = useMemo(\n () => new BigNumber(amount).times(usdPrice),\n [amount, usdPrice]\n );\n\n return (\n
\n {label &&
{label}
}\n
\n \n
\n
\n
{prettifyNumber(amount)}
\n {symbol}\n
\n\n
\n {prettifyNumber(usdAmount, true)}\n
\n
\n
\n
\n );\n};\n","import { WithdrawalRequest } from 'store/portfolio/v3Portfolio.types';\nimport { memo, useCallback, useMemo, useState } from 'react';\nimport { Modal } from 'components/modal/Modal';\nimport { Button, ButtonSize } from 'components/button/Button';\nimport { TokenBalanceLarge } from 'components/tokenBalance/TokenBalanceLarge';\nimport { toBigNumber } from 'utils/helperFunctions';\n\ninterface Props {\n isModalOpen: boolean;\n setIsModalOpen: (isOpen: boolean) => void;\n withdrawRequest: WithdrawalRequest;\n cancelWithdrawal: () => Promise;\n}\n\nexport const V3WithdrawCancelModal = memo(\n ({\n isModalOpen,\n setIsModalOpen,\n withdrawRequest,\n cancelWithdrawal,\n }: Props) => {\n const [txBusy, setTxBusy] = useState(false);\n const { pool } = withdrawRequest;\n const token = pool.reserveToken;\n\n const handleCTAClick = useCallback(async () => {\n setTxBusy(true);\n await cancelWithdrawal();\n setIsModalOpen(false);\n setTxBusy(false);\n }, [cancelWithdrawal, setIsModalOpen]);\n\n const compoundingApr = useMemo(\n () =>\n toBigNumber(pool.apr.autoCompounding)\n .plus(pool.apr.tradingFees)\n .toFixed(2),\n [pool.apr.autoCompounding, pool.apr.tradingFees]\n );\n\n return (\n \n
\n \n\n
\n
\n Compounding rewards{' '}\n {token.symbol}\n
\n
{compoundingApr} %
\n
\n\n \n Cancel & Earn\n \n
\n \n );\n }\n);\n","import { memo } from 'react';\n\ninterface Props {\n percentage: number;\n showPercentage?: boolean;\n className?: string;\n}\n\nexport const ProgressBar = memo(\n ({\n percentage,\n showPercentage = false,\n className = 'text-black dark:text-white',\n }: Props) => {\n return (\n
\n
\n
\n \n
\n {showPercentage && (\n \n {percentage.toFixed(0)}%\n \n )}\n
\n );\n }\n);\n","import { ProgressBar } from 'components/progressBar/ProgressBar';\n\ninterface Props {\n outputBreakdown: { tkn: number; bnt: number };\n isBntToken: boolean;\n symbol: string;\n}\n\nexport const V3WithdrawConfirmOutputBreakdown = ({\n outputBreakdown,\n isBntToken,\n symbol,\n}: Props) => {\n return (\n <>\n {outputBreakdown.bnt > 0 && !isBntToken && (\n
\n
Output Breakdown
\n \n
\n
\n {outputBreakdown.tkn.toFixed(2)}% {symbol}\n
\n
\n {outputBreakdown.bnt.toFixed(2)}% BNT\n
\n
\n
\n )}\n \n );\n};\n","import { ReactComponent as IconCheck } from 'assets/icons/circlecheck.svg';\n\ninterface Props {\n handleCancelClick: () => void;\n}\nexport const V3WithdrawConfirmInfo = ({ handleCancelClick }: Props) => {\n return (\n
\n

Cancel withdrawal and earn more!

\n\n
\n
\n \n
\n
\n

Claim cooldown rewards

\n

\n Your tokens kept earning during the cooldown period. If you don’t\n withdraw them, you will keep those earnings.\n

\n
\n
\n
\n
\n \n
\n
\n

Keep Earning

\n

\n Your tokens will continue earning auto-compounding income.\n

\n
\n
\n
\n
\n \n
\n
\n

\n No Matter What You’re Protected\n

\n

\n Your tokens were never exposed to Impermanent Loss during the\n cooldown period. Whether or not you withdraw, you’re always fully\n protected.\n

\n
\n
\n\n \n Cancel withdrawal and earn {'->'}\n \n
\n );\n};\n","import { WithdrawalRequest } from 'store/portfolio/v3Portfolio.types';\nimport { memo } from 'react';\nimport { Modal } from 'components/modal/Modal';\nimport { Button, ButtonSize } from 'components/button/Button';\nimport { V3WithdrawConfirmOutputBreakdown } from 'elements/earn/portfolio/v3/pendingWithdraw/confirm/V3WithdrawConfirmOutputBreakdown';\nimport { useV3WithdrawConfirm } from 'elements/earn/portfolio/v3/pendingWithdraw/confirm/useV3WithdrawConfirm';\nimport { V3WithdrawConfirmInfo } from 'elements/earn/portfolio/v3/pendingWithdraw/confirm/V3WithdrawConfirmInfo';\nimport { TokenBalanceLarge } from 'components/tokenBalance/TokenBalanceLarge';\nimport { useIsPoolStable } from 'hooks/useIsPoolStable';\nimport { ReactComponent as IconInfo } from 'assets/icons/info.svg';\n\ninterface Props {\n isModalOpen: boolean;\n setIsModalOpen: (isOpen: boolean) => void;\n withdrawRequest: WithdrawalRequest;\n openCancelModal: (req: WithdrawalRequest) => void;\n}\n\nexport const V3WithdrawConfirmModal = memo(\n ({\n isModalOpen,\n setIsModalOpen,\n withdrawRequest,\n openCancelModal,\n }: Props) => {\n const {\n onModalClose,\n ModalApprove,\n token,\n outputBreakdown,\n missingGovTokenBalance,\n txBusy,\n isBntToken,\n handleCancelClick,\n govToken,\n handleWithdrawClick,\n } = useV3WithdrawConfirm({\n setIsModalOpen,\n withdrawRequest,\n openCancelModal,\n isModalOpen,\n });\n\n const { isPoolStable, isLoading } = useIsPoolStable(token.address);\n\n return (\n \n
\n {ModalApprove}\n\n \n\n \n\n \n\n {isPoolStable === false &&\n !isLoading &&\n withdrawRequest.pool.tradingEnabled && (\n
\n
\n \n Withdrawal is temporarily paused!\n
\n
\n Price in the pool is to volatile, lets wait a few minutes\n before proceeding.\n
\n
\n )}\n\n {missingGovTokenBalance > 0 ? (\n
\n vBNT Balance insufficient.{' '}\n
\n To proceed, add {missingGovTokenBalance} {govToken?.symbol} to\n your wallet.\n
\n ) : (\n handleWithdrawClick()}\n size={ButtonSize.Full}\n disabled={\n txBusy ||\n missingGovTokenBalance > 0 ||\n (isPoolStable === false &&\n withdrawRequest.pool.tradingEnabled) ||\n isLoading\n }\n >\n Confirm Withdrawal\n \n )}\n
\n \n );\n }\n);\n","import { useCallback, useMemo, useState } from 'react';\nimport { useAppSelector } from 'store';\nimport { Token } from 'services/observables/tokens';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { bntToken, getNetworkVariables } from 'services/web3/config';\nimport BigNumber from 'bignumber.js';\nimport useAsyncEffect from 'use-async-effect';\nimport { fetchWithdrawalRequestOutputBreakdown } from 'services/web3/v3/portfolio/withdraw';\nimport { wait } from 'utils/pureFunctions';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { WithdrawalRequest } from 'store/portfolio/v3Portfolio.types';\nimport {\n confirmWithdrawNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\nimport { ErrorCode } from 'services/web3/types';\nimport { useDispatch } from 'react-redux';\n\ninterface Props {\n isModalOpen: boolean;\n setIsModalOpen: (isOpen: boolean) => void;\n withdrawRequest: WithdrawalRequest;\n openCancelModal: (req: WithdrawalRequest) => void;\n}\nexport const useV3WithdrawConfirm = ({\n isModalOpen,\n setIsModalOpen,\n withdrawRequest,\n openCancelModal,\n}: Props) => {\n const dispatch = useDispatch();\n const account = useAppSelector((state) => state.user.account);\n const [outputBreakdown, setOutputBreakdown] = useState({\n tkn: 0,\n bnt: 0,\n });\n const [txBusy, setTxBusy] = useState(false);\n const { pool, poolTokenAmount } = withdrawRequest;\n const token = pool.reserveToken;\n const govToken = useAppSelector((state: any) =>\n getTokenById(state, getNetworkVariables().govToken)\n );\n const isBntToken = useMemo(() => token.address === bntToken, [token]);\n\n const missingGovTokenBalance = useMemo(() => {\n if (!isBntToken) {\n return 0;\n }\n return new BigNumber(poolTokenAmount)\n .minus(govToken?.balance || 0)\n .toNumber();\n }, [govToken?.balance, isBntToken, poolTokenAmount]);\n\n useAsyncEffect(async () => {\n if (!isModalOpen) {\n return;\n }\n\n const res = await fetchWithdrawalRequestOutputBreakdown(withdrawRequest);\n setOutputBreakdown(res);\n }, [withdrawRequest, isModalOpen]);\n\n const onModalClose = useCallback(() => {\n setIsModalOpen(false);\n setOutputBreakdown({ tkn: 0, bnt: 0 });\n }, [setIsModalOpen]);\n\n const withdraw = useCallback(async () => {\n if (!withdrawRequest || !account) {\n return;\n }\n\n try {\n const tx = await ContractsApi.BancorNetwork.write.withdraw(\n withdrawRequest.id\n );\n confirmWithdrawNotification(\n dispatch,\n tx.hash,\n withdrawRequest.reserveTokenAmount,\n token.symbol\n );\n onModalClose();\n setTxBusy(false);\n await updatePortfolioData(dispatch);\n } catch (e: any) {\n console.error('withdraw request failed', e);\n if (e.code === ErrorCode.DeniedTx) {\n rejectNotification(dispatch);\n }\n onModalClose();\n setTxBusy(false);\n }\n }, [account, dispatch, onModalClose, token.symbol, withdrawRequest]);\n\n const approveTokens = useMemo(() => {\n const tokensToApprove = [];\n if (token.address === bntToken) {\n tokensToApprove.push({\n amount: poolTokenAmount,\n token: {\n ...token,\n address: govToken?.address ?? '',\n symbol: govToken?.symbol ?? 'vBNT',\n },\n });\n }\n\n return tokensToApprove;\n }, [govToken?.address, govToken?.symbol, poolTokenAmount, token]);\n\n const [onStart, ModalApprove] = useApproveModal(\n approveTokens,\n withdraw,\n ContractsApi.BancorNetwork.contractAddress\n );\n\n const handleWithdrawClick = useCallback(async () => {\n setTxBusy(true);\n onStart();\n }, [onStart]);\n\n const handleCancelClick = useCallback(async () => {\n onModalClose();\n await wait(400);\n openCancelModal(withdrawRequest);\n }, [onModalClose, openCancelModal, withdrawRequest]);\n\n return {\n onModalClose,\n ModalApprove,\n token,\n outputBreakdown,\n missingGovTokenBalance,\n txBusy,\n isBntToken,\n handleCancelClick,\n govToken,\n handleWithdrawClick,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { useInterval } from 'hooks/useInterval';\n\nexport const useIsPoolStable = (\n poolId: string,\n intervalMs: number | null = 30000\n) => {\n const [isLoading, setIsLoading] = useState(false);\n const [isPoolStable, setIsPoolStable] = useState(null);\n\n const checkPoolStatus = useCallback(async (): Promise => {\n setIsLoading(true);\n setIsPoolStable(null);\n try {\n const res = await ContractsApi.BancorNetworkInfo.read.isPoolStable(\n poolId\n );\n setIsPoolStable(res);\n return res;\n } catch (e) {\n console.error(e);\n setIsPoolStable(null);\n throw e;\n } finally {\n setIsLoading(false);\n }\n }, [poolId]);\n\n useEffect(() => {\n void checkPoolStatus();\n }, [checkPoolStatus]);\n\n useInterval(checkPoolStatus, intervalMs);\n\n return { isPoolStable, isLoading, checkPoolStatus };\n};\n","import { useV3Withdraw } from 'elements/earn/portfolio/v3/pendingWithdraw/useV3Withdraw';\nimport { WithdrawItem } from 'elements/earn/portfolio/v3/pendingWithdraw/V3WithdrawItem';\nimport { V3WithdrawCancelModal } from 'elements/earn/portfolio/v3/pendingWithdraw/V3WithdrawCancelModal';\nimport { V3WithdrawConfirmModal } from 'elements/earn/portfolio/v3/pendingWithdraw/confirm/V3WithdrawConfirmModal';\n\nexport const V3Withdraw = () => {\n const {\n withdrawalRequests,\n cancelWithdrawal,\n openCancelModal,\n isLoadingWithdrawalRequests,\n isModalCancelOpen,\n setIsModalCancelOpen,\n isModalConfirmOpen,\n setIsModalConfirmOpen,\n selected,\n openConfirmModal,\n } = useV3Withdraw();\n\n return (\n <>\n {withdrawalRequests.length !== 0 && (\n
\n \n
\n {withdrawalRequests.map((withdrawalRequest) => (\n \n ))}\n {isLoadingWithdrawalRequests &&\n [...Array(3)].map((_, index) => (\n
\n ))}\n
\n
\n )}\n {selected && (\n <>\n \n \n \n )}\n \n );\n};\n","import { useAppSelector } from 'store';\nimport {\n getIsLoadingWithdrawalRequests,\n getPortfolioWithdrawalRequests,\n} from 'store/portfolio/v3Portfolio';\nimport { useDispatch } from 'react-redux';\nimport { useCallback, useState } from 'react';\nimport { WithdrawalRequest } from 'store/portfolio/v3Portfolio.types';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport {\n rejectNotification,\n withdrawCancelNotification,\n} from 'services/notifications/notifications';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\nimport { ErrorCode } from 'services/web3/types';\n\nexport const useV3Withdraw = () => {\n const withdrawalRequests = useAppSelector(getPortfolioWithdrawalRequests);\n const isLoadingWithdrawalRequests = useAppSelector(\n getIsLoadingWithdrawalRequests\n );\n const dispatch = useDispatch();\n const account = useAppSelector((state) => state.user.account);\n\n const [selected, setSelected] = useState(null);\n const [isModalCancelOpen, setIsModalCancelOpen] = useState(false);\n const [isModalConfirmOpen, setIsModalConfirmOpen] = useState(false);\n\n const openCancelModal = useCallback(async (req: WithdrawalRequest) => {\n setSelected(req);\n setIsModalCancelOpen(true);\n }, []);\n\n const cancelWithdrawal = useCallback(async () => {\n if (!selected || !account) {\n return;\n }\n\n try {\n const tx = await ContractsApi.BancorNetwork.write.cancelWithdrawal(\n selected.id\n );\n withdrawCancelNotification(\n dispatch,\n tx.hash,\n selected.reserveTokenAmount,\n selected.pool.reserveToken.symbol\n );\n setIsModalCancelOpen(false);\n await updatePortfolioData(dispatch);\n } catch (e: any) {\n setIsModalCancelOpen(false);\n console.error('cancelWithdrawal failed: ', e);\n if (e.code === ErrorCode.DeniedTx) {\n rejectNotification(dispatch);\n }\n }\n }, [account, dispatch, selected]);\n\n const openConfirmModal = useCallback(async (req: WithdrawalRequest) => {\n setSelected(req);\n setIsModalConfirmOpen(true);\n }, []);\n\n return {\n withdrawalRequests,\n cancelWithdrawal,\n openCancelModal,\n isLoadingWithdrawalRequests,\n isModalCancelOpen,\n setIsModalCancelOpen,\n selected,\n isModalConfirmOpen,\n setIsModalConfirmOpen,\n openConfirmModal,\n };\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCheck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.2655 3.00033C19.0782 3.0047 18.9043 3.07905 18.7749 3.21024L6.43334 15.3109L1.22821 10.2073C1.0498 10.0237 0.782184 9.94933 0.532409 10.0149C0.282634 10.0761 0.0863826 10.2686 0.0239394 10.5135C-0.0429649 10.7584 0.0328594 11.0208 0.220191 11.1957L5.92933 16.7934C6.20587 17.0689 6.66082 17.0689 6.93735 16.7934L19.7829 4.19858C19.9926 3.99742 20.0595 3.69129 19.9435 3.42453C19.8275 3.15776 19.5599 2.99158 19.2655 3.00033Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheck);\nexport default __webpack_public_path__ + \"static/media/check.2d7e0eb5.svg\";\nexport { ForwardRef as ReactComponent };","import { Dialog, Transition } from '@headlessui/react';\nimport { Fragment, ReactNode } from 'react';\nimport { ReactComponent as IconTimes } from 'assets/icons/times.svg';\nimport { ReactComponent as IconChevron } from 'assets/icons/chevronRight.svg';\n\ninterface Props {\n title?: string;\n children: JSX.Element;\n separator?: boolean;\n titleElement?: ReactNode;\n setIsOpen: (isOpen: boolean) => void;\n isOpen: boolean;\n onBackClick?: Function;\n showBackButton?: boolean;\n onClose?: Function;\n large?: boolean;\n}\n\nexport const ModalV3 = ({\n title,\n children,\n separator,\n titleElement,\n setIsOpen,\n isOpen,\n showBackButton,\n onBackClick,\n onClose,\n large,\n}: Props) => {\n return (\n <>\n \n (onClose ? onClose() : setIsOpen(false))}\n >\n
\n \n \n \n\n {/* This element is to trick the browser into centering the modal contents. */}\n \n \n \n \n
\n {showBackButton && (\n \n )}\n {title && title}\n
\n
\n {titleElement && titleElement}\n setIsOpen(false)}\n className=\"px-5 py-2\"\n >\n \n \n
\n
\n
\n {separator &&
}\n {children}\n
\n
\n \n
\n \n \n \n );\n};\n","import { useMemo, useState } from 'react';\nimport { debounce } from 'lodash';\n\nexport const useDebounce = (\n initialState: any = null,\n interval: number = 500\n) => {\n const [state, setState] = useState(initialState);\n\n const setDebouncedState = (_val: string) => {\n debouncer(_val);\n };\n\n const debouncer = useMemo(\n () =>\n debounce((_prop: string) => {\n setState(_prop);\n }, interval),\n [interval]\n );\n\n return [state, setDebouncedState];\n};\n","import { useRef, useEffect, useCallback } from 'react';\nimport { useDebounce } from './useDebounce';\n\nconst observerErr =\n \"💡 react-cool-dimensions: the browser doesn't support Resize Observer, please use polyfill: https://github.com/wellyshen/react-cool-dimensions#resizeobserver-polyfill\";\nconst borderBoxWarn =\n \"💡 react-cool-dimensions: the browser doesn't support border-box size, fallback to content-box size. Please see: https://github.com/wellyshen/react-cool-dimensions#border-box-size-measurement\";\n\ninterface State {\n readonly width: number;\n readonly height: number;\n readonly entry?: ResizeObserverEntry;\n}\ninterface Observe {\n (element?: T | null): void;\n}\ninterface Event extends State {\n readonly entry: ResizeObserverEntry;\n observe: Observe;\n unobserve: () => void;\n}\ninterface Options {\n debouncedMs?: number;\n useBorderBoxSize?: boolean;\n}\ninterface Return extends Omit, 'entry'> {\n entry?: ResizeObserverEntry;\n}\n\nconst initialState: State = {\n width: 0,\n height: 0,\n};\n\nconst useDimensions = ({\n debouncedMs,\n useBorderBoxSize,\n}: Options = {}): Return => {\n const [stateDebounced, setStateDebounced] = useDebounce(\n initialState,\n debouncedMs\n );\n\n const prevSizeRef = useRef<{ width?: number; height?: number }>({});\n const observerRef = useRef();\n const warnedRef = useRef(false);\n const ref = useRef();\n\n const unobserve = useCallback(() => {\n if (observerRef.current) observerRef.current.disconnect();\n }, []);\n\n const observe = useCallback>(\n (element) => {\n if (element && element !== ref.current) {\n unobserve();\n ref.current = element;\n }\n if (observerRef.current && ref.current)\n observerRef.current.observe(ref.current as HTMLElement);\n },\n [unobserve]\n );\n\n useEffect(() => {\n if (!('ResizeObserver' in window) || !('ResizeObserverEntry' in window)) {\n console.error(observerErr);\n return () => null;\n }\n\n let raf: number | null = null;\n\n observerRef.current = new ResizeObserver(([entry]) => {\n raf = requestAnimationFrame(() => {\n const { contentBoxSize, borderBoxSize, contentRect } = entry;\n\n let boxSize = contentBoxSize;\n if (useBorderBoxSize)\n if (borderBoxSize) {\n boxSize = borderBoxSize;\n } else if (!warnedRef.current) {\n console.warn(borderBoxWarn);\n warnedRef.current = true;\n }\n\n const width =\n boxSize && boxSize[0] ? boxSize[0].inlineSize : contentRect.width;\n const height =\n boxSize && boxSize[0] ? boxSize[0].blockSize : contentRect.height;\n\n const isUnchanged =\n width === prevSizeRef.current.width &&\n height === prevSizeRef.current.height;\n\n if (isUnchanged) {\n return;\n }\n\n prevSizeRef.current = { width, height };\n\n setStateDebounced({ width, height, entry });\n });\n });\n\n observe();\n\n return () => {\n unobserve();\n if (raf) cancelAnimationFrame(raf);\n };\n }, [observe, setStateDebounced, unobserve, useBorderBoxSize]);\n\n return { ...stateDebounced, observe, unobserve };\n};\n\nexport default useDimensions;\n","import { memo, useMemo } from 'react';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { useResizeTokenInput } from 'components/tokenInput/useResizeTokenInput';\nimport { useTokenInputV3 } from 'components/tokenInput/useTokenInputV3';\nimport { Token } from 'services/observables/tokens';\nimport useDimensions from 'hooks/useDimensions';\nimport { Image } from 'components/image/Image';\n\nexport interface TokenInputV3Props {\n token: Token;\n inputTkn: string;\n setInputTkn: (amount: string) => void;\n inputFiat: string;\n setInputFiat: (amount: string) => void;\n isFiat: boolean;\n isError: boolean;\n}\n\nconst TokenInputV3 = ({\n token,\n inputTkn,\n setInputTkn,\n inputFiat,\n setInputFiat,\n isFiat,\n isError,\n}: TokenInputV3Props) => {\n const { handleChange, inputUnit, oppositeUnit, isFocused, setIsFocused } =\n useTokenInputV3({\n token,\n setInputTkn,\n setInputFiat,\n isFiat,\n });\n\n const { observe: containerRef, width: containerWidth } = useDimensions();\n const { observe: oppositeRef, width: oppositeWidth } = useDimensions();\n const { observe: symbolRef, width: symbolWidth } = useDimensions();\n const maxInputWidth = useMemo(\n () => containerWidth - symbolWidth - oppositeWidth - 120,\n [oppositeWidth, symbolWidth, containerWidth]\n );\n const { inputRef, helperRef } = useResizeTokenInput({\n isFiat,\n inputTkn,\n });\n return (\n {\n inputRef.current && inputRef.current.focus();\n }}\n className={`relative flex items-center border-2 rounded-20 text-[36px] bg-white dark:bg-charcoal ${\n isFocused ? 'border-primary' : 'border-fog dark:border-grey'\n } ${isError ? 'border-error text-error' : ''}`}\n >\n \n \n setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n value={isFiat ? inputFiat : inputTkn}\n placeholder=\"0.00\"\n onChange={handleChange}\n className={`${\n inputTkn === '' ? 'min-w-[80px]' : 'min-w-[10px]'\n } ml-[80px] outline-none h-[75px] bg-white dark:bg-charcoal rounded-20 font-inherit`}\n style={{\n maxWidth: maxInputWidth,\n }}\n />\n \n {inputUnit}\n \n \n {prettifyNumber(isFiat ? inputTkn : inputFiat, !isFiat)} {oppositeUnit}\n \n
\n );\n};\n\nexport default memo(TokenInputV3);\n","import { useEffect, useRef } from 'react';\nimport { sanitizeNumberInput } from 'utils/pureFunctions';\n\ninterface UseResizeTokenInputProps {\n isFiat: boolean;\n inputTkn: string;\n}\n\nexport const useResizeTokenInput = ({\n isFiat,\n inputTkn,\n}: UseResizeTokenInputProps) => {\n const inputRef = useRef(null);\n const helperRef = useRef(null);\n\n const resize = () => {\n if (inputRef.current && helperRef.current) {\n const length = inputRef.current.value.length;\n let fontSize: string;\n\n if (length < 12) {\n fontSize = '36px';\n } else if (length < 18) {\n fontSize = '30px';\n } else {\n fontSize = '16px';\n }\n\n inputRef.current.style.fontSize = fontSize;\n helperRef.current.style.fontSize = fontSize;\n helperRef.current.textContent = sanitizeNumberInput(\n inputRef.current.value\n );\n inputRef.current.style.width = helperRef.current.offsetWidth + 'px';\n }\n };\n\n useEffect(() => {\n resize();\n const inputRefCurrent = inputRef.current;\n if (inputRefCurrent) {\n inputRefCurrent.focus();\n inputRefCurrent.addEventListener('input', resize);\n }\n\n return () => {\n if (inputRefCurrent) {\n inputRefCurrent.removeEventListener('input', resize);\n }\n };\n }, [isFiat, inputTkn]);\n\n return { inputRef, helperRef };\n};\n","import { BigNumber } from 'bignumber.js';\nimport { ButtonPercentages } from 'components/button/Button';\nimport TokenInputV3, {\n TokenInputV3Props,\n} from 'components/tokenInput/TokenInputV3';\nimport { useEffect, useState } from 'react';\nimport { calcFiatValue, prettifyNumber } from 'utils/helperFunctions';\n\ninterface TokenInputPercentageV3Props extends TokenInputV3Props {\n label: string;\n balanceLabel?: string;\n}\nconst percentages = [25, 50, 75, 100];\n\nexport const TokenInputPercentageV3 = ({\n token,\n inputTkn,\n setInputTkn,\n inputFiat,\n setInputFiat,\n isFiat,\n isError,\n label,\n balanceLabel = 'Balance',\n}: TokenInputPercentageV3Props) => {\n const fieldBalance = token.balance\n ? token.balance\n : token && token.balance\n ? token.balance\n : undefined;\n\n const [selPercentage, setSelPercentage] = useState(-1);\n\n const handleSetPercentage = (percent: number) => {\n setSelPercentage(percentages.indexOf(percent));\n if (fieldBalance !== undefined) {\n const amount = new BigNumber(fieldBalance).times(percent / 100);\n setInputTkn(amount.toString());\n setInputFiat(calcFiatValue(amount, token.usdPrice));\n }\n };\n\n useEffect(() => {\n if (fieldBalance !== undefined) {\n const percentage = new BigNumber(inputTkn)\n .div(fieldBalance)\n .times(100)\n .toNumber()\n .toFixed(10);\n setSelPercentage(\n percentages.findIndex((x) => percentage === x.toFixed(10))\n );\n }\n }, [fieldBalance, inputTkn]);\n\n return (\n
\n
\n {label}\n {fieldBalance && (\n handleSetPercentage(100)}\n className={`text-12 ${isError ? 'text-error' : ''}`}\n >\n {balanceLabel}: {prettifyNumber(fieldBalance)}{' '}\n \n (\n {prettifyNumber(\n calcFiatValue(fieldBalance, token.usdPrice),\n true\n )}\n )\n \n \n )}\n
\n {token && (\n \n )}\n
\n {\n handleSetPercentage(percentage);\n }}\n />\n
\n
\n );\n};\n","import { ReactComponent as IconLink } from 'assets/icons/link.svg';\nimport { useAppSelector } from 'store/index';\nimport { useMemo } from 'react';\n\nexport const ProtectedSettingsV3 = ({\n asLink = false,\n}: {\n asLink?: boolean;\n}) => {\n const { withdrawalFee, lockDuration } = useAppSelector(\n (state) => state.v3Portfolio.withdrawalSettings\n );\n\n const lockDurationInDays = useMemo(\n () => lockDuration / 60 / 60 / 24,\n [lockDuration]\n );\n\n const withdrawalFeeInPercent = useMemo(\n () => (withdrawalFee * 100).toFixed(2),\n [withdrawalFee]\n );\n\n const text = `100% Protected • ${\n lockDurationInDays < 1 ? '< 1' : lockDurationInDays\n } day cooldown • ${withdrawalFeeInPercent}% withdrawal fee`;\n\n const textClass =\n 'flex items-center text-secondary text-[13px] justify-center';\n\n if (!asLink) {\n return
{text}
;\n }\n return (\n \n {text}\n \n \n );\n};\n","import { useState } from 'react';\n\ninterface Props {\n className?: string;\n btnClassName?: string;\n initiallyExpanded?: boolean;\n renderButtonChildren: (isExpanded: boolean) => JSX.Element;\n children: JSX.Element;\n}\n\nexport const ExpandableSection = ({\n className = 'p-10 rounded bg-secondary',\n btnClassName = 'flex justify-between items-center px-20 h-[40px] w-full',\n initiallyExpanded = false,\n renderButtonChildren,\n children,\n}: Props) => {\n const [expanded, setExpanded] = useState(initiallyExpanded);\n const toggle = () => setExpanded(!expanded);\n return (\n
\n
\n {renderButtonChildren(expanded)}\n
\n {expanded && children}\n
\n );\n};\n","import { Button, ButtonSize } from 'components/button/Button';\nimport { PoolV3 } from 'services/observables/pools';\nimport { useCallback, useMemo, useState } from 'react';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { useDispatch } from 'react-redux';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\nimport { useAppSelector } from 'store';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { ModalV3 } from 'components/modal/ModalV3';\nimport { SwapSwitch } from 'elements/swapSwitch/SwapSwitch';\nimport { TokenInputPercentageV3 } from 'components/tokenInputPercentage/TokenInputPercentageV3';\nimport { ethToken } from 'services/web3/config';\nimport { Switch } from 'components/switch/Switch';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { prettifyNumber, toBigNumber } from 'utils/helperFunctions';\nimport { expandToken, shrinkToken } from 'utils/formulas';\nimport { web3 } from 'services/web3';\nimport { useConditionalInterval } from 'hooks/useConditionalInterval';\nimport BigNumber from 'bignumber.js';\nimport {\n confirmDepositNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { ErrorCode } from 'services/web3/types';\nimport { ProtectedSettingsV3 } from 'components/protectedSettingsV3/ProtectedSettingsV3';\nimport { useNavigation } from 'hooks/useNavigation';\nimport { wait } from 'utils/pureFunctions';\nimport { ExpandableSection } from 'components/expandableSection/ExpandableSection';\nimport { ReactComponent as IconChevron } from 'assets/icons/chevronDown.svg';\nimport { getPoolsV3Map } from 'store/bancor/pool';\nimport { useWalletConnect } from 'elements/walletConnect/useWalletConnect';\n\ninterface Props {\n pool: PoolV3;\n renderButton: (onClick: () => void) => React.ReactNode;\n}\n\nconst REWARDS_EXTRA_GAS = 130_000;\n\nexport const DepositV3Modal = ({ pool, renderButton }: Props) => {\n const account = useAppSelector((state) => state.user.account);\n const [isOpen, setIsOpen] = useState(false);\n const [txBusy, setTxBusy] = useState(false);\n const [amount, setAmount] = useState('');\n const [inputFiat, setInputFiat] = useState('');\n const isFiat = useAppSelector((state) => state.user.usdToggle);\n const [accessFullEarnings, setAccessFullEarnings] = useState(true);\n const [extraGasNeeded, setExtraGasNeeded] = useState('0');\n const eth = useAppSelector((state) => getTokenById(state, ethToken));\n const poolV3Map = useAppSelector(getPoolsV3Map);\n const { handleWalletButtonClick } = useWalletConnect();\n\n const onClose = async () => {\n setIsOpen(false);\n await wait(500);\n setAmount('');\n setInputFiat('');\n setExtraGasNeeded('0');\n setAccessFullEarnings(true);\n };\n\n const isInputError = useMemo(\n () => !!account && new BigNumber(pool.reserveToken.balance || 0).lt(amount),\n [account, amount, pool.reserveToken.balance]\n );\n\n const dispatch = useDispatch();\n const { goToPage } = useNavigation();\n\n const deposit = async () => {\n if (!pool.reserveToken.balance || !account) {\n return;\n }\n\n const amountWei = expandToken(amount, pool.reserveToken.decimals);\n const isETH = pool.reserveToken.address === ethToken;\n\n try {\n setTxBusy(true);\n const tx =\n accessFullEarnings && pool.latestProgram\n ? await ContractsApi.StandardRewards.write.depositAndJoin(\n pool.latestProgram.id,\n amountWei,\n { value: isETH ? amountWei : undefined }\n )\n : await ContractsApi.BancorNetwork.write.deposit(\n pool.reserveToken.address,\n amountWei,\n { value: isETH ? amountWei : undefined }\n );\n confirmDepositNotification(\n dispatch,\n tx.hash,\n amount,\n pool.reserveToken.symbol\n );\n setTxBusy(false);\n onClose();\n goToPage.portfolio();\n await tx.wait();\n await updatePortfolioData(dispatch);\n } catch (e: any) {\n console.error('failed to deposit', e);\n onClose();\n setTxBusy(false);\n if (e.code === ErrorCode.DeniedTx) {\n rejectNotification(dispatch);\n }\n }\n };\n\n const [onStart, ApproveModal] = useApproveModal(\n [{ amount: amount || '0', token: pool.reserveToken }],\n deposit,\n accessFullEarnings && pool.latestProgram\n ? ContractsApi.StandardRewards.contractAddress\n : ContractsApi.BancorNetwork.contractAddress\n );\n\n const shouldConnect = useMemo(() => !account && amount, [account, amount]);\n const canDeposit = useMemo(\n () => !!account && !!amount && +amount > 0 && !isInputError && !txBusy,\n [account, amount, isInputError, txBusy]\n );\n\n const handleClick = useCallback(() => {\n if (canDeposit) {\n onStart();\n } else if (shouldConnect) {\n handleWalletButtonClick();\n }\n }, [canDeposit, onStart, shouldConnect, handleWalletButtonClick]);\n\n const shouldPollForGasPrice = useMemo(() => {\n return !!amount && !txBusy && accessFullEarnings && !!eth;\n }, [accessFullEarnings, amount, eth, txBusy]);\n\n const updateExtraGasCost = useCallback(async () => {\n if (!isOpen) return;\n if (accessFullEarnings && eth) {\n const gasPrice = toBigNumber(await web3.provider.getGasPrice());\n const extraGasCostUSD = shrinkToken(\n gasPrice.times(REWARDS_EXTRA_GAS).times(eth.usdPrice),\n eth.decimals\n );\n\n setExtraGasNeeded(extraGasCostUSD);\n } else {\n setExtraGasNeeded('0');\n }\n }, [accessFullEarnings, eth, isOpen]);\n\n useConditionalInterval(shouldPollForGasPrice, updateExtraGasCost, 13000);\n\n return (\n <>\n {renderButton(() => setIsOpen(true))}\n }\n separator\n large\n >\n
\n \n\n {pool.latestProgram ? (\n (\n
\n
\n
\n
\n Join rewards program\n {/* we wrap with this span so that toggling won't expand the whole section */}\n e.stopPropagation()}>\n \n setAccessFullEarnings((prev) => !prev)\n }\n />\n \n
\n
\n
\n \n {accessFullEarnings\n ? pool.apr.total.toFixed(2)\n : pool.apr.tradingFees.toFixed(2)}\n %\n \n \n
\n
\n
\n Additional gas {prettifyNumber(extraGasNeeded, true)}\n
\n
\n )}\n >\n
\n
\n \n Compounding rewards{' '}\n \n {pool.reserveToken.symbol}\n \n \n {pool.apr.tradingFees.toFixed(2)}%\n
\n
\n \n Standard rewards{' '}\n \n {poolV3Map.get(pool.latestProgram.rewardsToken)\n ?.reserveToken.symbol ?? ''}\n \n \n \n {accessFullEarnings\n ? pool.apr.standardRewards.toFixed(2)\n : 0}\n %\n \n
\n
\n \n ) : (\n
\n \n Compounding rewards{' '}\n \n {pool.reserveToken.symbol}\n \n \n {pool.apr.tradingFees.toFixed(2)}%\n
\n )}\n\n \n {txBusy\n ? '... waiting for confirmation'\n : shouldConnect\n ? 'Connect your wallet'\n : canDeposit\n ? `Deposit ${pool.name}`\n : 'Enter amount'}\n \n \n {ApproveModal}\n
\n \n \n );\n};\n","import { useEffect, useRef } from 'react';\n\n/**\n * Start or stop an interval that fires a callback.\n * Callback will be called immediately when a condition change leads to interval start or stop.\n * @function useConditionalInterval\n * @param {boolean} condition - (must be memoized) only when this condition is true, the interval will be started\n * - (and stopped as part of destory when condition changes)\n * @param {function} callback - (must be memoized) the callback to be called\n * @param {number} timeout - the delay between calls\n */\nexport const useConditionalInterval = (\n condition: boolean,\n callback: Function,\n timeout: number\n) => {\n const interval = useRef(null);\n\n useEffect(() => {\n if (condition) {\n if (!interval.current) {\n interval.current = window.setInterval(callback, timeout);\n callback();\n }\n } else {\n callback();\n }\n return () => {\n if (interval.current) {\n window.clearInterval(interval.current);\n interval.current = null;\n }\n };\n }, [condition, callback, timeout]);\n};\n","import { TokenBalance } from 'components/tokenBalance/TokenBalance';\nimport { Navigation } from 'swiper';\nimport { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';\nimport 'swiper/swiper.min.css';\nimport { NavigationOptions } from 'swiper/types';\nimport { ReactComponent as IconArrow } from 'assets/icons/arrow.svg';\nimport { useAppSelector } from 'store';\nimport { getAvailableToStakeTokens } from 'store/bancor/token';\nimport { Token } from 'services/observables/tokens';\nimport { PoolV3 } from 'services/observables/pools';\nimport { DepositV3Modal } from 'elements/earn/pools/poolsTable/v3/DepositV3Modal';\n\nconst AvailableItem = ({ token, pool }: { token: Token; pool: PoolV3 }) => {\n return (\n (\n \n \n
\n
Earn
\n
\n {pool.apr.total.toFixed(2)}%\n \n
\n
\n \n )}\n />\n );\n};\n\nconst navOptions: NavigationOptions = {\n nextEl: '.swiper-next-btn',\n prevEl: '.swiper-prev-btn',\n disabledClass:\n 'cursor-not-allowed text-secondary disabled:hover:text-secondary',\n};\n\nexport const V3AvailableToStake = () => {\n const availabelToStake = useAppSelector(getAvailableToStakeTokens);\n\n return (\n
\n
\n

\n Deposit & Earn{' '}\n \n ({availabelToStake.length})\n \n

\n
\n \n \n
\n
\n\n \n {availabelToStake.map((item, i) => (\n \n \n \n ))}\n \n
\n );\n};\n","import { useAppSelector } from 'store';\nimport { useDispatch } from 'react-redux';\nimport {\n getIsLoadingStandardRewards,\n getStandardRewards,\n openBonusesModal,\n} from 'store/portfolio/v3Portfolio';\nimport { useCallback, useMemo } from 'react';\nimport BigNumber from 'bignumber.js';\nimport { shrinkToken } from 'utils/formulas';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\nimport {\n confirmClaimNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { ErrorCode } from 'services/web3/types';\n\nexport const useV3Bonuses = () => {\n const account = useAppSelector((state) => state.user.account);\n const dispatch = useDispatch();\n const isBonusModalOpen = useAppSelector(\n (state) => state.v3Portfolio.bonusesModal\n );\n const bonuses = useAppSelector(getStandardRewards);\n const isLoading = useAppSelector(getIsLoadingStandardRewards);\n\n const setBonusModalOpen = useCallback(\n (state: boolean) => {\n dispatch(openBonusesModal(state));\n },\n [dispatch]\n );\n\n const bonusUsdTotal = useMemo(\n () =>\n bonuses.reduce((acc, group) => {\n const usdPrice = group.groupPool.reserveToken.usdPrice;\n const usdAmount = new BigNumber(\n shrinkToken(group.totalPendingRewards, group.groupPool.decimals)\n ).times(usdPrice);\n return usdAmount.plus(acc).toNumber();\n }, 0),\n [bonuses]\n );\n\n const handleClaim = useCallback(\n async (ids: string[]) => {\n if (!account) {\n console.error('No account, please connect wallet');\n return;\n }\n try {\n const tx = await ContractsApi.StandardRewards.write.claimRewards(ids);\n confirmClaimNotification(dispatch, tx.hash);\n setBonusModalOpen(false);\n await tx.wait();\n await updatePortfolioData(dispatch);\n } catch (e: any) {\n console.error('failed to claim rewards', e);\n if (e.code === ErrorCode.DeniedTx) {\n rejectNotification(dispatch);\n }\n setBonusModalOpen(false);\n }\n },\n [account, dispatch, setBonusModalOpen]\n );\n\n const handleClaimAndEarn = useCallback(\n async (ids: string[]) => {\n if (!account) {\n console.error('No account, please connect wallet');\n return;\n }\n try {\n const tx = await ContractsApi.StandardRewards.write.stakeRewards(ids);\n confirmClaimNotification(dispatch, tx.hash);\n setBonusModalOpen(false);\n await tx.wait();\n await updatePortfolioData(dispatch);\n } catch (e: any) {\n console.error('failed to restake rewards', e);\n if (e.code === ErrorCode.DeniedTx) {\n rejectNotification(dispatch);\n }\n setBonusModalOpen(false);\n }\n },\n [account, dispatch, setBonusModalOpen]\n );\n\n return {\n bonuses,\n isBonusModalOpen,\n setBonusModalOpen,\n handleClaim,\n handleClaimAndEarn,\n bonusUsdTotal,\n isLoading,\n };\n};\n","import { Token, TokenMinimal } from 'services/observables/tokens';\nimport { Reserve } from 'services/observables/pools';\nimport { Image } from 'components/image/Image';\n\nexport const TokensOverlap = ({\n tokens,\n maxLogos = 4,\n}: {\n tokens: Token[] | Reserve[] | TokenMinimal[];\n maxLogos?: number;\n}) => {\n const tokenCount = tokens.length;\n\n return (\n
\n {tokens.slice(0, maxLogos).map((token, idx) => (\n 1 ? `${'-10'}px` : '0px',\n }}\n />\n ))}\n {tokenCount > maxLogos && (\n \n +{tokenCount - maxLogos}\n
\n )}\n \n );\n};\n","import { useV3Bonuses } from 'elements/earn/portfolio/v3/bonuses/useV3Bonuses';\nimport { ButtonSize } from 'components/button/Button';\nimport { Button, ButtonVariant } from 'components/button/Button';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { GroupedStandardReward } from 'store/portfolio/v3Portfolio';\nimport { shrinkToken } from 'utils/formulas';\nimport { Modal } from 'components/modal/Modal';\nimport { useCallback, useMemo, useState } from 'react';\nimport { TokensOverlap } from 'components/tokensOverlap/TokensOverlap';\nimport { ReactComponent as IconCheck } from 'assets/icons/check.svg';\nimport { ReactComponent as IconChevron } from 'assets/icons/chevronDown.svg';\nimport BigNumber from 'bignumber.js';\nimport { ExpandableSection } from 'components/expandableSection/ExpandableSection';\nimport { Image } from 'components/image/Image';\n\nconst BonusGroupItems = ({\n rewardsGroup,\n setSelectedIds,\n selectedIds,\n}: {\n rewardsGroup: GroupedStandardReward;\n selectedIds: string[];\n setSelectedIds: (ids: string[]) => void;\n}) => {\n const addOrRemove = (id: string) => {\n const exists = selectedIds.includes(id);\n\n if (exists) {\n const ids = selectedIds.filter((idx) => idx !== id);\n setSelectedIds(ids);\n } else {\n setSelectedIds([...selectedIds, id]);\n }\n };\n\n return (\n
\n
\n Bonus\n From\n
\n {rewardsGroup.rewards.map((reward) => {\n const isSelected = selectedIds.includes(reward.id);\n return (\n addOrRemove(reward.id)}\n >\n
\n
\n \n {isSelected && }\n
\n \n {prettifyNumber(\n shrinkToken(\n reward.pendingRewardsWei,\n rewardsGroup.groupPool.decimals\n )\n )}{' '}\n {reward.rewardsToken.symbol}\n
\n\n
\n \n {reward.programPool.reserveToken.symbol}\n
\n
\n \n );\n })}\n \n );\n};\n\nconst BonusGroup = ({\n rewardsGroup,\n}: {\n rewardsGroup: GroupedStandardReward;\n}) => {\n const { handleClaim, handleClaimAndEarn } = useV3Bonuses();\n const { groupPool } = rewardsGroup;\n const allTokens = rewardsGroup.rewards.map(\n (reward) => reward.programPool.reserveToken\n );\n const allIds: string[] = rewardsGroup.rewards.map((reward) => reward.id);\n const [selectedIds, setSelectedIds] = useState(allIds);\n const [isTxClaimBusy, setIsTxClaimBusy] = useState(false);\n\n const bntDisabled = selectedIds.length === 0 || isTxClaimBusy;\n\n const onClaimClick = useCallback(async () => {\n setIsTxClaimBusy(true);\n await handleClaim(selectedIds);\n setIsTxClaimBusy(false);\n }, [handleClaim, selectedIds]);\n\n const onRestakeClick = useCallback(async () => {\n setIsTxClaimBusy(true);\n await handleClaimAndEarn(selectedIds);\n setIsTxClaimBusy(false);\n }, [handleClaimAndEarn, selectedIds]);\n const amount = shrinkToken(\n rewardsGroup.totalPendingRewards,\n groupPool.decimals\n );\n const usdAmount = useMemo(\n () =>\n new BigNumber(amount).times(rewardsGroup.groupPool.reserveToken.usdPrice),\n [amount, rewardsGroup.groupPool.reserveToken.usdPrice]\n );\n\n return (\n
\n
\n
\n
\n \n {groupPool.reserveToken.symbol}\n
\n\n
\n
\n {prettifyNumber(amount)}\n
\n
\n {prettifyNumber(usdAmount, true)}\n
\n
\n
\n
\n (\n <>\n
Explore Rewards
\n
\n {!isExpanded && (\n
\n \n
\n )}\n \n
\n \n )}\n >\n \n \n
\n \n Claim\n \n \n Claim {groupPool.reserveToken.symbol} {'&'} Earn{' '}\n {groupPool.apr.total.toFixed(2)}%\n \n
\n
\n );\n};\n\nexport const V3BonusesModal = () => {\n const { bonuses, isBonusModalOpen, setBonusModalOpen } = useV3Bonuses();\n\n return (\n \n
\n {bonuses.map((group) => (\n
\n \n
\n ))}\n
\n \n );\n};\n","import { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { V3BonusesModal } from 'elements/earn/portfolio/v3/bonuses/V3BonusesModal';\nimport { useV3Bonuses } from 'elements/earn/portfolio/v3/bonuses/useV3Bonuses';\nimport { prettifyNumber } from 'utils/helperFunctions';\n\nexport const V3ClaimBonuses = () => {\n const { setBonusModalOpen, bonusUsdTotal, isLoading } = useV3Bonuses();\n\n return (\n <>\n
\n \n {isLoading ? (\n
\n ) : bonusUsdTotal > 0 ? (\n
\n \n {prettifyNumber(bonusUsdTotal, true)}\n \n setBonusModalOpen(true)}\n disabled={bonusUsdTotal === 0}\n >\n Claim\n \n
\n ) : (\n
\n $0\n
\n )}\n
\n \n \n );\n};\n","var _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDottedSync(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 23,\n height: 24,\n viewBox: \"0 0 23 24\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.8 0.147949V8.19795L17.3915 4.60645C19.4047 6.29216 20.7 8.80816 20.7 11.6479V12.7979H23V11.6479C23 8.18629 21.4494 5.08859 19.0199 2.97803L21.85 0.147949H13.8ZM0 10.4979V11.6479C0 15.1096 1.55059 18.2073 3.98008 20.3179L1.15 23.1479H9.2V15.0979L5.6085 18.6895C3.59532 17.0037 2.3 14.4877 2.3 11.6479V10.4979H0Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.7551 2.2623L6.74514 1.1123L7.89514 3.10459L5.9051 4.25459L4.7551 2.2623Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.965942 6.8915L2.11594 4.90146L4.10823 6.05146L2.95823 8.0415L0.965942 6.8915Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.892 17.2415L20.042 15.2492L22.0343 16.3992L20.8843 18.3915L18.892 17.2415Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.1051 20.1884L17.0951 19.0384L18.2451 21.0307L16.2551 22.1807L15.1051 20.1884Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDottedSync);\nexport default __webpack_public_path__ + \"static/media/dottedSync.1a2e0774.svg\";\nexport { ForwardRef as ReactComponent };","var _circle, _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBancorOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 23,\n height: 23,\n viewBox: \"0 0 23 23\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 11.5,\n cy: 11.5,\n r: 11.5,\n fill: \"currentColor\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.2381 4L7.50195 6.15905L11.2381 8.32885L14.9741 6.15905L11.2381 4Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 11.3386L10.7274 13.4903V9.18194L7 7.03027V11.3386Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 16.8095L10.7274 18.9612V14.6528L7 12.5015V16.8095Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.4759 11.3386L11.7485 13.4903V9.18194L15.4759 7.03027V11.3386Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9999 11.6216V15.9302L11.7489 18.9611V14.6528L16.9999 11.6216Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBancorOutline);\nexport default __webpack_public_path__ + \"static/media/bancorOutline.2bcab1d6.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgProtectLight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 27,\n viewBox: \"0 0 21 27\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.4333 0.612488L0.375977 6.4234C0.375977 6.4234 0.375977 10.8933 0.375977 13.1283C0.375977 21.8782 7.57145 25.9637 10.4333 26.5381C13.2952 25.9637 20.4907 21.8782 20.4907 13.1283C20.4907 10.8933 20.4907 6.4234 20.4907 6.4234L10.4333 0.612488ZM9.31584 19.1784L4.63918 14.5017L6.2193 12.9216L9.31584 16.0181L15.7883 9.54565L17.3684 11.1258L9.31584 19.1784Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.31584 19.1784L4.63918 14.5017L6.2193 12.9216L9.31584 16.0181L15.7883 9.54565L17.3684 11.1258L9.31584 19.1784Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.6667 6.66669L6 15.3334H10V21.3334L14.6667 12.6667H10.6667V6.66669Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgProtectLight);\nexport default __webpack_public_path__ + \"static/media/protectLight.d5990f17.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _rect2, _path9, _path10, _path11, _path12, _path13;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgHoldingsLight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 750,\n height: 345,\n viewBox: \"0 0 750 345\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 750,\n height: 345,\n rx: 10,\n fill: \"white\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.112 308.06H24.554L27.9 315.97L31.26 308.06H32.674L28.446 318H27.354L23.112 308.06ZM36.0004 318.14C35.5058 318.14 35.0484 318.047 34.6284 317.86C34.2178 317.664 33.8584 317.403 33.5504 317.076C33.2424 316.74 32.9998 316.353 32.8224 315.914C32.6544 315.475 32.5704 315.004 32.5704 314.5C32.5704 313.996 32.6544 313.525 32.8224 313.086C32.9998 312.647 33.2424 312.265 33.5504 311.938C33.8584 311.602 34.2178 311.341 34.6284 311.154C35.0484 310.958 35.5058 310.86 36.0004 310.86C36.5324 310.86 37.0178 310.981 37.4564 311.224C37.8951 311.457 38.2311 311.742 38.4644 312.078V311H39.6684V318H38.4644V316.922C38.2311 317.258 37.8951 317.547 37.4564 317.79C37.0178 318.023 36.5324 318.14 36.0004 318.14ZM36.1824 317.034C36.5371 317.034 36.8591 316.969 37.1484 316.838C37.4378 316.707 37.6851 316.53 37.8904 316.306C38.1051 316.073 38.2684 315.802 38.3804 315.494C38.5018 315.186 38.5624 314.855 38.5624 314.5C38.5624 314.145 38.5018 313.814 38.3804 313.506C38.2684 313.198 38.1051 312.932 37.8904 312.708C37.6851 312.475 37.4378 312.293 37.1484 312.162C36.8591 312.031 36.5371 311.966 36.1824 311.966C35.8278 311.966 35.5011 312.031 35.2024 312.162C34.9131 312.293 34.6611 312.475 34.4464 312.708C34.2411 312.932 34.0778 313.198 33.9564 313.506C33.8444 313.814 33.7884 314.145 33.7884 314.5C33.7884 314.855 33.8444 315.186 33.9564 315.494C34.0778 315.802 34.2411 316.073 34.4464 316.306C34.6611 316.53 34.9131 316.707 35.2024 316.838C35.5011 316.969 35.8278 317.034 36.1824 317.034ZM41.9348 307.5H43.1388V318H41.9348V307.5ZM47.8991 318.14C47.5164 318.14 47.1664 318.075 46.8491 317.944C46.5318 317.804 46.2611 317.613 46.0371 317.37C45.8131 317.127 45.6358 316.833 45.5051 316.488C45.3838 316.133 45.3231 315.737 45.3231 315.298V311H46.5271V315.116C46.5271 315.704 46.6671 316.171 46.9471 316.516C47.2364 316.861 47.6238 317.034 48.1091 317.034C48.3798 317.034 48.6318 316.978 48.8651 316.866C49.1078 316.745 49.3131 316.577 49.4811 316.362C49.6584 316.138 49.7984 315.867 49.9011 315.55C50.0038 315.233 50.0551 314.873 50.0551 314.472V311H51.2591V318H50.0551V316.922C49.8218 317.333 49.5138 317.641 49.1311 317.846C48.7578 318.042 48.3471 318.14 47.8991 318.14ZM56.5105 318.14C55.9972 318.14 55.5259 318.051 55.0965 317.874C54.6672 317.687 54.2939 317.431 53.9765 317.104C53.6685 316.777 53.4259 316.395 53.2485 315.956C53.0712 315.508 52.9825 315.023 52.9825 314.5C52.9825 313.987 53.0619 313.511 53.2205 313.072C53.3885 312.624 53.6265 312.237 53.9345 311.91C54.2425 311.583 54.6159 311.327 55.0545 311.14C55.4932 310.953 55.9879 310.86 56.5385 310.86C57.0892 310.86 57.5792 310.967 58.0085 311.182C58.4472 311.387 58.8112 311.672 59.1005 312.036C59.3992 312.391 59.6139 312.811 59.7445 313.296C59.8845 313.772 59.9359 314.281 59.8985 314.822H54.2005C54.2099 315.139 54.2752 315.433 54.3965 315.704C54.5272 315.975 54.6952 316.213 54.9005 316.418C55.1059 316.614 55.3485 316.768 55.6285 316.88C55.9085 316.992 56.2072 317.048 56.5245 317.048C56.9632 317.048 57.3552 316.959 57.7005 316.782C58.0552 316.595 58.3399 316.292 58.5545 315.872H59.7865C59.7025 316.18 59.5672 316.474 59.3805 316.754C59.1939 317.025 58.9605 317.263 58.6805 317.468C58.4099 317.673 58.0925 317.837 57.7285 317.958C57.3645 318.079 56.9585 318.14 56.5105 318.14ZM56.4965 311.924C56.2445 311.924 55.9972 311.961 55.7545 312.036C55.5119 312.111 55.2879 312.227 55.0825 312.386C54.8865 312.545 54.7139 312.745 54.5645 312.988C54.4152 313.231 54.3125 313.525 54.2565 313.87H58.6245C58.5125 313.217 58.2605 312.731 57.8685 312.414C57.4765 312.087 57.0192 311.924 56.4965 311.924Z\",\n fill: \"#10BBD5\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6485 311H64.9925L67.3865 316.306L69.7805 311H71.1245L67.8905 318H66.8825L63.6485 311ZM74.513 318.14C74.1397 318.14 73.785 318.093 73.449 318C73.113 317.907 72.819 317.771 72.567 317.594C72.315 317.407 72.1097 317.179 71.951 316.908C71.7923 316.637 71.699 316.325 71.671 315.97H72.903C72.9403 316.185 73.0103 316.367 73.113 316.516C73.225 316.656 73.3557 316.773 73.505 316.866C73.6543 316.959 73.813 317.025 73.981 317.062C74.1583 317.099 74.3403 317.118 74.527 317.118C74.9097 317.118 75.227 317.043 75.479 316.894C75.7403 316.735 75.871 316.502 75.871 316.194C75.871 315.914 75.7823 315.685 75.605 315.508C75.4277 315.331 75.129 315.186 74.709 315.074L73.701 314.808C73.0943 314.649 72.6417 314.393 72.343 314.038C72.0443 313.683 71.895 313.254 71.895 312.75C71.895 312.461 71.9557 312.199 72.077 311.966C72.1983 311.733 72.3663 311.537 72.581 311.378C72.7957 311.21 73.0477 311.084 73.337 311C73.6357 310.907 73.9623 310.86 74.317 310.86C74.6903 310.86 75.0263 310.911 75.325 311.014C75.6237 311.117 75.8803 311.261 76.095 311.448C76.319 311.625 76.4963 311.835 76.627 312.078C76.7577 312.321 76.837 312.582 76.865 312.862H75.661C75.5677 312.554 75.3997 312.311 75.157 312.134C74.9237 311.957 74.6437 311.868 74.317 311.868C73.981 311.868 73.6963 311.947 73.463 312.106C73.2297 312.255 73.113 312.465 73.113 312.736C73.113 312.997 73.197 313.207 73.365 313.366C73.533 313.515 73.8037 313.641 74.177 313.744L75.297 314.038C75.885 314.187 76.3283 314.439 76.627 314.794C76.935 315.139 77.089 315.578 77.089 316.11C77.089 316.455 77.0237 316.759 76.893 317.02C76.7623 317.272 76.5803 317.482 76.347 317.65C76.1137 317.818 75.8383 317.939 75.521 318.014C75.213 318.098 74.877 318.14 74.513 318.14ZM82.3531 308.06H83.6551V312.302H89.1011V308.06H90.4031V318H89.1011V313.52H83.6551V318H82.3531V308.06ZM97.4828 316.936C98.0242 316.936 98.5282 316.838 98.9948 316.642C99.4708 316.437 99.8768 316.157 100.213 315.802C100.558 315.447 100.829 315.037 101.025 314.57C101.221 314.094 101.319 313.581 101.319 313.03C101.319 312.489 101.221 311.98 101.025 311.504C100.829 311.028 100.558 310.613 100.213 310.258C99.8768 309.903 99.4708 309.628 98.9948 309.432C98.5282 309.227 98.0242 309.124 97.4828 309.124C96.9415 309.124 96.4375 309.227 95.9708 309.432C95.5042 309.628 95.0982 309.903 94.7528 310.258C94.4168 310.613 94.1508 311.028 93.9548 311.504C93.7588 311.98 93.6608 312.489 93.6608 313.03C93.6608 313.581 93.7588 314.094 93.9548 314.57C94.1508 315.037 94.4168 315.447 94.7528 315.802C95.0982 316.157 95.5042 316.437 95.9708 316.642C96.4375 316.838 96.9415 316.936 97.4828 316.936ZM97.4828 318.168C96.7642 318.168 96.0922 318.037 95.4668 317.776C94.8508 317.505 94.3095 317.141 93.8428 316.684C93.3762 316.217 93.0075 315.671 92.7368 315.046C92.4755 314.421 92.3448 313.749 92.3448 313.03C92.3448 312.311 92.4755 311.639 92.7368 311.014C93.0075 310.389 93.3762 309.847 93.8428 309.39C94.3095 308.923 94.8508 308.559 95.4668 308.298C96.0922 308.027 96.7642 307.892 97.4828 307.892C98.2015 307.892 98.8735 308.027 99.4988 308.298C100.124 308.559 100.666 308.923 101.123 309.39C101.59 309.847 101.954 310.389 102.215 311.014C102.486 311.639 102.621 312.311 102.621 313.03C102.621 313.749 102.486 314.421 102.215 315.046C101.954 315.671 101.59 316.217 101.123 316.684C100.666 317.141 100.124 317.505 99.4988 317.776C98.8735 318.037 98.2015 318.168 97.4828 318.168ZM104.584 308.06H107.44C108.205 308.06 108.91 308.186 109.554 308.438C110.198 308.69 110.753 309.04 111.22 309.488C111.696 309.927 112.064 310.449 112.326 311.056C112.596 311.663 112.732 312.321 112.732 313.03C112.732 313.739 112.596 314.397 112.326 315.004C112.064 315.611 111.696 316.138 111.22 316.586C110.753 317.025 110.198 317.37 109.554 317.622C108.91 317.874 108.205 318 107.44 318H104.584V308.06ZM107.44 316.782C108.037 316.782 108.578 316.689 109.064 316.502C109.558 316.315 109.978 316.054 110.324 315.718C110.669 315.382 110.935 314.985 111.122 314.528C111.318 314.071 111.416 313.571 111.416 313.03C111.416 312.489 111.318 311.989 111.122 311.532C110.935 311.075 110.669 310.678 110.324 310.342C109.978 310.006 109.558 309.745 109.064 309.558C108.578 309.371 108.037 309.278 107.44 309.278H105.886V316.782H107.44ZM114.673 308.06H115.975V316.768H120.777V318H114.673V308.06Z\",\n fill: \"#18181A\",\n fillOpacity: 0.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.11 74.24C29.33 74.16 28.59 73.97 27.89 73.67C27.21 73.37 26.61 72.96 26.09 72.44C25.57 71.92 25.15 71.29 24.83 70.55C24.53 69.81 24.37 68.96 24.35 68H26.93C27.07 69.12 27.42 69.98 27.98 70.58C28.54 71.18 29.25 71.56 30.11 71.72V64.25L29.09 63.86C27.49 63.22 26.32 62.4 25.58 61.4C24.84 60.38 24.47 59.18 24.47 57.8C24.47 56.98 24.61 56.25 24.89 55.61C25.19 54.95 25.59 54.39 26.09 53.93C26.61 53.47 27.21 53.11 27.89 52.85C28.59 52.59 29.33 52.43 30.11 52.37V50.06H31.73V52.43C32.39 52.53 33.03 52.72 33.65 53C34.27 53.26 34.81 53.62 35.27 54.08C35.75 54.52 36.13 55.05 36.41 55.67C36.71 56.29 36.86 56.99 36.86 57.77H34.28C34.16 57.03 33.88 56.42 33.44 55.94C33 55.44 32.43 55.11 31.73 54.95V61.97L32.48 62.27C34.06 62.91 35.26 63.73 36.08 64.73C36.92 65.71 37.34 66.97 37.34 68.51C37.34 69.43 37.19 70.24 36.89 70.94C36.61 71.62 36.22 72.2 35.72 72.68C35.22 73.16 34.63 73.53 33.95 73.79C33.27 74.05 32.53 74.21 31.73 74.27V76.64H30.11V74.24ZM34.76 68.69C34.76 67.73 34.5 66.97 33.98 66.41C33.46 65.83 32.71 65.33 31.73 64.91V71.78C32.57 71.68 33.28 71.35 33.86 70.79C34.46 70.23 34.76 69.53 34.76 68.69ZM27.05 57.8C27.05 58.62 27.29 59.3 27.77 59.84C28.25 60.38 29.03 60.88 30.11 61.34V54.86C29.15 54.96 28.4 55.28 27.86 55.82C27.32 56.36 27.05 57.02 27.05 57.8ZM43.0238 55.25H38.9138L41.0138 52.7H45.6038V74H43.0238V55.25ZM57.7597 74.3C56.6597 74.3 55.6497 74.11 54.7297 73.73C53.8097 73.33 53.0097 72.78 52.3297 72.08C51.6697 71.38 51.1497 70.54 50.7697 69.56C50.4097 68.56 50.2297 67.47 50.2297 66.29V60.35C50.2297 59.17 50.4097 58.09 50.7697 57.11C51.1497 56.13 51.6697 55.29 52.3297 54.59C53.0097 53.87 53.8097 53.32 54.7297 52.94C55.6497 52.54 56.6597 52.34 57.7597 52.34C58.8597 52.34 59.8697 52.54 60.7897 52.94C61.7097 53.32 62.4997 53.87 63.1597 54.59C63.8397 55.29 64.3697 56.13 64.7497 57.11C65.1297 58.09 65.3197 59.17 65.3197 60.35V66.29C65.3197 67.47 65.1297 68.56 64.7497 69.56C64.3697 70.54 63.8397 71.38 63.1597 72.08C62.4997 72.78 61.7097 73.33 60.7897 73.73C59.8697 74.11 58.8597 74.3 57.7597 74.3ZM57.7597 71.78C59.2197 71.78 60.4097 71.3 61.3297 70.34C62.2697 69.38 62.7397 68.03 62.7397 66.29V60.35C62.7397 58.61 62.2697 57.26 61.3297 56.3C60.4097 55.34 59.2197 54.86 57.7597 54.86C57.0397 54.86 56.3697 54.99 55.7497 55.25C55.1497 55.49 54.6297 55.85 54.1897 56.33C53.7697 56.79 53.4297 57.36 53.1697 58.04C52.9297 58.72 52.8097 59.49 52.8097 60.35V66.29C52.8097 67.15 52.9297 67.92 53.1697 68.6C53.4297 69.28 53.7697 69.86 54.1897 70.34C54.6297 70.8 55.1497 71.16 55.7497 71.42C56.3697 71.66 57.0397 71.78 57.7597 71.78ZM76.4511 74.3C75.3511 74.3 74.3411 74.11 73.4211 73.73C72.5011 73.33 71.7011 72.78 71.0211 72.08C70.3611 71.38 69.8411 70.54 69.4611 69.56C69.1011 68.56 68.9211 67.47 68.9211 66.29V60.35C68.9211 59.17 69.1011 58.09 69.4611 57.11C69.8411 56.13 70.3611 55.29 71.0211 54.59C71.7011 53.87 72.5011 53.32 73.4211 52.94C74.3411 52.54 75.3511 52.34 76.4511 52.34C77.5511 52.34 78.5611 52.54 79.4811 52.94C80.4011 53.32 81.1911 53.87 81.8511 54.59C82.5311 55.29 83.0611 56.13 83.4411 57.11C83.8211 58.09 84.0111 59.17 84.0111 60.35V66.29C84.0111 67.47 83.8211 68.56 83.4411 69.56C83.0611 70.54 82.5311 71.38 81.8511 72.08C81.1911 72.78 80.4011 73.33 79.4811 73.73C78.5611 74.11 77.5511 74.3 76.4511 74.3ZM76.4511 71.78C77.9111 71.78 79.1011 71.3 80.0211 70.34C80.9611 69.38 81.4311 68.03 81.4311 66.29V60.35C81.4311 58.61 80.9611 57.26 80.0211 56.3C79.1011 55.34 77.9111 54.86 76.4511 54.86C75.7311 54.86 75.0611 54.99 74.4411 55.25C73.8411 55.49 73.3211 55.85 72.8811 56.33C72.4611 56.79 72.1211 57.36 71.8611 58.04C71.6211 58.72 71.5011 59.49 71.5011 60.35V66.29C71.5011 67.15 71.6211 67.92 71.8611 68.6C72.1211 69.28 72.4611 69.86 72.8811 70.34C73.3211 70.8 73.8411 71.16 74.4411 71.42C75.0611 71.66 75.7311 71.78 76.4511 71.78ZM87.8938 78.29H86.1838L88.1938 74C87.8338 73.82 87.5338 73.56 87.2938 73.22C87.0738 72.86 86.9638 72.45 86.9638 71.99C86.9638 71.39 87.1738 70.87 87.5938 70.43C88.0338 69.97 88.5638 69.74 89.1838 69.74C89.8038 69.74 90.3238 69.97 90.7438 70.43C91.1838 70.87 91.4038 71.39 91.4038 71.99C91.4038 72.25 91.3638 72.49 91.2838 72.71C91.2038 72.93 91.1038 73.14 90.9838 73.34L87.8938 78.29ZM101.881 74.3C100.781 74.3 99.7708 74.11 98.8508 73.73C97.9308 73.33 97.1308 72.78 96.4508 72.08C95.7908 71.38 95.2708 70.54 94.8908 69.56C94.5308 68.56 94.3508 67.47 94.3508 66.29V60.35C94.3508 59.17 94.5308 58.09 94.8908 57.11C95.2708 56.13 95.7908 55.29 96.4508 54.59C97.1308 53.87 97.9308 53.32 98.8508 52.94C99.7708 52.54 100.781 52.34 101.881 52.34C102.981 52.34 103.991 52.54 104.911 52.94C105.831 53.32 106.621 53.87 107.281 54.59C107.961 55.29 108.491 56.13 108.871 57.11C109.251 58.09 109.441 59.17 109.441 60.35V66.29C109.441 67.47 109.251 68.56 108.871 69.56C108.491 70.54 107.961 71.38 107.281 72.08C106.621 72.78 105.831 73.33 104.911 73.73C103.991 74.11 102.981 74.3 101.881 74.3ZM101.881 71.78C103.341 71.78 104.531 71.3 105.451 70.34C106.391 69.38 106.861 68.03 106.861 66.29V60.35C106.861 58.61 106.391 57.26 105.451 56.3C104.531 55.34 103.341 54.86 101.881 54.86C101.161 54.86 100.491 54.99 99.8708 55.25C99.2708 55.49 98.7508 55.85 98.3108 56.33C97.8908 56.79 97.5508 57.36 97.2908 58.04C97.0508 58.72 96.9308 59.49 96.9308 60.35V66.29C96.9308 67.15 97.0508 67.92 97.2908 68.6C97.5508 69.28 97.8908 69.86 98.3108 70.34C98.7508 70.8 99.2708 71.16 99.8708 71.42C100.491 71.66 101.161 71.78 101.881 71.78ZM120.572 74.3C119.472 74.3 118.462 74.11 117.542 73.73C116.622 73.33 115.822 72.78 115.142 72.08C114.482 71.38 113.962 70.54 113.582 69.56C113.222 68.56 113.042 67.47 113.042 66.29V60.35C113.042 59.17 113.222 58.09 113.582 57.11C113.962 56.13 114.482 55.29 115.142 54.59C115.822 53.87 116.622 53.32 117.542 52.94C118.462 52.54 119.472 52.34 120.572 52.34C121.672 52.34 122.682 52.54 123.602 52.94C124.522 53.32 125.312 53.87 125.972 54.59C126.652 55.29 127.182 56.13 127.562 57.11C127.942 58.09 128.132 59.17 128.132 60.35V66.29C128.132 67.47 127.942 68.56 127.562 69.56C127.182 70.54 126.652 71.38 125.972 72.08C125.312 72.78 124.522 73.33 123.602 73.73C122.682 74.11 121.672 74.3 120.572 74.3ZM120.572 71.78C122.032 71.78 123.222 71.3 124.142 70.34C125.082 69.38 125.552 68.03 125.552 66.29V60.35C125.552 58.61 125.082 57.26 124.142 56.3C123.222 55.34 122.032 54.86 120.572 54.86C119.852 54.86 119.182 54.99 118.562 55.25C117.962 55.49 117.442 55.85 117.002 56.33C116.582 56.79 116.242 57.36 115.982 58.04C115.742 58.72 115.622 59.49 115.622 60.35V66.29C115.622 67.15 115.742 67.92 115.982 68.6C116.242 69.28 116.582 69.86 117.002 70.34C117.442 70.8 117.962 71.16 118.562 71.42C119.182 71.66 119.852 71.78 120.572 71.78ZM139.264 74.3C138.164 74.3 137.154 74.11 136.234 73.73C135.314 73.33 134.514 72.78 133.834 72.08C133.174 71.38 132.654 70.54 132.274 69.56C131.914 68.56 131.734 67.47 131.734 66.29V60.35C131.734 59.17 131.914 58.09 132.274 57.11C132.654 56.13 133.174 55.29 133.834 54.59C134.514 53.87 135.314 53.32 136.234 52.94C137.154 52.54 138.164 52.34 139.264 52.34C140.364 52.34 141.374 52.54 142.294 52.94C143.214 53.32 144.004 53.87 144.664 54.59C145.344 55.29 145.874 56.13 146.254 57.11C146.634 58.09 146.824 59.17 146.824 60.35V66.29C146.824 67.47 146.634 68.56 146.254 69.56C145.874 70.54 145.344 71.38 144.664 72.08C144.004 72.78 143.214 73.33 142.294 73.73C141.374 74.11 140.364 74.3 139.264 74.3ZM139.264 71.78C140.724 71.78 141.914 71.3 142.834 70.34C143.774 69.38 144.244 68.03 144.244 66.29V60.35C144.244 58.61 143.774 57.26 142.834 56.3C141.914 55.34 140.724 54.86 139.264 54.86C138.544 54.86 137.874 54.99 137.254 55.25C136.654 55.49 136.134 55.85 135.694 56.33C135.274 56.79 134.934 57.36 134.674 58.04C134.434 58.72 134.314 59.49 134.314 60.35V66.29C134.314 67.15 134.434 67.92 134.674 68.6C134.934 69.28 135.274 69.86 135.694 70.34C136.134 70.8 136.654 71.16 137.254 71.42C137.874 71.66 138.544 71.78 139.264 71.78Z\",\n fill: \"#18181A\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.77 33.224C30.77 33.672 30.686 34.0873 30.518 34.47C30.3593 34.8527 30.1307 35.1887 29.832 35.478C29.5427 35.758 29.1833 35.9773 28.754 36.136C28.334 36.2947 27.8673 36.374 27.354 36.374H25.618V40H24.316V30.06H27.354C27.8673 30.06 28.334 30.144 28.754 30.312C29.1833 30.4707 29.5427 30.69 29.832 30.97C30.1307 31.25 30.3593 31.586 30.518 31.978C30.686 32.3607 30.77 32.776 30.77 33.224ZM29.482 33.224C29.482 32.944 29.4353 32.6873 29.342 32.454C29.2487 32.2207 29.1087 32.0153 28.922 31.838C28.7447 31.6607 28.5253 31.5253 28.264 31.432C28.0027 31.3293 27.6993 31.278 27.354 31.278H25.618V35.17H27.354C27.6993 35.17 28.0027 35.1233 28.264 35.03C28.5253 34.9273 28.7447 34.7873 28.922 34.61C29.1087 34.4327 29.2487 34.2273 29.342 33.994C29.4353 33.7607 29.482 33.504 29.482 33.224ZM35.2264 40.14C34.6944 40.14 34.2044 40.0467 33.7564 39.86C33.3084 39.664 32.921 39.4027 32.5944 39.076C32.2677 38.7493 32.011 38.3667 31.8244 37.928C31.647 37.48 31.5584 37.004 31.5584 36.5C31.5584 35.996 31.647 35.5247 31.8244 35.086C32.011 34.638 32.2677 34.2507 32.5944 33.924C32.921 33.5973 33.3084 33.3407 33.7564 33.154C34.2044 32.958 34.6944 32.86 35.2264 32.86C35.749 32.86 36.2344 32.958 36.6824 33.154C37.1304 33.3407 37.5177 33.5973 37.8444 33.924C38.171 34.2507 38.423 34.638 38.6004 35.086C38.787 35.5247 38.8804 35.996 38.8804 36.5C38.8804 37.004 38.787 37.48 38.6004 37.928C38.423 38.3667 38.171 38.7493 37.8444 39.076C37.5177 39.4027 37.1304 39.664 36.6824 39.86C36.2344 40.0467 35.749 40.14 35.2264 40.14ZM35.2264 39.02C35.5904 39.02 35.9217 38.9547 36.2204 38.824C36.519 38.6933 36.771 38.516 36.9764 38.292C37.191 38.0587 37.3544 37.7927 37.4664 37.494C37.5877 37.186 37.6484 36.8547 37.6484 36.5C37.6484 36.1547 37.5877 35.828 37.4664 35.52C37.3544 35.212 37.191 34.946 36.9764 34.722C36.771 34.4887 36.519 34.3067 36.2204 34.176C35.9217 34.0453 35.5904 33.98 35.2264 33.98C34.8624 33.98 34.531 34.0453 34.2324 34.176C33.9337 34.3067 33.677 34.4887 33.4624 34.722C33.2477 34.946 33.0797 35.212 32.9584 35.52C32.8464 35.828 32.7904 36.1547 32.7904 36.5C32.7904 36.8547 32.8464 37.186 32.9584 37.494C33.0797 37.7927 33.2477 38.0587 33.4624 38.292C33.677 38.516 33.9337 38.6933 34.2324 38.824C34.531 38.9547 34.8624 39.02 35.2264 39.02ZM40.6086 33H41.8126V34.358C41.8779 34.134 41.9806 33.9333 42.1206 33.756C42.2606 33.5787 42.4193 33.4293 42.5966 33.308C42.7739 33.1867 42.9606 33.0933 43.1566 33.028C43.3619 32.9627 43.5673 32.93 43.7726 32.93C43.9593 32.93 44.1413 32.9487 44.3186 32.986V34.232C44.2066 34.1853 44.0993 34.1573 43.9966 34.148C43.8939 34.1293 43.7819 34.12 43.6606 34.12C43.4366 34.12 43.2126 34.1713 42.9886 34.274C42.7739 34.3673 42.5779 34.512 42.4006 34.708C42.2326 34.904 42.0926 35.156 41.9806 35.464C41.8686 35.7627 41.8126 36.1173 41.8126 36.528V40H40.6086V33ZM48.4516 40.07C48.1436 40.07 47.8589 40.028 47.5976 39.944C47.3362 39.8507 47.1076 39.72 46.9116 39.552C46.7249 39.3747 46.5756 39.1507 46.4636 38.88C46.3609 38.6093 46.3096 38.292 46.3096 37.928V34.106H44.8256V33H46.3096V31.054H47.5136V33H49.5296V34.106H47.5136V37.774C47.5136 38.222 47.6116 38.5347 47.8076 38.712C48.0036 38.88 48.2929 38.964 48.6756 38.964C48.8249 38.964 48.9742 38.9547 49.1236 38.936C49.2822 38.908 49.4176 38.8707 49.5296 38.824V39.902C49.3802 39.9487 49.2169 39.986 49.0396 40.014C48.8622 40.0513 48.6662 40.07 48.4516 40.07ZM51.6556 34.106H50.1716V33H51.6556V31.586C51.6556 31.222 51.7069 30.9047 51.8096 30.634C51.9216 30.3633 52.0709 30.1393 52.2576 29.962C52.4536 29.7753 52.6823 29.64 52.9436 29.556C53.2049 29.4627 53.4896 29.416 53.7976 29.416C54.0123 29.416 54.2083 29.4347 54.3856 29.472C54.5629 29.5 54.7309 29.542 54.8896 29.598V30.662C54.7776 30.6153 54.6376 30.5827 54.4696 30.564C54.3109 30.536 54.1616 30.522 54.0216 30.522C53.6296 30.522 53.3356 30.6107 53.1396 30.788C52.9529 30.956 52.8596 31.264 52.8596 31.712V33H54.8896V34.106H52.8596V40H51.6556V34.106ZM59.1385 40.14C58.6065 40.14 58.1165 40.0467 57.6685 39.86C57.2205 39.664 56.8332 39.4027 56.5065 39.076C56.1798 38.7493 55.9232 38.3667 55.7365 37.928C55.5592 37.48 55.4705 37.004 55.4705 36.5C55.4705 35.996 55.5592 35.5247 55.7365 35.086C55.9232 34.638 56.1798 34.2507 56.5065 33.924C56.8332 33.5973 57.2205 33.3407 57.6685 33.154C58.1165 32.958 58.6065 32.86 59.1385 32.86C59.6612 32.86 60.1465 32.958 60.5945 33.154C61.0425 33.3407 61.4298 33.5973 61.7565 33.924C62.0832 34.2507 62.3352 34.638 62.5125 35.086C62.6992 35.5247 62.7925 35.996 62.7925 36.5C62.7925 37.004 62.6992 37.48 62.5125 37.928C62.3352 38.3667 62.0832 38.7493 61.7565 39.076C61.4298 39.4027 61.0425 39.664 60.5945 39.86C60.1465 40.0467 59.6612 40.14 59.1385 40.14ZM59.1385 39.02C59.5025 39.02 59.8338 38.9547 60.1325 38.824C60.4312 38.6933 60.6832 38.516 60.8885 38.292C61.1032 38.0587 61.2665 37.7927 61.3785 37.494C61.4998 37.186 61.5605 36.8547 61.5605 36.5C61.5605 36.1547 61.4998 35.828 61.3785 35.52C61.2665 35.212 61.1032 34.946 60.8885 34.722C60.6832 34.4887 60.4312 34.3067 60.1325 34.176C59.8338 34.0453 59.5025 33.98 59.1385 33.98C58.7745 33.98 58.4432 34.0453 58.1445 34.176C57.8458 34.3067 57.5892 34.4887 57.3745 34.722C57.1598 34.946 56.9918 35.212 56.8705 35.52C56.7585 35.828 56.7025 36.1547 56.7025 36.5C56.7025 36.8547 56.7585 37.186 56.8705 37.494C56.9918 37.7927 57.1598 38.0587 57.3745 38.292C57.5892 38.516 57.8458 38.6933 58.1445 38.824C58.4432 38.9547 58.7745 39.02 59.1385 39.02ZM64.5207 29.5H65.7247V40H64.5207V29.5ZM68.623 31.124C68.3804 31.124 68.175 31.0447 68.007 30.886C67.839 30.718 67.755 30.5127 67.755 30.27C67.755 30.0367 67.839 29.836 68.007 29.668C68.175 29.5 68.3804 29.416 68.623 29.416C68.8657 29.416 69.0664 29.5 69.225 29.668C69.3837 29.836 69.463 30.0367 69.463 30.27C69.463 30.5127 69.3837 30.718 69.225 30.886C69.0664 31.0447 68.8657 31.124 68.623 31.124ZM68.007 33H69.211V40H68.007V33ZM74.6014 40.14C74.0694 40.14 73.5794 40.0467 73.1314 39.86C72.6834 39.664 72.296 39.4027 71.9694 39.076C71.6427 38.7493 71.386 38.3667 71.1994 37.928C71.022 37.48 70.9334 37.004 70.9334 36.5C70.9334 35.996 71.022 35.5247 71.1994 35.086C71.386 34.638 71.6427 34.2507 71.9694 33.924C72.296 33.5973 72.6834 33.3407 73.1314 33.154C73.5794 32.958 74.0694 32.86 74.6014 32.86C75.124 32.86 75.6094 32.958 76.0574 33.154C76.5054 33.3407 76.8927 33.5973 77.2194 33.924C77.546 34.2507 77.798 34.638 77.9754 35.086C78.162 35.5247 78.2554 35.996 78.2554 36.5C78.2554 37.004 78.162 37.48 77.9754 37.928C77.798 38.3667 77.546 38.7493 77.2194 39.076C76.8927 39.4027 76.5054 39.664 76.0574 39.86C75.6094 40.0467 75.124 40.14 74.6014 40.14ZM74.6014 39.02C74.9654 39.02 75.2967 38.9547 75.5954 38.824C75.894 38.6933 76.146 38.516 76.3514 38.292C76.566 38.0587 76.7294 37.7927 76.8414 37.494C76.9627 37.186 77.0234 36.8547 77.0234 36.5C77.0234 36.1547 76.9627 35.828 76.8414 35.52C76.7294 35.212 76.566 34.946 76.3514 34.722C76.146 34.4887 75.894 34.3067 75.5954 34.176C75.2967 34.0453 74.9654 33.98 74.6014 33.98C74.2374 33.98 73.906 34.0453 73.6074 34.176C73.3087 34.3067 73.052 34.4887 72.8374 34.722C72.6227 34.946 72.4547 35.212 72.3334 35.52C72.2214 35.828 72.1654 36.1547 72.1654 36.5C72.1654 36.8547 72.2214 37.186 72.3334 37.494C72.4547 37.7927 72.6227 38.0587 72.8374 38.292C73.052 38.516 73.3087 38.6933 73.6074 38.824C73.906 38.9547 74.2374 39.02 74.6014 39.02ZM83.3606 40V29.5H84.5646V34.078C84.8072 33.658 85.1246 33.35 85.5166 33.154C85.9086 32.958 86.3332 32.86 86.7906 32.86C87.1826 32.86 87.5419 32.9253 87.8686 33.056C88.1952 33.1867 88.4706 33.378 88.6946 33.63C88.9279 33.8727 89.1099 34.1713 89.2406 34.526C89.3712 34.8713 89.4366 35.2587 89.4366 35.688V40H88.2466V35.87C88.2466 35.282 88.0926 34.82 87.7846 34.484C87.4859 34.1387 87.0892 33.966 86.5946 33.966C86.3146 33.966 86.0486 34.022 85.7966 34.134C85.5539 34.246 85.3392 34.414 85.1526 34.638C84.9752 34.8527 84.8306 35.1187 84.7186 35.436C84.6159 35.7533 84.5646 36.1173 84.5646 36.528V40H83.3606ZM94.7127 40.14C94.1807 40.14 93.6907 40.0467 93.2427 39.86C92.7947 39.664 92.4074 39.4027 92.0807 39.076C91.754 38.7493 91.4974 38.3667 91.3107 37.928C91.1334 37.48 91.0447 37.004 91.0447 36.5C91.0447 35.996 91.1334 35.5247 91.3107 35.086C91.4974 34.638 91.754 34.2507 92.0807 33.924C92.4074 33.5973 92.7947 33.3407 93.2427 33.154C93.6907 32.958 94.1807 32.86 94.7127 32.86C95.2354 32.86 95.7207 32.958 96.1687 33.154C96.6167 33.3407 97.004 33.5973 97.3307 33.924C97.6574 34.2507 97.9094 34.638 98.0867 35.086C98.2734 35.5247 98.3667 35.996 98.3667 36.5C98.3667 37.004 98.2734 37.48 98.0867 37.928C97.9094 38.3667 97.6574 38.7493 97.3307 39.076C97.004 39.4027 96.6167 39.664 96.1687 39.86C95.7207 40.0467 95.2354 40.14 94.7127 40.14ZM94.7127 39.02C95.0767 39.02 95.408 38.9547 95.7067 38.824C96.0054 38.6933 96.2574 38.516 96.4627 38.292C96.6774 38.0587 96.8407 37.7927 96.9527 37.494C97.074 37.186 97.1347 36.8547 97.1347 36.5C97.1347 36.1547 97.074 35.828 96.9527 35.52C96.8407 35.212 96.6774 34.946 96.4627 34.722C96.2574 34.4887 96.0054 34.3067 95.7067 34.176C95.408 34.0453 95.0767 33.98 94.7127 33.98C94.3487 33.98 94.0174 34.0453 93.7187 34.176C93.42 34.3067 93.1634 34.4887 92.9487 34.722C92.734 34.946 92.566 35.212 92.4447 35.52C92.3327 35.828 92.2767 36.1547 92.2767 36.5C92.2767 36.8547 92.3327 37.186 92.4447 37.494C92.566 37.7927 92.734 38.0587 92.9487 38.292C93.1634 38.516 93.42 38.6933 93.7187 38.824C94.0174 38.9547 94.3487 39.02 94.7127 39.02ZM100.095 29.5H101.299V40H100.095V29.5ZM106.465 40.14C105.971 40.14 105.513 40.0467 105.093 39.86C104.683 39.664 104.323 39.4027 104.015 39.076C103.707 38.74 103.465 38.3527 103.287 37.914C103.119 37.4753 103.035 37.004 103.035 36.5C103.035 35.996 103.119 35.5247 103.287 35.086C103.465 34.6473 103.707 34.2647 104.015 33.938C104.323 33.602 104.683 33.3407 105.093 33.154C105.513 32.958 105.971 32.86 106.465 32.86C106.997 32.86 107.483 32.9813 107.921 33.224C108.36 33.4573 108.696 33.742 108.929 34.078V29.5H110.133V40H108.929V38.922C108.696 39.258 108.36 39.5473 107.921 39.79C107.483 40.0233 106.997 40.14 106.465 40.14ZM106.647 39.034C107.002 39.034 107.324 38.9687 107.613 38.838C107.903 38.7073 108.15 38.53 108.355 38.306C108.57 38.0727 108.733 37.802 108.845 37.494C108.967 37.186 109.027 36.8547 109.027 36.5C109.027 36.1453 108.967 35.814 108.845 35.506C108.733 35.198 108.57 34.932 108.355 34.708C108.15 34.4747 107.903 34.2927 107.613 34.162C107.324 34.0313 107.002 33.966 106.647 33.966C106.293 33.966 105.966 34.0313 105.667 34.162C105.378 34.2927 105.126 34.4747 104.911 34.708C104.706 34.932 104.543 35.198 104.421 35.506C104.309 35.814 104.253 36.1453 104.253 36.5C104.253 36.8547 104.309 37.186 104.421 37.494C104.543 37.802 104.706 38.0727 104.911 38.306C105.126 38.53 105.378 38.7073 105.667 38.838C105.966 38.9687 106.293 39.034 106.647 39.034ZM113.016 31.124C112.773 31.124 112.568 31.0447 112.4 30.886C112.232 30.718 112.148 30.5127 112.148 30.27C112.148 30.0367 112.232 29.836 112.4 29.668C112.568 29.5 112.773 29.416 113.016 29.416C113.258 29.416 113.459 29.5 113.618 29.668C113.776 29.836 113.856 30.0367 113.856 30.27C113.856 30.5127 113.776 30.718 113.618 30.886C113.459 31.0447 113.258 31.124 113.016 31.124ZM112.4 33H113.604V40H112.4V33ZM115.886 33H117.09V34.078C117.333 33.658 117.65 33.35 118.042 33.154C118.434 32.958 118.859 32.86 119.316 32.86C119.708 32.86 120.067 32.9253 120.394 33.056C120.721 33.1867 120.996 33.378 121.22 33.63C121.453 33.8727 121.635 34.1713 121.766 34.526C121.897 34.8713 121.962 35.2587 121.962 35.688V40H120.772V35.87C120.772 35.282 120.618 34.82 120.31 34.484C120.011 34.1387 119.615 33.966 119.12 33.966C118.84 33.966 118.574 34.022 118.322 34.134C118.079 34.246 117.865 34.414 117.678 34.638C117.501 34.8527 117.356 35.1187 117.244 35.436C117.141 35.7533 117.09 36.1173 117.09 36.528V40H115.886V33ZM127.21 43.066C126.743 43.066 126.314 43.0053 125.922 42.884C125.53 42.7627 125.185 42.5947 124.886 42.38C124.597 42.1653 124.359 41.9087 124.172 41.61C123.995 41.3207 123.878 40.9987 123.822 40.644H124.998C125.157 41.1107 125.427 41.4513 125.81 41.666C126.193 41.89 126.669 42.002 127.238 42.002C127.555 42.002 127.849 41.9507 128.12 41.848C128.391 41.7453 128.624 41.5913 128.82 41.386C129.016 41.1807 129.17 40.924 129.282 40.616C129.394 40.3173 129.45 39.972 129.45 39.58V38.754C129.207 39.1087 128.871 39.4027 128.442 39.636C128.013 39.8693 127.537 39.986 127.014 39.986C126.529 39.986 126.076 39.8973 125.656 39.72C125.236 39.5333 124.872 39.2813 124.564 38.964C124.256 38.6373 124.013 38.2593 123.836 37.83C123.668 37.3913 123.584 36.92 123.584 36.416C123.584 35.9213 123.668 35.4593 123.836 35.03C124.013 34.5913 124.256 34.2133 124.564 33.896C124.872 33.5693 125.236 33.3173 125.656 33.14C126.076 32.9533 126.529 32.86 127.014 32.86C127.537 32.86 128.013 32.9767 128.442 33.21C128.871 33.434 129.207 33.7233 129.45 34.078V33H130.654V39.566C130.654 40.154 130.561 40.6627 130.374 41.092C130.197 41.5307 129.954 41.8947 129.646 42.184C129.338 42.4827 128.974 42.702 128.554 42.842C128.134 42.9913 127.686 43.066 127.21 43.066ZM127.182 38.866C127.527 38.866 127.845 38.8053 128.134 38.684C128.433 38.5627 128.685 38.3947 128.89 38.18C129.095 37.956 129.254 37.6947 129.366 37.396C129.487 37.0973 129.548 36.7707 129.548 36.416C129.548 36.0707 129.487 35.7487 129.366 35.45C129.254 35.142 129.095 34.8807 128.89 34.666C128.685 34.4513 128.433 34.2833 128.134 34.162C127.845 34.0313 127.527 33.966 127.182 33.966C126.827 33.966 126.505 34.0313 126.216 34.162C125.927 34.2833 125.679 34.4513 125.474 34.666C125.269 34.8807 125.105 35.142 124.984 35.45C124.872 35.7487 124.816 36.0707 124.816 36.416C124.816 36.7707 124.872 37.0973 124.984 37.396C125.105 37.6947 125.269 37.956 125.474 38.18C125.679 38.3947 125.927 38.5627 126.216 38.684C126.505 38.8053 126.827 38.866 127.182 38.866ZM135.175 40.14C134.802 40.14 134.447 40.0933 134.111 40C133.775 39.9067 133.481 39.7713 133.229 39.594C132.977 39.4073 132.772 39.1787 132.613 38.908C132.454 38.6373 132.361 38.3247 132.333 37.97H133.565C133.602 38.1847 133.672 38.3667 133.775 38.516C133.887 38.656 134.018 38.7727 134.167 38.866C134.316 38.9593 134.475 39.0247 134.643 39.062C134.82 39.0993 135.002 39.118 135.189 39.118C135.572 39.118 135.889 39.0433 136.141 38.894C136.402 38.7353 136.533 38.502 136.533 38.194C136.533 37.914 136.444 37.6853 136.267 37.508C136.09 37.3307 135.791 37.186 135.371 37.074L134.363 36.808C133.756 36.6493 133.304 36.3927 133.005 36.038C132.706 35.6833 132.557 35.254 132.557 34.75C132.557 34.4607 132.618 34.1993 132.739 33.966C132.86 33.7327 133.028 33.5367 133.243 33.378C133.458 33.21 133.71 33.084 133.999 33C134.298 32.9067 134.624 32.86 134.979 32.86C135.352 32.86 135.688 32.9113 135.987 33.014C136.286 33.1167 136.542 33.2613 136.757 33.448C136.981 33.6253 137.158 33.8353 137.289 34.078C137.42 34.3207 137.499 34.582 137.527 34.862H136.323C136.23 34.554 136.062 34.3113 135.819 34.134C135.586 33.9567 135.306 33.868 134.979 33.868C134.643 33.868 134.358 33.9473 134.125 34.106C133.892 34.2553 133.775 34.4653 133.775 34.736C133.775 34.9973 133.859 35.2073 134.027 35.366C134.195 35.5153 134.466 35.6413 134.839 35.744L135.959 36.038C136.547 36.1873 136.99 36.4393 137.289 36.794C137.597 37.1393 137.751 37.578 137.751 38.11C137.751 38.4553 137.686 38.7587 137.555 39.02C137.424 39.272 137.242 39.482 137.009 39.65C136.776 39.818 136.5 39.9393 136.183 40.014C135.875 40.098 135.539 40.14 135.175 40.14Z\",\n fill: \"#18181A\",\n fillOpacity: 0.5\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M149 30C146.243 30 144 32.2432 144 35C144 37.7568 146.243 40 149 40C151.757 40 154 37.7568 154 35C154 32.2432 151.757 30 149 30ZM149 30.75C151.352 30.75 153.25 32.6484 153.25 35C153.25 37.3516 151.352 39.25 149 39.25C146.648 39.25 144.75 37.3516 144.75 35C144.75 32.6484 146.648 30.75 149 30.75ZM149 32.5C148.724 32.5 148.5 32.7236 148.5 33C148.5 33.2764 148.724 33.5 149 33.5C149.276 33.5 149.5 33.2764 149.5 33C149.5 32.7236 149.276 32.5 149 32.5ZM148.994 34.2451C148.787 34.248 148.622 34.418 148.625 34.625V37.375C148.623 37.5098 148.694 37.6357 148.811 37.7041C148.928 37.7725 149.072 37.7725 149.189 37.7041C149.306 37.6357 149.377 37.5098 149.375 37.375V34.625C149.376 34.5234 149.337 34.4258 149.265 34.3545C149.193 34.2822 149.096 34.2432 148.994 34.2451Z\",\n fill: \"#18181A\",\n fillOpacity: 0.5\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M545.415 36.25H543.497L544.477 35.06H546.619V45H545.415V36.25ZM553.272 39.974L551.55 45H550.486L548.106 38H549.366L551.06 43.11L552.81 38H553.734L555.484 43.11L557.178 38H558.452L556.072 45H555.007L553.272 39.974Z\",\n fill: \"#18181A\",\n fillOpacity: 0.5\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M579.06 36.25H577.142L578.122 35.06H580.264V45H579.06V36.25ZM591.733 40.884C591.733 40.3147 591.616 39.8527 591.383 39.498C591.15 39.1433 590.804 38.966 590.347 38.966C589.787 38.966 589.33 39.1853 588.975 39.624C588.63 40.0627 588.448 40.66 588.429 41.416V45H587.225V40.884C587.225 40.3147 587.108 39.8527 586.875 39.498C586.651 39.1433 586.31 38.966 585.853 38.966C585.284 38.966 584.817 39.1947 584.453 39.652C584.098 40.1093 583.921 40.7347 583.921 41.528V45H582.717V38H583.921V39.078C584.126 38.7047 584.411 38.4107 584.775 38.196C585.139 37.972 585.559 37.86 586.035 37.86C586.558 37.86 587.001 37.9953 587.365 38.266C587.738 38.5273 588.014 38.8913 588.191 39.358C588.378 38.9007 588.672 38.5367 589.073 38.266C589.484 37.9953 589.955 37.86 590.487 37.86C590.87 37.86 591.21 37.93 591.509 38.07C591.817 38.2007 592.074 38.392 592.279 38.644C592.494 38.8867 592.657 39.1853 592.769 39.54C592.881 39.8853 592.937 40.2727 592.937 40.702V45H591.733V40.884Z\",\n fill: \"#18181A\",\n fillOpacity: 0.5\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M705.969 35.06H707.047L711.457 45H710.099L708.811 42.102H704.177L702.917 45H701.573L705.969 35.06ZM704.695 40.926H708.293L706.487 36.824L704.695 40.926ZM712.672 34.5H713.876V45H712.672V34.5ZM716.158 34.5H717.362V45H716.158V34.5Z\",\n fill: \"#18181A\",\n fillOpacity: 0.5\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 652,\n y: 27,\n width: 31,\n height: 26,\n rx: 13,\n fill: \"#F4F4F4\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M663.426 36.25H661.508L662.488 35.06H664.63V45H663.426V36.25ZM667.6 47.926L669.126 44.636L666.06 38H667.39L669.798 43.32L672.192 38H673.536L668.944 47.926H667.6Z\",\n fill: \"#18181A\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M613.797 47.926L615.323 44.636L612.257 38H613.587L615.995 43.32L618.389 38H619.733L615.141 47.926H613.797ZM623.651 45.07C623.343 45.07 623.058 45.028 622.797 44.944C622.535 44.8507 622.307 44.72 622.111 44.552C621.924 44.3747 621.775 44.1507 621.663 43.88C621.56 43.6093 621.509 43.292 621.509 42.928V39.106H620.025V38H621.509V36.054H622.713V38H624.729V39.106H622.713V42.774C622.713 43.222 622.811 43.5347 623.007 43.712C623.203 43.88 623.492 43.964 623.875 43.964C624.024 43.964 624.173 43.9547 624.323 43.936C624.481 43.908 624.617 43.8707 624.729 43.824V44.902C624.579 44.9487 624.416 44.986 624.239 45.014C624.061 45.0513 623.865 45.07 623.651 45.07ZM629.055 45.14C628.56 45.14 628.103 45.0467 627.683 44.86C627.272 44.664 626.913 44.4027 626.605 44.076C626.297 43.74 626.054 43.3527 625.877 42.914C625.709 42.4753 625.625 42.004 625.625 41.5C625.625 40.996 625.709 40.5247 625.877 40.086C626.054 39.6473 626.297 39.2647 626.605 38.938C626.913 38.602 627.272 38.3407 627.683 38.154C628.103 37.958 628.56 37.86 629.055 37.86C629.587 37.86 630.072 37.9813 630.511 38.224C630.95 38.4573 631.286 38.742 631.519 39.078V34.5H632.723V45H631.519V43.922C631.286 44.258 630.95 44.5473 630.511 44.79C630.072 45.0233 629.587 45.14 629.055 45.14ZM629.237 44.034C629.592 44.034 629.914 43.9687 630.203 43.838C630.492 43.7073 630.74 43.53 630.945 43.306C631.16 43.0727 631.323 42.802 631.435 42.494C631.556 42.186 631.617 41.8547 631.617 41.5C631.617 41.1453 631.556 40.814 631.435 40.506C631.323 40.198 631.16 39.932 630.945 39.708C630.74 39.4747 630.492 39.2927 630.203 39.162C629.914 39.0313 629.592 38.966 629.237 38.966C628.882 38.966 628.556 39.0313 628.257 39.162C627.968 39.2927 627.716 39.4747 627.501 39.708C627.296 39.932 627.132 40.198 627.011 40.506C626.899 40.814 626.843 41.1453 626.843 41.5C626.843 41.8547 626.899 42.186 627.011 42.494C627.132 42.802 627.296 43.0727 627.501 43.306C627.716 43.53 627.968 43.7073 628.257 43.838C628.556 43.9687 628.882 44.034 629.237 44.034Z\",\n fill: \"#18181A\",\n fillOpacity: 0.5\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.50043 277.633L20.3859 271.056C22.0251 270.453 23.7937 270.29 25.5154 270.583L37.9899 272.707C40.9072 273.204 43.8947 272.383 46.1485 270.465L56.3583 261.779C60.083 258.609 65.5536 258.599 69.2901 261.755L77.851 268.983C81.138 271.759 85.8319 272.121 89.5059 269.883L98.0946 264.65C101.459 262.6 105.714 262.717 108.962 264.948L116.766 270.311C121.115 273.3 127.037 272.395 130.296 268.244L139.812 256.121C142.195 253.085 146.113 251.691 149.878 252.54L159.812 254.78C162.653 255.421 165.632 254.791 167.971 253.056L179.981 244.143C182.62 242.185 186.053 241.648 189.164 242.708L203.501 247.59C204.456 247.915 205.356 248.383 206.171 248.978L223.175 261.386C223.989 261.98 224.889 262.448 225.843 262.773L241.223 268.015C243.728 268.869 246.469 268.695 248.845 267.532L260.16 261.995C263.403 260.407 267.25 260.692 270.225 262.739L279.904 269.401C283.647 271.977 288.655 271.706 292.098 268.742L301.388 260.743C304.343 258.199 308.507 257.604 312.055 259.219L321.736 263.625C325.042 265.129 328.903 264.723 331.823 262.564L341.841 255.157C345.024 252.804 349.295 252.55 352.734 254.509L360.567 258.969C364.85 261.407 370.27 260.362 373.34 256.506L381.34 246.455C385.088 241.745 392.118 241.39 396.321 245.698L400.885 250.375C405.326 254.925 412.829 254.231 416.359 248.943L426.545 233.686C429.145 229.79 434.102 228.221 438.471 229.912L453.694 235.803C454.166 235.986 454.65 236.132 455.144 236.241L473.65 240.334C474.783 240.585 475.951 240.636 477.102 240.486L493.334 238.371C494.841 238.175 496.373 238.325 497.813 238.809L514.445 244.402C515.881 244.885 517.409 245.035 518.912 244.841L533.36 242.977C535.771 242.665 537.987 241.486 539.592 239.659L553.295 224.064C554.394 222.814 555.787 221.857 557.348 221.282L575.303 214.663L596.317 206.594C597.041 206.315 597.796 206.123 598.565 206.019L614.85 203.824C616.225 203.638 617.546 203.169 618.73 202.445L637.137 191.193L653.136 181.322C655.678 179.754 658.787 179.403 661.613 180.367L673.849 184.537C676.424 185.415 679.247 185.205 681.664 183.956L690.899 179.186C694.609 177.27 699.118 177.86 702.21 180.666L714.788 192.083C716.965 194.059 719.901 194.977 722.816 194.593L735.423 192.931C737.255 192.689 739.118 192.96 740.805 193.713L748.856 197.305\",\n stroke: \"#E4E4E6\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.94191 266.912L17.3938 255.354C20.2265 253.235 23.968 252.77 27.233 254.132L33.5517 256.767C38.2963 258.746 43.7684 256.805 46.2056 252.278L52.5982 240.407C56.337 233.463 66.2663 233.378 70.1244 240.255L75.3965 249.654C78.9027 255.904 87.6522 256.546 92.0326 250.874L93.9894 248.34C98.1487 242.954 106.356 243.206 110.178 248.836L112.974 252.955C117.594 259.761 127.998 258.388 130.695 250.617L138.224 228.922C140.237 223.121 146.954 220.488 152.373 223.375L154.705 224.618C159.345 227.09 165.107 225.547 167.891 221.087L176.233 207.722C179.365 202.705 186.143 201.487 190.825 205.1L201.909 213.653C202.816 214.352 203.596 215.203 204.215 216.167L222.656 244.886C223.275 245.849 224.054 246.698 224.959 247.397L237.736 257.263C241.749 260.362 247.447 259.966 250.994 256.343L255.99 251.238C260.413 246.72 267.866 247.389 271.414 252.622L276.94 260.775C281.168 267.011 290.512 266.51 294.048 259.857L298.96 250.616C302.121 244.67 310.136 243.485 314.883 248.261L317.893 251.29C322.432 255.857 330.041 255.007 333.46 249.552L338.539 241.447C342.185 235.63 350.476 235.133 354.791 240.473L356.381 242.442C361.3 248.53 370.99 246.863 373.591 239.481L378.538 225.444C381.511 217.006 393.222 216.42 397.022 224.521L397.762 226.098C401.679 234.447 413.848 233.495 416.419 224.638L424.416 197.088C426.449 190.081 435.059 187.541 440.571 192.32L451.869 202.117C452.454 202.623 453.095 203.061 453.781 203.42L470.773 212.319C472.873 213.419 475.296 213.737 477.609 213.216L489.644 210.507C492.529 209.857 495.553 210.518 497.905 212.311L511.954 223.027C514.299 224.815 517.313 225.478 520.191 224.837L530.841 222.468C534.087 221.746 536.762 219.457 537.978 216.361L551.772 181.227C552.451 179.5 553.596 177.995 555.08 176.882L572.779 163.605L592.732 147.953C593.876 147.056 595.201 146.419 596.617 146.086L610.435 142.84C612.677 142.313 614.668 141.029 616.073 139.203L633.466 116.6L646.742 99.175C650.104 94.7617 656.417 93.9294 660.808 97.3201L666.777 101.929C670.879 105.096 676.721 104.605 680.236 100.797L683.094 97.7022C687.782 92.6241 696.085 93.7193 699.296 99.8393L711.419 122.942C713.527 126.96 718.077 129.055 722.501 128.044L729.555 126.432C732.888 125.671 736.38 126.665 738.812 129.068L745.834 136.007\",\n stroke: \"#10BBD5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M327.126 46H320.686V45.524C320.686 44.992 320.789 44.5253 320.994 44.124C321.209 43.7227 321.475 43.3633 321.792 43.046C322.119 42.7193 322.478 42.4207 322.87 42.15C323.271 41.87 323.654 41.5947 324.018 41.324C324.307 41.1093 324.559 40.9133 324.774 40.736C324.998 40.5493 325.185 40.3627 325.334 40.176C325.483 39.98 325.595 39.7747 325.67 39.56C325.745 39.336 325.782 39.0793 325.782 38.79C325.782 38.2673 325.614 37.852 325.278 37.544C324.942 37.2267 324.503 37.068 323.962 37.068C323.691 37.068 323.43 37.11 323.178 37.194C322.935 37.278 322.716 37.404 322.52 37.572C322.333 37.7307 322.184 37.936 322.072 38.188C321.96 38.4307 321.904 38.7107 321.904 39.028H320.672C320.672 38.552 320.756 38.1227 320.924 37.74C321.092 37.348 321.321 37.0167 321.61 36.746C321.909 36.4753 322.259 36.2653 322.66 36.116C323.061 35.9667 323.491 35.892 323.948 35.892C324.359 35.892 324.751 35.9527 325.124 36.074C325.497 36.1953 325.824 36.3773 326.104 36.62C326.384 36.8627 326.603 37.166 326.762 37.53C326.93 37.894 327.014 38.3187 327.014 38.804C327.014 39.168 326.967 39.4993 326.874 39.798C326.79 40.0967 326.655 40.3813 326.468 40.652C326.291 40.9133 326.053 41.1793 325.754 41.45C325.465 41.7113 325.119 41.9867 324.718 42.276C324.429 42.4907 324.144 42.6913 323.864 42.878C323.584 43.0553 323.327 43.242 323.094 43.438C322.87 43.634 322.674 43.844 322.506 44.068C322.338 44.292 322.226 44.5487 322.17 44.838H327.126V46ZM329.837 37.25H327.919L328.899 36.06H331.041V46H329.837V37.25ZM338.561 46.168C338.15 46.168 337.767 46.1073 337.413 45.986C337.058 45.8647 336.745 45.6873 336.475 45.454C336.204 45.2113 335.989 44.9127 335.831 44.558C335.681 44.2033 335.607 43.7973 335.607 43.34H336.895C336.895 43.6107 336.937 43.8487 337.021 44.054C337.114 44.25 337.235 44.418 337.385 44.558C337.543 44.6887 337.721 44.7913 337.917 44.866C338.122 44.9313 338.332 44.964 338.547 44.964C338.761 44.964 338.967 44.9313 339.163 44.866C339.368 44.8007 339.545 44.698 339.695 44.558C339.844 44.4087 339.961 44.2173 340.045 43.984C340.138 43.7413 340.185 43.452 340.185 43.116V36.06H341.473V43.256C341.473 43.7787 341.393 44.2267 341.235 44.6C341.076 44.964 340.861 45.2627 340.591 45.496C340.32 45.7293 340.007 45.8973 339.653 46C339.307 46.112 338.943 46.168 338.561 46.168ZM346.198 46.14C345.815 46.14 345.465 46.0747 345.148 45.944C344.831 45.804 344.56 45.6127 344.336 45.37C344.112 45.1273 343.935 44.8333 343.804 44.488C343.683 44.1333 343.622 43.7367 343.622 43.298V39H344.826V43.116C344.826 43.704 344.966 44.1707 345.246 44.516C345.535 44.8613 345.923 45.034 346.408 45.034C346.679 45.034 346.931 44.978 347.164 44.866C347.407 44.7447 347.612 44.5767 347.78 44.362C347.957 44.138 348.097 43.8673 348.2 43.55C348.303 43.2327 348.354 42.8733 348.354 42.472V39H349.558V46H348.354V44.922C348.121 45.3327 347.813 45.6407 347.43 45.846C347.057 46.042 346.646 46.14 346.198 46.14ZM351.827 39H353.031V40.078C353.274 39.658 353.591 39.35 353.983 39.154C354.375 38.958 354.8 38.86 355.257 38.86C355.649 38.86 356.009 38.9253 356.335 39.056C356.662 39.1867 356.937 39.378 357.161 39.63C357.395 39.8727 357.577 40.1713 357.707 40.526C357.838 40.8713 357.903 41.2587 357.903 41.688V46H356.713V41.87C356.713 41.282 356.559 40.82 356.251 40.484C355.953 40.1387 355.556 39.966 355.061 39.966C354.781 39.966 354.515 40.022 354.263 40.134C354.021 40.246 353.806 40.414 353.619 40.638C353.442 40.8527 353.297 41.1187 353.185 41.436C353.083 41.7533 353.031 42.1173 353.031 42.528V46H351.827V39ZM364.344 37.25H362.426L363.406 36.06H365.548V46H364.344V37.25ZM373.993 46H367.553V45.524C367.553 44.992 367.656 44.5253 367.861 44.124C368.076 43.7227 368.342 43.3633 368.659 43.046C368.986 42.7193 369.345 42.4207 369.737 42.15C370.139 41.87 370.521 41.5947 370.885 41.324C371.175 41.1093 371.427 40.9133 371.641 40.736C371.865 40.5493 372.052 40.3627 372.201 40.176C372.351 39.98 372.463 39.7747 372.537 39.56C372.612 39.336 372.649 39.0793 372.649 38.79C372.649 38.2673 372.481 37.852 372.145 37.544C371.809 37.2267 371.371 37.068 370.829 37.068C370.559 37.068 370.297 37.11 370.045 37.194C369.803 37.278 369.583 37.404 369.387 37.572C369.201 37.7307 369.051 37.936 368.939 38.188C368.827 38.4307 368.771 38.7107 368.771 39.028H367.539C367.539 38.552 367.623 38.1227 367.791 37.74C367.959 37.348 368.188 37.0167 368.477 36.746C368.776 36.4753 369.126 36.2653 369.527 36.116C369.929 35.9667 370.358 35.892 370.815 35.892C371.226 35.892 371.618 35.9527 371.991 36.074C372.365 36.1953 372.691 36.3773 372.971 36.62C373.251 36.8627 373.471 37.166 373.629 37.53C373.797 37.894 373.881 38.3187 373.881 38.804C373.881 39.168 373.835 39.4993 373.741 39.798C373.657 40.0967 373.522 40.3813 373.335 40.652C373.158 40.9133 372.92 41.1793 372.621 41.45C372.332 41.7113 371.987 41.9867 371.585 42.276C371.296 42.4907 371.011 42.6913 370.731 42.878C370.451 43.0553 370.195 43.242 369.961 43.438C369.737 43.634 369.541 43.844 369.373 44.068C369.205 44.292 369.093 44.5487 369.037 44.838H373.993V46ZM376.592 40.932C376.302 40.932 376.055 40.8293 375.85 40.624C375.654 40.4187 375.556 40.1713 375.556 39.882C375.556 39.602 375.654 39.3593 375.85 39.154C376.055 38.9393 376.302 38.832 376.592 38.832C376.881 38.832 377.124 38.9393 377.32 39.154C377.525 39.3593 377.628 39.602 377.628 39.882C377.628 40.1713 377.525 40.4187 377.32 40.624C377.124 40.8293 376.881 40.932 376.592 40.932ZM376.592 46.112C376.302 46.112 376.055 46.0093 375.85 45.804C375.654 45.5987 375.556 45.3513 375.556 45.062C375.556 44.782 375.654 44.5393 375.85 44.334C376.055 44.1193 376.302 44.012 376.592 44.012C376.881 44.012 377.124 44.1193 377.32 44.334C377.525 44.5393 377.628 44.782 377.628 45.062C377.628 45.3513 377.525 45.5987 377.32 45.804C377.124 46.0093 376.881 46.112 376.592 46.112ZM385.642 46H379.202V45.524C379.202 44.992 379.304 44.5253 379.51 44.124C379.724 43.7227 379.99 43.3633 380.308 43.046C380.634 42.7193 380.994 42.4207 381.386 42.15C381.787 41.87 382.17 41.5947 382.534 41.324C382.823 41.1093 383.075 40.9133 383.29 40.736C383.514 40.5493 383.7 40.3627 383.85 40.176C383.999 39.98 384.111 39.7747 384.186 39.56C384.26 39.336 384.298 39.0793 384.298 38.79C384.298 38.2673 384.13 37.852 383.794 37.544C383.458 37.2267 383.019 37.068 382.478 37.068C382.207 37.068 381.946 37.11 381.694 37.194C381.451 37.278 381.232 37.404 381.036 37.572C380.849 37.7307 380.7 37.936 380.588 38.188C380.476 38.4307 380.42 38.7107 380.42 39.028H379.188C379.188 38.552 379.272 38.1227 379.44 37.74C379.608 37.348 379.836 37.0167 380.126 36.746C380.424 36.4753 380.774 36.2653 381.176 36.116C381.577 35.9667 382.006 35.892 382.464 35.892C382.874 35.892 383.266 35.9527 383.64 36.074C384.013 36.1953 384.34 36.3773 384.62 36.62C384.9 36.8627 385.119 37.166 385.278 37.53C385.446 37.894 385.53 38.3187 385.53 38.804C385.53 39.168 385.483 39.4993 385.39 39.798C385.306 40.0967 385.17 40.3813 384.984 40.652C384.806 40.9133 384.568 41.1793 384.27 41.45C383.98 41.7113 383.635 41.9867 383.234 42.276C382.944 42.4907 382.66 42.6913 382.38 42.878C382.1 43.0553 381.843 43.242 381.61 43.438C381.386 43.634 381.19 43.844 381.022 44.068C380.854 44.292 380.742 44.5487 380.686 44.838H385.642V46ZM390.326 46.14C389.841 46.14 389.393 46.0653 388.982 45.916C388.572 45.7573 388.217 45.538 387.918 45.258C387.629 44.978 387.4 44.6467 387.232 44.264C387.064 43.8813 386.98 43.466 386.98 43.018C386.98 42.4207 387.116 41.9027 387.386 41.464C387.666 41.016 388.054 40.6707 388.548 40.428C388.231 40.204 387.979 39.924 387.792 39.588C387.615 39.252 387.526 38.874 387.526 38.454C387.526 38.0807 387.596 37.74 387.736 37.432C387.876 37.1147 388.072 36.844 388.324 36.62C388.576 36.3867 388.87 36.2093 389.206 36.088C389.552 35.9573 389.925 35.892 390.326 35.892C390.737 35.892 391.11 35.9573 391.446 36.088C391.792 36.2093 392.086 36.3867 392.328 36.62C392.58 36.844 392.772 37.1147 392.902 37.432C393.042 37.74 393.112 38.0807 393.112 38.454C393.112 38.874 393.024 39.252 392.846 39.588C392.669 39.924 392.422 40.204 392.104 40.428C392.599 40.6707 392.982 41.016 393.252 41.464C393.523 41.9027 393.658 42.4207 393.658 43.018C393.658 43.466 393.574 43.8813 393.406 44.264C393.248 44.6467 393.019 44.978 392.72 45.258C392.431 45.538 392.081 45.7573 391.67 45.916C391.269 46.0653 390.821 46.14 390.326 46.14ZM390.326 44.992C390.662 44.992 390.961 44.9407 391.222 44.838C391.484 44.7353 391.703 44.5953 391.88 44.418C392.067 44.2407 392.207 44.0307 392.3 43.788C392.394 43.5453 392.44 43.2887 392.44 43.018C392.44 42.738 392.394 42.4767 392.3 42.234C392.207 41.9913 392.067 41.7813 391.88 41.604C391.703 41.4267 391.484 41.2867 391.222 41.184C390.961 41.0813 390.662 41.03 390.326 41.03C390 41.03 389.706 41.0813 389.444 41.184C389.183 41.2867 388.959 41.4267 388.772 41.604C388.586 41.7813 388.441 41.9913 388.338 42.234C388.245 42.4767 388.198 42.738 388.198 43.018C388.198 43.2887 388.245 43.5453 388.338 43.788C388.441 44.0307 388.586 44.2407 388.772 44.418C388.959 44.5953 389.183 44.7353 389.444 44.838C389.706 44.9407 390 44.992 390.326 44.992ZM390.326 39.952C390.578 39.952 390.802 39.9147 390.998 39.84C391.194 39.756 391.362 39.6487 391.502 39.518C391.642 39.378 391.745 39.2193 391.81 39.042C391.885 38.8647 391.922 38.678 391.922 38.482C391.922 38.062 391.782 37.7167 391.502 37.446C391.222 37.166 390.83 37.026 390.326 37.026C389.841 37.026 389.449 37.166 389.15 37.446C388.861 37.7167 388.716 38.062 388.716 38.482C388.716 38.678 388.754 38.8647 388.828 39.042C388.903 39.2193 389.01 39.378 389.15 39.518C389.29 39.6487 389.458 39.756 389.654 39.84C389.86 39.9147 390.084 39.952 390.326 39.952Z\",\n fill: \"white\",\n fillOpacity: 0.5\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHoldingsLight);\nexport default __webpack_public_path__ + \"static/media/holdingsLight.490fe1f5.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2, _path3, _path4, _rect2, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgHoldingsDark(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 757,\n height: 345,\n viewBox: \"0 0 757 345\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 7,\n width: 750,\n height: 345,\n rx: 10,\n fill: \"#18181A\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M160 30C156.692 30 154 32.6918 154 36C154 39.3082 156.692 42 160 42C163.308 42 166 39.3082 166 36C166 32.6918 163.308 30 160 30ZM160 30.9C162.822 30.9 165.1 33.1781 165.1 36C165.1 38.8219 162.822 41.1 160 41.1C157.178 41.1 154.9 38.8219 154.9 36C154.9 33.1781 157.178 30.9 160 30.9ZM160 33C159.668 33 159.4 33.2684 159.4 33.6C159.4 33.9316 159.668 34.2 160 34.2C160.332 34.2 160.6 33.9316 160.6 33.6C160.6 33.2684 160.332 33 160 33ZM159.993 35.0941C159.745 35.0977 159.546 35.3016 159.55 35.55V38.85C159.548 39.0117 159.633 39.1629 159.773 39.2449C159.913 39.327 160.087 39.327 160.227 39.2449C160.367 39.1629 160.452 39.0117 160.45 38.85V35.55C160.451 35.4281 160.404 35.3109 160.318 35.2254C160.232 35.1387 160.115 35.0918 159.993 35.0941Z\",\n fill: \"white\",\n fillOpacity: 0.5\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M552.415 36.25H550.497L551.477 35.06H553.619V45H552.415V36.25ZM560.272 39.974L558.55 45H557.486L555.106 38H556.366L558.06 43.11L559.81 38H560.734L562.484 43.11L564.178 38H565.452L563.072 45H562.007L560.272 39.974Z\",\n fill: \"white\",\n fillOpacity: 0.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M586.06 36.25H584.142L585.122 35.06H587.264V45H586.06V36.25ZM598.733 40.884C598.733 40.3147 598.616 39.8527 598.383 39.498C598.15 39.1433 597.804 38.966 597.347 38.966C596.787 38.966 596.33 39.1853 595.975 39.624C595.63 40.0627 595.448 40.66 595.429 41.416V45H594.225V40.884C594.225 40.3147 594.108 39.8527 593.875 39.498C593.651 39.1433 593.31 38.966 592.853 38.966C592.284 38.966 591.817 39.1947 591.453 39.652C591.098 40.1093 590.921 40.7347 590.921 41.528V45H589.717V38H590.921V39.078C591.126 38.7047 591.411 38.4107 591.775 38.196C592.139 37.972 592.559 37.86 593.035 37.86C593.558 37.86 594.001 37.9953 594.365 38.266C594.738 38.5273 595.014 38.8913 595.191 39.358C595.378 38.9007 595.672 38.5367 596.073 38.266C596.484 37.9953 596.955 37.86 597.487 37.86C597.87 37.86 598.21 37.93 598.509 38.07C598.817 38.2007 599.074 38.392 599.279 38.644C599.494 38.8867 599.657 39.1853 599.769 39.54C599.881 39.8853 599.937 40.2727 599.937 40.702V45H598.733V40.884Z\",\n fill: \"white\",\n fillOpacity: 0.5\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M712.969 35.06H714.047L718.457 45H717.099L715.811 42.102H711.177L709.917 45H708.573L712.969 35.06ZM711.695 40.926H715.293L713.487 36.824L711.695 40.926ZM719.672 34.5H720.876V45H719.672V34.5ZM723.158 34.5H724.362V45H723.158V34.5Z\",\n fill: \"white\",\n fillOpacity: 0.5\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 659,\n y: 27,\n width: 31,\n height: 26,\n rx: 13,\n fill: \"#303034\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M670.426 36.25H668.508L669.488 35.06H671.63V45H670.426V36.25ZM674.6 47.926L676.126 44.636L673.06 38H674.39L676.798 43.32L679.192 38H680.536L675.944 47.926H674.6Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M620.797 47.926L622.323 44.636L619.257 38H620.587L622.995 43.32L625.389 38H626.733L622.141 47.926H620.797ZM630.651 45.07C630.343 45.07 630.058 45.028 629.797 44.944C629.535 44.8507 629.307 44.72 629.111 44.552C628.924 44.3747 628.775 44.1507 628.663 43.88C628.56 43.6093 628.509 43.292 628.509 42.928V39.106H627.025V38H628.509V36.054H629.713V38H631.729V39.106H629.713V42.774C629.713 43.222 629.811 43.5347 630.007 43.712C630.203 43.88 630.492 43.964 630.875 43.964C631.024 43.964 631.173 43.9547 631.323 43.936C631.481 43.908 631.617 43.8707 631.729 43.824V44.902C631.579 44.9487 631.416 44.986 631.239 45.014C631.061 45.0513 630.865 45.07 630.651 45.07ZM636.055 45.14C635.56 45.14 635.103 45.0467 634.683 44.86C634.272 44.664 633.913 44.4027 633.605 44.076C633.297 43.74 633.054 43.3527 632.877 42.914C632.709 42.4753 632.625 42.004 632.625 41.5C632.625 40.996 632.709 40.5247 632.877 40.086C633.054 39.6473 633.297 39.2647 633.605 38.938C633.913 38.602 634.272 38.3407 634.683 38.154C635.103 37.958 635.56 37.86 636.055 37.86C636.587 37.86 637.072 37.9813 637.511 38.224C637.95 38.4573 638.286 38.742 638.519 39.078V34.5H639.723V45H638.519V43.922C638.286 44.258 637.95 44.5473 637.511 44.79C637.072 45.0233 636.587 45.14 636.055 45.14ZM636.237 44.034C636.592 44.034 636.914 43.9687 637.203 43.838C637.492 43.7073 637.74 43.53 637.945 43.306C638.16 43.0727 638.323 42.802 638.435 42.494C638.556 42.186 638.617 41.8547 638.617 41.5C638.617 41.1453 638.556 40.814 638.435 40.506C638.323 40.198 638.16 39.932 637.945 39.708C637.74 39.4747 637.492 39.2927 637.203 39.162C636.914 39.0313 636.592 38.966 636.237 38.966C635.882 38.966 635.556 39.0313 635.257 39.162C634.968 39.2927 634.716 39.4747 634.501 39.708C634.296 39.932 634.132 40.198 634.011 40.506C633.899 40.814 633.843 41.1453 633.843 41.5C633.843 41.8547 633.899 42.186 634.011 42.494C634.132 42.802 634.296 43.0727 634.501 43.306C634.716 43.53 634.968 43.7073 635.257 43.838C635.556 43.9687 635.882 44.034 636.237 44.034Z\",\n fill: \"white\",\n fillOpacity: 0.5\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.7702 310.06H35.2122L38.5582 317.97L41.9182 310.06H43.3322L39.1042 320H38.0122L33.7702 310.06ZM46.6586 320.14C46.164 320.14 45.7066 320.047 45.2866 319.86C44.876 319.664 44.5166 319.403 44.2086 319.076C43.9006 318.74 43.658 318.353 43.4806 317.914C43.3126 317.475 43.2286 317.004 43.2286 316.5C43.2286 315.996 43.3126 315.525 43.4806 315.086C43.658 314.647 43.9006 314.265 44.2086 313.938C44.5166 313.602 44.876 313.341 45.2866 313.154C45.7066 312.958 46.164 312.86 46.6586 312.86C47.1906 312.86 47.676 312.981 48.1146 313.224C48.5533 313.457 48.8893 313.742 49.1226 314.078V313H50.3266V320H49.1226V318.922C48.8893 319.258 48.5533 319.547 48.1146 319.79C47.676 320.023 47.1906 320.14 46.6586 320.14ZM46.8406 319.034C47.1953 319.034 47.5173 318.969 47.8066 318.838C48.096 318.707 48.3433 318.53 48.5486 318.306C48.7633 318.073 48.9266 317.802 49.0386 317.494C49.16 317.186 49.2206 316.855 49.2206 316.5C49.2206 316.145 49.16 315.814 49.0386 315.506C48.9266 315.198 48.7633 314.932 48.5486 314.708C48.3433 314.475 48.096 314.293 47.8066 314.162C47.5173 314.031 47.1953 313.966 46.8406 313.966C46.486 313.966 46.1593 314.031 45.8606 314.162C45.5713 314.293 45.3193 314.475 45.1046 314.708C44.8993 314.932 44.736 315.198 44.6146 315.506C44.5026 315.814 44.4466 316.145 44.4466 316.5C44.4466 316.855 44.5026 317.186 44.6146 317.494C44.736 317.802 44.8993 318.073 45.1046 318.306C45.3193 318.53 45.5713 318.707 45.8606 318.838C46.1593 318.969 46.486 319.034 46.8406 319.034ZM52.593 309.5H53.797V320H52.593V309.5ZM58.5573 320.14C58.1746 320.14 57.8246 320.075 57.5073 319.944C57.19 319.804 56.9193 319.613 56.6953 319.37C56.4713 319.127 56.294 318.833 56.1633 318.488C56.042 318.133 55.9813 317.737 55.9813 317.298V313H57.1853V317.116C57.1853 317.704 57.3253 318.171 57.6053 318.516C57.8946 318.861 58.282 319.034 58.7673 319.034C59.038 319.034 59.29 318.978 59.5233 318.866C59.766 318.745 59.9713 318.577 60.1393 318.362C60.3166 318.138 60.4566 317.867 60.5593 317.55C60.662 317.233 60.7133 316.873 60.7133 316.472V313H61.9173V320H60.7133V318.922C60.48 319.333 60.172 319.641 59.7893 319.846C59.416 320.042 59.0053 320.14 58.5573 320.14ZM67.1687 320.14C66.6554 320.14 66.1841 320.051 65.7547 319.874C65.3254 319.687 64.9521 319.431 64.6347 319.104C64.3267 318.777 64.0841 318.395 63.9067 317.956C63.7294 317.508 63.6407 317.023 63.6407 316.5C63.6407 315.987 63.7201 315.511 63.8787 315.072C64.0467 314.624 64.2847 314.237 64.5927 313.91C64.9007 313.583 65.2741 313.327 65.7127 313.14C66.1514 312.953 66.6461 312.86 67.1967 312.86C67.7474 312.86 68.2374 312.967 68.6667 313.182C69.1054 313.387 69.4694 313.672 69.7587 314.036C70.0574 314.391 70.2721 314.811 70.4027 315.296C70.5427 315.772 70.5941 316.281 70.5567 316.822H64.8587C64.8681 317.139 64.9334 317.433 65.0547 317.704C65.1854 317.975 65.3534 318.213 65.5587 318.418C65.7641 318.614 66.0067 318.768 66.2867 318.88C66.5667 318.992 66.8654 319.048 67.1827 319.048C67.6214 319.048 68.0134 318.959 68.3587 318.782C68.7134 318.595 68.9981 318.292 69.2127 317.872H70.4447C70.3607 318.18 70.2254 318.474 70.0387 318.754C69.8521 319.025 69.6187 319.263 69.3387 319.468C69.0681 319.673 68.7507 319.837 68.3867 319.958C68.0227 320.079 67.6167 320.14 67.1687 320.14ZM67.1547 313.924C66.9027 313.924 66.6554 313.961 66.4127 314.036C66.1701 314.111 65.9461 314.227 65.7407 314.386C65.5447 314.545 65.3721 314.745 65.2227 314.988C65.0734 315.231 64.9707 315.525 64.9147 315.87H69.2827C69.1707 315.217 68.9187 314.731 68.5267 314.414C68.1347 314.087 67.6774 313.924 67.1547 313.924Z\",\n fill: \"#10BBD5\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.6211 313H75.9651L78.3591 318.306L80.7531 313H82.0971L78.8631 320H77.8551L74.6211 313ZM85.4857 320.14C85.1123 320.14 84.7577 320.093 84.4217 320C84.0857 319.907 83.7917 319.771 83.5397 319.594C83.2877 319.407 83.0823 319.179 82.9237 318.908C82.765 318.637 82.6717 318.325 82.6437 317.97H83.8757C83.913 318.185 83.983 318.367 84.0857 318.516C84.1977 318.656 84.3283 318.773 84.4777 318.866C84.627 318.959 84.7857 319.025 84.9537 319.062C85.131 319.099 85.313 319.118 85.4997 319.118C85.8823 319.118 86.1997 319.043 86.4517 318.894C86.713 318.735 86.8437 318.502 86.8437 318.194C86.8437 317.914 86.755 317.685 86.5777 317.508C86.4003 317.331 86.1017 317.186 85.6817 317.074L84.6737 316.808C84.067 316.649 83.6143 316.393 83.3157 316.038C83.017 315.683 82.8677 315.254 82.8677 314.75C82.8677 314.461 82.9283 314.199 83.0497 313.966C83.171 313.733 83.339 313.537 83.5537 313.378C83.7683 313.21 84.0203 313.084 84.3097 313C84.6083 312.907 84.935 312.86 85.2897 312.86C85.663 312.86 85.999 312.911 86.2977 313.014C86.5963 313.117 86.853 313.261 87.0677 313.448C87.2917 313.625 87.469 313.835 87.5997 314.078C87.7303 314.321 87.8097 314.582 87.8377 314.862H86.6337C86.5403 314.554 86.3723 314.311 86.1297 314.134C85.8963 313.957 85.6163 313.868 85.2897 313.868C84.9537 313.868 84.669 313.947 84.4357 314.106C84.2023 314.255 84.0857 314.465 84.0857 314.736C84.0857 314.997 84.1697 315.207 84.3377 315.366C84.5057 315.515 84.7763 315.641 85.1497 315.744L86.2697 316.038C86.8577 316.187 87.301 316.439 87.5997 316.794C87.9077 317.139 88.0617 317.578 88.0617 318.11C88.0617 318.455 87.9963 318.759 87.8657 319.02C87.735 319.272 87.553 319.482 87.3197 319.65C87.0863 319.818 86.811 319.939 86.4937 320.014C86.1857 320.098 85.8497 320.14 85.4857 320.14ZM93.3258 310.06H94.6278V314.302H100.074V310.06H101.376V320H100.074V315.52H94.6278V320H93.3258V310.06ZM108.456 318.936C108.997 318.936 109.501 318.838 109.968 318.642C110.444 318.437 110.85 318.157 111.186 317.802C111.531 317.447 111.802 317.037 111.998 316.57C112.194 316.094 112.292 315.581 112.292 315.03C112.292 314.489 112.194 313.98 111.998 313.504C111.802 313.028 111.531 312.613 111.186 312.258C110.85 311.903 110.444 311.628 109.968 311.432C109.501 311.227 108.997 311.124 108.456 311.124C107.914 311.124 107.41 311.227 106.944 311.432C106.477 311.628 106.071 311.903 105.726 312.258C105.39 312.613 105.124 313.028 104.928 313.504C104.732 313.98 104.634 314.489 104.634 315.03C104.634 315.581 104.732 316.094 104.928 316.57C105.124 317.037 105.39 317.447 105.726 317.802C106.071 318.157 106.477 318.437 106.944 318.642C107.41 318.838 107.914 318.936 108.456 318.936ZM108.456 320.168C107.737 320.168 107.065 320.037 106.44 319.776C105.824 319.505 105.282 319.141 104.816 318.684C104.349 318.217 103.98 317.671 103.71 317.046C103.448 316.421 103.318 315.749 103.318 315.03C103.318 314.311 103.448 313.639 103.71 313.014C103.98 312.389 104.349 311.847 104.816 311.39C105.282 310.923 105.824 310.559 106.44 310.298C107.065 310.027 107.737 309.892 108.456 309.892C109.174 309.892 109.846 310.027 110.472 310.298C111.097 310.559 111.638 310.923 112.096 311.39C112.562 311.847 112.926 312.389 113.188 313.014C113.458 313.639 113.594 314.311 113.594 315.03C113.594 315.749 113.458 316.421 113.188 317.046C112.926 317.671 112.562 318.217 112.096 318.684C111.638 319.141 111.097 319.505 110.472 319.776C109.846 320.037 109.174 320.168 108.456 320.168ZM115.556 310.06H118.412C119.178 310.06 119.882 310.186 120.526 310.438C121.17 310.69 121.726 311.04 122.192 311.488C122.668 311.927 123.037 312.449 123.298 313.056C123.569 313.663 123.704 314.321 123.704 315.03C123.704 315.739 123.569 316.397 123.298 317.004C123.037 317.611 122.668 318.138 122.192 318.586C121.726 319.025 121.17 319.37 120.526 319.622C119.882 319.874 119.178 320 118.412 320H115.556V310.06ZM118.412 318.782C119.01 318.782 119.551 318.689 120.036 318.502C120.531 318.315 120.951 318.054 121.296 317.718C121.642 317.382 121.908 316.985 122.094 316.528C122.29 316.071 122.388 315.571 122.388 315.03C122.388 314.489 122.29 313.989 122.094 313.532C121.908 313.075 121.642 312.678 121.296 312.342C120.951 312.006 120.531 311.745 120.036 311.558C119.551 311.371 119.01 311.278 118.412 311.278H116.858V318.782H118.412ZM125.646 310.06H126.948V318.768H131.75V320H125.646V310.06Z\",\n fill: \"white\",\n fillOpacity: 0.5\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.11 75.24C39.33 75.16 38.59 74.97 37.89 74.67C37.21 74.37 36.61 73.96 36.09 73.44C35.57 72.92 35.15 72.29 34.83 71.55C34.53 70.81 34.37 69.96 34.35 69H36.93C37.07 70.12 37.42 70.98 37.98 71.58C38.54 72.18 39.25 72.56 40.11 72.72V65.25L39.09 64.86C37.49 64.22 36.32 63.4 35.58 62.4C34.84 61.38 34.47 60.18 34.47 58.8C34.47 57.98 34.61 57.25 34.89 56.61C35.19 55.95 35.59 55.39 36.09 54.93C36.61 54.47 37.21 54.11 37.89 53.85C38.59 53.59 39.33 53.43 40.11 53.37V51.06H41.73V53.43C42.39 53.53 43.03 53.72 43.65 54C44.27 54.26 44.81 54.62 45.27 55.08C45.75 55.52 46.13 56.05 46.41 56.67C46.71 57.29 46.86 57.99 46.86 58.77H44.28C44.16 58.03 43.88 57.42 43.44 56.94C43 56.44 42.43 56.11 41.73 55.95V62.97L42.48 63.27C44.06 63.91 45.26 64.73 46.08 65.73C46.92 66.71 47.34 67.97 47.34 69.51C47.34 70.43 47.19 71.24 46.89 71.94C46.61 72.62 46.22 73.2 45.72 73.68C45.22 74.16 44.63 74.53 43.95 74.79C43.27 75.05 42.53 75.21 41.73 75.27V77.64H40.11V75.24ZM44.76 69.69C44.76 68.73 44.5 67.97 43.98 67.41C43.46 66.83 42.71 66.33 41.73 65.91V72.78C42.57 72.68 43.28 72.35 43.86 71.79C44.46 71.23 44.76 70.53 44.76 69.69ZM37.05 58.8C37.05 59.62 37.29 60.3 37.77 60.84C38.25 61.38 39.03 61.88 40.11 62.34V55.86C39.15 55.96 38.4 56.28 37.86 56.82C37.32 57.36 37.05 58.02 37.05 58.8ZM53.0238 56.25H48.9138L51.0138 53.7H55.6038V75H53.0238V56.25ZM67.7597 75.3C66.6597 75.3 65.6497 75.11 64.7297 74.73C63.8097 74.33 63.0097 73.78 62.3297 73.08C61.6697 72.38 61.1497 71.54 60.7697 70.56C60.4097 69.56 60.2297 68.47 60.2297 67.29V61.35C60.2297 60.17 60.4097 59.09 60.7697 58.11C61.1497 57.13 61.6697 56.29 62.3297 55.59C63.0097 54.87 63.8097 54.32 64.7297 53.94C65.6497 53.54 66.6597 53.34 67.7597 53.34C68.8597 53.34 69.8697 53.54 70.7897 53.94C71.7097 54.32 72.4997 54.87 73.1597 55.59C73.8397 56.29 74.3697 57.13 74.7497 58.11C75.1297 59.09 75.3197 60.17 75.3197 61.35V67.29C75.3197 68.47 75.1297 69.56 74.7497 70.56C74.3697 71.54 73.8397 72.38 73.1597 73.08C72.4997 73.78 71.7097 74.33 70.7897 74.73C69.8697 75.11 68.8597 75.3 67.7597 75.3ZM67.7597 72.78C69.2197 72.78 70.4097 72.3 71.3297 71.34C72.2697 70.38 72.7397 69.03 72.7397 67.29V61.35C72.7397 59.61 72.2697 58.26 71.3297 57.3C70.4097 56.34 69.2197 55.86 67.7597 55.86C67.0397 55.86 66.3697 55.99 65.7497 56.25C65.1497 56.49 64.6297 56.85 64.1897 57.33C63.7697 57.79 63.4297 58.36 63.1697 59.04C62.9297 59.72 62.8097 60.49 62.8097 61.35V67.29C62.8097 68.15 62.9297 68.92 63.1697 69.6C63.4297 70.28 63.7697 70.86 64.1897 71.34C64.6297 71.8 65.1497 72.16 65.7497 72.42C66.3697 72.66 67.0397 72.78 67.7597 72.78ZM86.4511 75.3C85.3511 75.3 84.3411 75.11 83.4211 74.73C82.5011 74.33 81.7011 73.78 81.0211 73.08C80.3611 72.38 79.8411 71.54 79.4611 70.56C79.1011 69.56 78.9211 68.47 78.9211 67.29V61.35C78.9211 60.17 79.1011 59.09 79.4611 58.11C79.8411 57.13 80.3611 56.29 81.0211 55.59C81.7011 54.87 82.5011 54.32 83.4211 53.94C84.3411 53.54 85.3511 53.34 86.4511 53.34C87.5511 53.34 88.5611 53.54 89.4811 53.94C90.4011 54.32 91.1911 54.87 91.8511 55.59C92.5311 56.29 93.0611 57.13 93.4411 58.11C93.8211 59.09 94.0111 60.17 94.0111 61.35V67.29C94.0111 68.47 93.8211 69.56 93.4411 70.56C93.0611 71.54 92.5311 72.38 91.8511 73.08C91.1911 73.78 90.4011 74.33 89.4811 74.73C88.5611 75.11 87.5511 75.3 86.4511 75.3ZM86.4511 72.78C87.9111 72.78 89.1011 72.3 90.0211 71.34C90.9611 70.38 91.4311 69.03 91.4311 67.29V61.35C91.4311 59.61 90.9611 58.26 90.0211 57.3C89.1011 56.34 87.9111 55.86 86.4511 55.86C85.7311 55.86 85.0611 55.99 84.4411 56.25C83.8411 56.49 83.3211 56.85 82.8811 57.33C82.4611 57.79 82.1211 58.36 81.8611 59.04C81.6211 59.72 81.5011 60.49 81.5011 61.35V67.29C81.5011 68.15 81.6211 68.92 81.8611 69.6C82.1211 70.28 82.4611 70.86 82.8811 71.34C83.3211 71.8 83.8411 72.16 84.4411 72.42C85.0611 72.66 85.7311 72.78 86.4511 72.78ZM97.8938 79.29H96.1838L98.1938 75C97.8338 74.82 97.5338 74.56 97.2938 74.22C97.0738 73.86 96.9638 73.45 96.9638 72.99C96.9638 72.39 97.1738 71.87 97.5938 71.43C98.0338 70.97 98.5638 70.74 99.1838 70.74C99.8038 70.74 100.324 70.97 100.744 71.43C101.184 71.87 101.404 72.39 101.404 72.99C101.404 73.25 101.364 73.49 101.284 73.71C101.204 73.93 101.104 74.14 100.984 74.34L97.8938 79.29ZM111.881 75.3C110.781 75.3 109.771 75.11 108.851 74.73C107.931 74.33 107.131 73.78 106.451 73.08C105.791 72.38 105.271 71.54 104.891 70.56C104.531 69.56 104.351 68.47 104.351 67.29V61.35C104.351 60.17 104.531 59.09 104.891 58.11C105.271 57.13 105.791 56.29 106.451 55.59C107.131 54.87 107.931 54.32 108.851 53.94C109.771 53.54 110.781 53.34 111.881 53.34C112.981 53.34 113.991 53.54 114.911 53.94C115.831 54.32 116.621 54.87 117.281 55.59C117.961 56.29 118.491 57.13 118.871 58.11C119.251 59.09 119.441 60.17 119.441 61.35V67.29C119.441 68.47 119.251 69.56 118.871 70.56C118.491 71.54 117.961 72.38 117.281 73.08C116.621 73.78 115.831 74.33 114.911 74.73C113.991 75.11 112.981 75.3 111.881 75.3ZM111.881 72.78C113.341 72.78 114.531 72.3 115.451 71.34C116.391 70.38 116.861 69.03 116.861 67.29V61.35C116.861 59.61 116.391 58.26 115.451 57.3C114.531 56.34 113.341 55.86 111.881 55.86C111.161 55.86 110.491 55.99 109.871 56.25C109.271 56.49 108.751 56.85 108.311 57.33C107.891 57.79 107.551 58.36 107.291 59.04C107.051 59.72 106.931 60.49 106.931 61.35V67.29C106.931 68.15 107.051 68.92 107.291 69.6C107.551 70.28 107.891 70.86 108.311 71.34C108.751 71.8 109.271 72.16 109.871 72.42C110.491 72.66 111.161 72.78 111.881 72.78ZM130.572 75.3C129.472 75.3 128.462 75.11 127.542 74.73C126.622 74.33 125.822 73.78 125.142 73.08C124.482 72.38 123.962 71.54 123.582 70.56C123.222 69.56 123.042 68.47 123.042 67.29V61.35C123.042 60.17 123.222 59.09 123.582 58.11C123.962 57.13 124.482 56.29 125.142 55.59C125.822 54.87 126.622 54.32 127.542 53.94C128.462 53.54 129.472 53.34 130.572 53.34C131.672 53.34 132.682 53.54 133.602 53.94C134.522 54.32 135.312 54.87 135.972 55.59C136.652 56.29 137.182 57.13 137.562 58.11C137.942 59.09 138.132 60.17 138.132 61.35V67.29C138.132 68.47 137.942 69.56 137.562 70.56C137.182 71.54 136.652 72.38 135.972 73.08C135.312 73.78 134.522 74.33 133.602 74.73C132.682 75.11 131.672 75.3 130.572 75.3ZM130.572 72.78C132.032 72.78 133.222 72.3 134.142 71.34C135.082 70.38 135.552 69.03 135.552 67.29V61.35C135.552 59.61 135.082 58.26 134.142 57.3C133.222 56.34 132.032 55.86 130.572 55.86C129.852 55.86 129.182 55.99 128.562 56.25C127.962 56.49 127.442 56.85 127.002 57.33C126.582 57.79 126.242 58.36 125.982 59.04C125.742 59.72 125.622 60.49 125.622 61.35V67.29C125.622 68.15 125.742 68.92 125.982 69.6C126.242 70.28 126.582 70.86 127.002 71.34C127.442 71.8 127.962 72.16 128.562 72.42C129.182 72.66 129.852 72.78 130.572 72.78ZM149.264 75.3C148.164 75.3 147.154 75.11 146.234 74.73C145.314 74.33 144.514 73.78 143.834 73.08C143.174 72.38 142.654 71.54 142.274 70.56C141.914 69.56 141.734 68.47 141.734 67.29V61.35C141.734 60.17 141.914 59.09 142.274 58.11C142.654 57.13 143.174 56.29 143.834 55.59C144.514 54.87 145.314 54.32 146.234 53.94C147.154 53.54 148.164 53.34 149.264 53.34C150.364 53.34 151.374 53.54 152.294 53.94C153.214 54.32 154.004 54.87 154.664 55.59C155.344 56.29 155.874 57.13 156.254 58.11C156.634 59.09 156.824 60.17 156.824 61.35V67.29C156.824 68.47 156.634 69.56 156.254 70.56C155.874 71.54 155.344 72.38 154.664 73.08C154.004 73.78 153.214 74.33 152.294 74.73C151.374 75.11 150.364 75.3 149.264 75.3ZM149.264 72.78C150.724 72.78 151.914 72.3 152.834 71.34C153.774 70.38 154.244 69.03 154.244 67.29V61.35C154.244 59.61 153.774 58.26 152.834 57.3C151.914 56.34 150.724 55.86 149.264 55.86C148.544 55.86 147.874 55.99 147.254 56.25C146.654 56.49 146.134 56.85 145.694 57.33C145.274 57.79 144.934 58.36 144.674 59.04C144.434 59.72 144.314 60.49 144.314 61.35V67.29C144.314 68.15 144.434 68.92 144.674 69.6C144.934 70.28 145.274 70.86 145.694 71.34C146.134 71.8 146.654 72.16 147.254 72.42C147.874 72.66 148.544 72.78 149.264 72.78Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.77 34.224C40.77 34.672 40.686 35.0873 40.518 35.47C40.3593 35.8527 40.1307 36.1887 39.832 36.478C39.5427 36.758 39.1833 36.9773 38.754 37.136C38.334 37.2947 37.8673 37.374 37.354 37.374H35.618V41H34.316V31.06H37.354C37.8673 31.06 38.334 31.144 38.754 31.312C39.1833 31.4707 39.5427 31.69 39.832 31.97C40.1307 32.25 40.3593 32.586 40.518 32.978C40.686 33.3607 40.77 33.776 40.77 34.224ZM39.482 34.224C39.482 33.944 39.4353 33.6873 39.342 33.454C39.2487 33.2207 39.1087 33.0153 38.922 32.838C38.7447 32.6607 38.5253 32.5253 38.264 32.432C38.0027 32.3293 37.6993 32.278 37.354 32.278H35.618V36.17H37.354C37.6993 36.17 38.0027 36.1233 38.264 36.03C38.5253 35.9273 38.7447 35.7873 38.922 35.61C39.1087 35.4327 39.2487 35.2273 39.342 34.994C39.4353 34.7607 39.482 34.504 39.482 34.224ZM45.2264 41.14C44.6944 41.14 44.2044 41.0467 43.7564 40.86C43.3084 40.664 42.921 40.4027 42.5944 40.076C42.2677 39.7493 42.011 39.3667 41.8244 38.928C41.647 38.48 41.5584 38.004 41.5584 37.5C41.5584 36.996 41.647 36.5247 41.8244 36.086C42.011 35.638 42.2677 35.2507 42.5944 34.924C42.921 34.5973 43.3084 34.3407 43.7564 34.154C44.2044 33.958 44.6944 33.86 45.2264 33.86C45.749 33.86 46.2344 33.958 46.6824 34.154C47.1304 34.3407 47.5177 34.5973 47.8444 34.924C48.171 35.2507 48.423 35.638 48.6004 36.086C48.787 36.5247 48.8804 36.996 48.8804 37.5C48.8804 38.004 48.787 38.48 48.6004 38.928C48.423 39.3667 48.171 39.7493 47.8444 40.076C47.5177 40.4027 47.1304 40.664 46.6824 40.86C46.2344 41.0467 45.749 41.14 45.2264 41.14ZM45.2264 40.02C45.5904 40.02 45.9217 39.9547 46.2204 39.824C46.519 39.6933 46.771 39.516 46.9764 39.292C47.191 39.0587 47.3544 38.7927 47.4664 38.494C47.5877 38.186 47.6484 37.8547 47.6484 37.5C47.6484 37.1547 47.5877 36.828 47.4664 36.52C47.3544 36.212 47.191 35.946 46.9764 35.722C46.771 35.4887 46.519 35.3067 46.2204 35.176C45.9217 35.0453 45.5904 34.98 45.2264 34.98C44.8624 34.98 44.531 35.0453 44.2324 35.176C43.9337 35.3067 43.677 35.4887 43.4624 35.722C43.2477 35.946 43.0797 36.212 42.9584 36.52C42.8464 36.828 42.7904 37.1547 42.7904 37.5C42.7904 37.8547 42.8464 38.186 42.9584 38.494C43.0797 38.7927 43.2477 39.0587 43.4624 39.292C43.677 39.516 43.9337 39.6933 44.2324 39.824C44.531 39.9547 44.8624 40.02 45.2264 40.02ZM50.6086 34H51.8126V35.358C51.8779 35.134 51.9806 34.9333 52.1206 34.756C52.2606 34.5787 52.4193 34.4293 52.5966 34.308C52.7739 34.1867 52.9606 34.0933 53.1566 34.028C53.3619 33.9627 53.5673 33.93 53.7726 33.93C53.9593 33.93 54.1413 33.9487 54.3186 33.986V35.232C54.2066 35.1853 54.0993 35.1573 53.9966 35.148C53.8939 35.1293 53.7819 35.12 53.6606 35.12C53.4366 35.12 53.2126 35.1713 52.9886 35.274C52.7739 35.3673 52.5779 35.512 52.4006 35.708C52.2326 35.904 52.0926 36.156 51.9806 36.464C51.8686 36.7627 51.8126 37.1173 51.8126 37.528V41H50.6086V34ZM58.4516 41.07C58.1436 41.07 57.8589 41.028 57.5976 40.944C57.3362 40.8507 57.1076 40.72 56.9116 40.552C56.7249 40.3747 56.5756 40.1507 56.4636 39.88C56.3609 39.6093 56.3096 39.292 56.3096 38.928V35.106H54.8256V34H56.3096V32.054H57.5136V34H59.5296V35.106H57.5136V38.774C57.5136 39.222 57.6116 39.5347 57.8076 39.712C58.0036 39.88 58.2929 39.964 58.6756 39.964C58.8249 39.964 58.9742 39.9547 59.1236 39.936C59.2822 39.908 59.4176 39.8707 59.5296 39.824V40.902C59.3802 40.9487 59.2169 40.986 59.0396 41.014C58.8622 41.0513 58.6662 41.07 58.4516 41.07ZM61.6556 35.106H60.1716V34H61.6556V32.586C61.6556 32.222 61.7069 31.9047 61.8096 31.634C61.9216 31.3633 62.0709 31.1393 62.2576 30.962C62.4536 30.7753 62.6823 30.64 62.9436 30.556C63.2049 30.4627 63.4896 30.416 63.7976 30.416C64.0123 30.416 64.2083 30.4347 64.3856 30.472C64.5629 30.5 64.7309 30.542 64.8896 30.598V31.662C64.7776 31.6153 64.6376 31.5827 64.4696 31.564C64.3109 31.536 64.1616 31.522 64.0216 31.522C63.6296 31.522 63.3356 31.6107 63.1396 31.788C62.9529 31.956 62.8596 32.264 62.8596 32.712V34H64.8896V35.106H62.8596V41H61.6556V35.106ZM69.1385 41.14C68.6065 41.14 68.1165 41.0467 67.6685 40.86C67.2205 40.664 66.8332 40.4027 66.5065 40.076C66.1798 39.7493 65.9232 39.3667 65.7365 38.928C65.5592 38.48 65.4705 38.004 65.4705 37.5C65.4705 36.996 65.5592 36.5247 65.7365 36.086C65.9232 35.638 66.1798 35.2507 66.5065 34.924C66.8332 34.5973 67.2205 34.3407 67.6685 34.154C68.1165 33.958 68.6065 33.86 69.1385 33.86C69.6612 33.86 70.1465 33.958 70.5945 34.154C71.0425 34.3407 71.4298 34.5973 71.7565 34.924C72.0832 35.2507 72.3352 35.638 72.5125 36.086C72.6992 36.5247 72.7925 36.996 72.7925 37.5C72.7925 38.004 72.6992 38.48 72.5125 38.928C72.3352 39.3667 72.0832 39.7493 71.7565 40.076C71.4298 40.4027 71.0425 40.664 70.5945 40.86C70.1465 41.0467 69.6612 41.14 69.1385 41.14ZM69.1385 40.02C69.5025 40.02 69.8338 39.9547 70.1325 39.824C70.4312 39.6933 70.6832 39.516 70.8885 39.292C71.1032 39.0587 71.2665 38.7927 71.3785 38.494C71.4998 38.186 71.5605 37.8547 71.5605 37.5C71.5605 37.1547 71.4998 36.828 71.3785 36.52C71.2665 36.212 71.1032 35.946 70.8885 35.722C70.6832 35.4887 70.4312 35.3067 70.1325 35.176C69.8338 35.0453 69.5025 34.98 69.1385 34.98C68.7745 34.98 68.4432 35.0453 68.1445 35.176C67.8458 35.3067 67.5892 35.4887 67.3745 35.722C67.1598 35.946 66.9918 36.212 66.8705 36.52C66.7585 36.828 66.7025 37.1547 66.7025 37.5C66.7025 37.8547 66.7585 38.186 66.8705 38.494C66.9918 38.7927 67.1598 39.0587 67.3745 39.292C67.5892 39.516 67.8458 39.6933 68.1445 39.824C68.4432 39.9547 68.7745 40.02 69.1385 40.02ZM74.5207 30.5H75.7247V41H74.5207V30.5ZM78.623 32.124C78.3804 32.124 78.175 32.0447 78.007 31.886C77.839 31.718 77.755 31.5127 77.755 31.27C77.755 31.0367 77.839 30.836 78.007 30.668C78.175 30.5 78.3804 30.416 78.623 30.416C78.8657 30.416 79.0664 30.5 79.225 30.668C79.3837 30.836 79.463 31.0367 79.463 31.27C79.463 31.5127 79.3837 31.718 79.225 31.886C79.0664 32.0447 78.8657 32.124 78.623 32.124ZM78.007 34H79.211V41H78.007V34ZM84.6014 41.14C84.0694 41.14 83.5794 41.0467 83.1314 40.86C82.6834 40.664 82.296 40.4027 81.9694 40.076C81.6427 39.7493 81.386 39.3667 81.1994 38.928C81.022 38.48 80.9334 38.004 80.9334 37.5C80.9334 36.996 81.022 36.5247 81.1994 36.086C81.386 35.638 81.6427 35.2507 81.9694 34.924C82.296 34.5973 82.6834 34.3407 83.1314 34.154C83.5794 33.958 84.0694 33.86 84.6014 33.86C85.124 33.86 85.6094 33.958 86.0574 34.154C86.5054 34.3407 86.8927 34.5973 87.2194 34.924C87.546 35.2507 87.798 35.638 87.9754 36.086C88.162 36.5247 88.2554 36.996 88.2554 37.5C88.2554 38.004 88.162 38.48 87.9754 38.928C87.798 39.3667 87.546 39.7493 87.2194 40.076C86.8927 40.4027 86.5054 40.664 86.0574 40.86C85.6094 41.0467 85.124 41.14 84.6014 41.14ZM84.6014 40.02C84.9654 40.02 85.2967 39.9547 85.5954 39.824C85.894 39.6933 86.146 39.516 86.3514 39.292C86.566 39.0587 86.7294 38.7927 86.8414 38.494C86.9627 38.186 87.0234 37.8547 87.0234 37.5C87.0234 37.1547 86.9627 36.828 86.8414 36.52C86.7294 36.212 86.566 35.946 86.3514 35.722C86.146 35.4887 85.894 35.3067 85.5954 35.176C85.2967 35.0453 84.9654 34.98 84.6014 34.98C84.2374 34.98 83.906 35.0453 83.6074 35.176C83.3087 35.3067 83.052 35.4887 82.8374 35.722C82.6227 35.946 82.4547 36.212 82.3334 36.52C82.2214 36.828 82.1654 37.1547 82.1654 37.5C82.1654 37.8547 82.2214 38.186 82.3334 38.494C82.4547 38.7927 82.6227 39.0587 82.8374 39.292C83.052 39.516 83.3087 39.6933 83.6074 39.824C83.906 39.9547 84.2374 40.02 84.6014 40.02ZM93.3606 41V30.5H94.5646V35.078C94.8072 34.658 95.1246 34.35 95.5166 34.154C95.9086 33.958 96.3332 33.86 96.7906 33.86C97.1826 33.86 97.5419 33.9253 97.8686 34.056C98.1952 34.1867 98.4706 34.378 98.6946 34.63C98.9279 34.8727 99.1099 35.1713 99.2406 35.526C99.3712 35.8713 99.4366 36.2587 99.4366 36.688V41H98.2466V36.87C98.2466 36.282 98.0926 35.82 97.7846 35.484C97.4859 35.1387 97.0892 34.966 96.5946 34.966C96.3146 34.966 96.0486 35.022 95.7966 35.134C95.5539 35.246 95.3392 35.414 95.1526 35.638C94.9752 35.8527 94.8306 36.1187 94.7186 36.436C94.6159 36.7533 94.5646 37.1173 94.5646 37.528V41H93.3606ZM104.713 41.14C104.181 41.14 103.691 41.0467 103.243 40.86C102.795 40.664 102.407 40.4027 102.081 40.076C101.754 39.7493 101.497 39.3667 101.311 38.928C101.133 38.48 101.045 38.004 101.045 37.5C101.045 36.996 101.133 36.5247 101.311 36.086C101.497 35.638 101.754 35.2507 102.081 34.924C102.407 34.5973 102.795 34.3407 103.243 34.154C103.691 33.958 104.181 33.86 104.713 33.86C105.235 33.86 105.721 33.958 106.169 34.154C106.617 34.3407 107.004 34.5973 107.331 34.924C107.657 35.2507 107.909 35.638 108.087 36.086C108.273 36.5247 108.367 36.996 108.367 37.5C108.367 38.004 108.273 38.48 108.087 38.928C107.909 39.3667 107.657 39.7493 107.331 40.076C107.004 40.4027 106.617 40.664 106.169 40.86C105.721 41.0467 105.235 41.14 104.713 41.14ZM104.713 40.02C105.077 40.02 105.408 39.9547 105.707 39.824C106.005 39.6933 106.257 39.516 106.463 39.292C106.677 39.0587 106.841 38.7927 106.953 38.494C107.074 38.186 107.135 37.8547 107.135 37.5C107.135 37.1547 107.074 36.828 106.953 36.52C106.841 36.212 106.677 35.946 106.463 35.722C106.257 35.4887 106.005 35.3067 105.707 35.176C105.408 35.0453 105.077 34.98 104.713 34.98C104.349 34.98 104.017 35.0453 103.719 35.176C103.42 35.3067 103.163 35.4887 102.949 35.722C102.734 35.946 102.566 36.212 102.445 36.52C102.333 36.828 102.277 37.1547 102.277 37.5C102.277 37.8547 102.333 38.186 102.445 38.494C102.566 38.7927 102.734 39.0587 102.949 39.292C103.163 39.516 103.42 39.6933 103.719 39.824C104.017 39.9547 104.349 40.02 104.713 40.02ZM110.095 30.5H111.299V41H110.095V30.5ZM116.465 41.14C115.971 41.14 115.513 41.0467 115.093 40.86C114.683 40.664 114.323 40.4027 114.015 40.076C113.707 39.74 113.465 39.3527 113.287 38.914C113.119 38.4753 113.035 38.004 113.035 37.5C113.035 36.996 113.119 36.5247 113.287 36.086C113.465 35.6473 113.707 35.2647 114.015 34.938C114.323 34.602 114.683 34.3407 115.093 34.154C115.513 33.958 115.971 33.86 116.465 33.86C116.997 33.86 117.483 33.9813 117.921 34.224C118.36 34.4573 118.696 34.742 118.929 35.078V30.5H120.133V41H118.929V39.922C118.696 40.258 118.36 40.5473 117.921 40.79C117.483 41.0233 116.997 41.14 116.465 41.14ZM116.647 40.034C117.002 40.034 117.324 39.9687 117.613 39.838C117.903 39.7073 118.15 39.53 118.355 39.306C118.57 39.0727 118.733 38.802 118.845 38.494C118.967 38.186 119.027 37.8547 119.027 37.5C119.027 37.1453 118.967 36.814 118.845 36.506C118.733 36.198 118.57 35.932 118.355 35.708C118.15 35.4747 117.903 35.2927 117.613 35.162C117.324 35.0313 117.002 34.966 116.647 34.966C116.293 34.966 115.966 35.0313 115.667 35.162C115.378 35.2927 115.126 35.4747 114.911 35.708C114.706 35.932 114.543 36.198 114.421 36.506C114.309 36.814 114.253 37.1453 114.253 37.5C114.253 37.8547 114.309 38.186 114.421 38.494C114.543 38.802 114.706 39.0727 114.911 39.306C115.126 39.53 115.378 39.7073 115.667 39.838C115.966 39.9687 116.293 40.034 116.647 40.034ZM123.016 32.124C122.773 32.124 122.568 32.0447 122.4 31.886C122.232 31.718 122.148 31.5127 122.148 31.27C122.148 31.0367 122.232 30.836 122.4 30.668C122.568 30.5 122.773 30.416 123.016 30.416C123.258 30.416 123.459 30.5 123.618 30.668C123.776 30.836 123.856 31.0367 123.856 31.27C123.856 31.5127 123.776 31.718 123.618 31.886C123.459 32.0447 123.258 32.124 123.016 32.124ZM122.4 34H123.604V41H122.4V34ZM125.886 34H127.09V35.078C127.333 34.658 127.65 34.35 128.042 34.154C128.434 33.958 128.859 33.86 129.316 33.86C129.708 33.86 130.067 33.9253 130.394 34.056C130.721 34.1867 130.996 34.378 131.22 34.63C131.453 34.8727 131.635 35.1713 131.766 35.526C131.897 35.8713 131.962 36.2587 131.962 36.688V41H130.772V36.87C130.772 36.282 130.618 35.82 130.31 35.484C130.011 35.1387 129.615 34.966 129.12 34.966C128.84 34.966 128.574 35.022 128.322 35.134C128.079 35.246 127.865 35.414 127.678 35.638C127.501 35.8527 127.356 36.1187 127.244 36.436C127.141 36.7533 127.09 37.1173 127.09 37.528V41H125.886V34ZM137.21 44.066C136.743 44.066 136.314 44.0053 135.922 43.884C135.53 43.7627 135.185 43.5947 134.886 43.38C134.597 43.1653 134.359 42.9087 134.172 42.61C133.995 42.3207 133.878 41.9987 133.822 41.644H134.998C135.157 42.1107 135.427 42.4513 135.81 42.666C136.193 42.89 136.669 43.002 137.238 43.002C137.555 43.002 137.849 42.9507 138.12 42.848C138.391 42.7453 138.624 42.5913 138.82 42.386C139.016 42.1807 139.17 41.924 139.282 41.616C139.394 41.3173 139.45 40.972 139.45 40.58V39.754C139.207 40.1087 138.871 40.4027 138.442 40.636C138.013 40.8693 137.537 40.986 137.014 40.986C136.529 40.986 136.076 40.8973 135.656 40.72C135.236 40.5333 134.872 40.2813 134.564 39.964C134.256 39.6373 134.013 39.2593 133.836 38.83C133.668 38.3913 133.584 37.92 133.584 37.416C133.584 36.9213 133.668 36.4593 133.836 36.03C134.013 35.5913 134.256 35.2133 134.564 34.896C134.872 34.5693 135.236 34.3173 135.656 34.14C136.076 33.9533 136.529 33.86 137.014 33.86C137.537 33.86 138.013 33.9767 138.442 34.21C138.871 34.434 139.207 34.7233 139.45 35.078V34H140.654V40.566C140.654 41.154 140.561 41.6627 140.374 42.092C140.197 42.5307 139.954 42.8947 139.646 43.184C139.338 43.4827 138.974 43.702 138.554 43.842C138.134 43.9913 137.686 44.066 137.21 44.066ZM137.182 39.866C137.527 39.866 137.845 39.8053 138.134 39.684C138.433 39.5627 138.685 39.3947 138.89 39.18C139.095 38.956 139.254 38.6947 139.366 38.396C139.487 38.0973 139.548 37.7707 139.548 37.416C139.548 37.0707 139.487 36.7487 139.366 36.45C139.254 36.142 139.095 35.8807 138.89 35.666C138.685 35.4513 138.433 35.2833 138.134 35.162C137.845 35.0313 137.527 34.966 137.182 34.966C136.827 34.966 136.505 35.0313 136.216 35.162C135.927 35.2833 135.679 35.4513 135.474 35.666C135.269 35.8807 135.105 36.142 134.984 36.45C134.872 36.7487 134.816 37.0707 134.816 37.416C134.816 37.7707 134.872 38.0973 134.984 38.396C135.105 38.6947 135.269 38.956 135.474 39.18C135.679 39.3947 135.927 39.5627 136.216 39.684C136.505 39.8053 136.827 39.866 137.182 39.866ZM145.175 41.14C144.802 41.14 144.447 41.0933 144.111 41C143.775 40.9067 143.481 40.7713 143.229 40.594C142.977 40.4073 142.772 40.1787 142.613 39.908C142.454 39.6373 142.361 39.3247 142.333 38.97H143.565C143.602 39.1847 143.672 39.3667 143.775 39.516C143.887 39.656 144.018 39.7727 144.167 39.866C144.316 39.9593 144.475 40.0247 144.643 40.062C144.82 40.0993 145.002 40.118 145.189 40.118C145.572 40.118 145.889 40.0433 146.141 39.894C146.402 39.7353 146.533 39.502 146.533 39.194C146.533 38.914 146.444 38.6853 146.267 38.508C146.09 38.3307 145.791 38.186 145.371 38.074L144.363 37.808C143.756 37.6493 143.304 37.3927 143.005 37.038C142.706 36.6833 142.557 36.254 142.557 35.75C142.557 35.4607 142.618 35.1993 142.739 34.966C142.86 34.7327 143.028 34.5367 143.243 34.378C143.458 34.21 143.71 34.084 143.999 34C144.298 33.9067 144.624 33.86 144.979 33.86C145.352 33.86 145.688 33.9113 145.987 34.014C146.286 34.1167 146.542 34.2613 146.757 34.448C146.981 34.6253 147.158 34.8353 147.289 35.078C147.42 35.3207 147.499 35.582 147.527 35.862H146.323C146.23 35.554 146.062 35.3113 145.819 35.134C145.586 34.9567 145.306 34.868 144.979 34.868C144.643 34.868 144.358 34.9473 144.125 35.106C143.892 35.2553 143.775 35.4653 143.775 35.736C143.775 35.9973 143.859 36.2073 144.027 36.366C144.195 36.5153 144.466 36.6413 144.839 36.744L145.959 37.038C146.547 37.1873 146.99 37.4393 147.289 37.794C147.597 38.1393 147.751 38.578 147.751 39.11C147.751 39.4553 147.686 39.7587 147.555 40.02C147.424 40.272 147.242 40.482 147.009 40.65C146.776 40.818 146.5 40.9393 146.183 41.014C145.875 41.098 145.539 41.14 145.175 41.14Z\",\n fill: \"white\",\n fillOpacity: 0.5\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.65351 278.556L25.539 271.98C27.1782 271.377 28.9467 271.214 30.6685 271.507L43.143 273.631C46.0603 274.128 49.0477 273.307 51.3016 271.389L61.5113 262.702C65.2361 259.533 70.7066 259.523 74.4432 262.678L83.0041 269.907C86.2911 272.683 90.985 273.045 94.6589 270.807L103.248 265.574C106.613 263.524 110.868 263.64 114.115 265.872L121.919 271.235C126.268 274.224 132.191 273.319 135.449 269.168L144.965 257.045C147.348 254.008 151.266 252.615 155.031 253.464L164.965 255.704C167.806 256.345 170.785 255.715 173.124 253.98L185.134 245.067C187.773 243.109 191.206 242.572 194.317 243.631L208.654 248.514C209.609 248.839 210.509 249.307 211.325 249.902L228.328 262.31C229.142 262.904 230.042 263.372 230.996 263.697L246.377 268.939C248.881 269.793 251.622 269.619 253.998 268.456L265.313 262.919C268.556 261.331 272.404 261.616 275.378 263.663L285.057 270.325C288.8 272.901 293.809 272.63 297.252 269.665L306.541 261.667C309.496 259.123 313.66 258.528 317.208 260.143L326.889 264.548C330.195 266.053 334.056 265.647 336.976 263.488L346.994 256.081C350.177 253.728 354.448 253.474 357.887 255.432L365.72 259.893C370.003 262.331 375.424 261.286 378.493 257.43L386.493 247.378C390.241 242.669 397.271 242.314 401.474 246.622L406.038 251.299C410.479 255.849 417.982 255.155 421.512 249.867L431.698 234.61C434.298 230.714 439.255 229.145 443.624 230.836L458.847 236.727C459.319 236.91 459.803 237.056 460.297 237.165L478.803 241.258C479.936 241.509 481.104 241.56 482.255 241.41L498.487 239.295C499.994 239.099 501.526 239.249 502.966 239.733L519.598 245.326C521.034 245.809 522.562 245.959 524.065 245.765L538.513 243.9C540.924 243.589 543.14 242.41 544.745 240.583L558.448 224.988C559.547 223.737 560.94 222.781 562.501 222.205L580.456 215.587L601.47 207.518C602.194 207.239 602.949 207.046 603.719 206.943L620.003 204.748C621.378 204.562 622.699 204.093 623.883 203.369L642.29 192.117L658.289 182.245C660.831 180.677 663.94 180.327 666.766 181.291L679.002 185.461C681.578 186.339 684.4 186.129 686.817 184.88L696.052 180.11C699.762 178.194 704.271 178.784 707.363 181.59L719.941 193.007C722.118 194.983 725.054 195.901 727.969 195.517L740.576 193.855C742.408 193.613 744.271 193.884 745.958 194.637L754.01 198.229\",\n stroke: \"#303034\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.09498 267.092L22.5469 255.534C25.3796 253.415 29.1211 252.95 32.3861 254.312L38.7048 256.947C43.4494 258.926 48.9214 256.985 51.3587 252.459L57.7512 240.587C61.49 233.643 71.4194 233.558 75.2775 240.436L80.5496 249.834C84.0558 256.085 92.8053 256.726 97.1857 251.054L99.1425 248.52C103.302 243.135 111.509 243.386 115.331 249.016L118.127 253.135C122.747 259.941 133.151 258.569 135.848 250.797L143.377 229.102C145.39 223.301 152.107 220.668 157.526 223.555L159.858 224.798C164.498 227.27 170.26 225.727 173.044 221.268L181.386 207.902C184.518 202.885 191.296 201.667 195.978 205.28L207.062 213.833C207.969 214.533 208.749 215.383 209.368 216.347L227.809 245.066C228.428 246.029 229.207 246.878 230.112 247.578L242.889 257.443C246.902 260.542 252.6 260.146 256.147 256.523L261.143 251.418C265.566 246.9 273.019 247.569 276.567 252.802L282.093 260.955C286.321 267.191 295.665 266.69 299.201 260.038L304.113 250.797C307.274 244.85 315.29 243.665 320.036 248.441L323.046 251.47C327.585 256.037 335.194 255.188 338.613 249.732L343.692 241.628C347.338 235.81 355.629 235.313 359.944 240.654L361.534 242.622C366.453 248.71 376.143 247.043 378.744 239.661L383.691 225.625C386.664 217.186 398.375 216.6 402.175 224.701L402.915 226.278C406.832 234.627 419.001 233.675 421.572 224.818L429.569 197.268C431.603 190.262 440.212 187.721 445.724 192.5L457.022 202.297C457.607 202.804 458.248 203.241 458.934 203.6L475.926 212.499C478.026 213.599 480.449 213.917 482.762 213.396L494.797 210.687C497.682 210.037 500.706 210.698 503.058 212.491L517.108 223.207C519.452 224.995 522.466 225.658 525.344 225.018L535.994 222.648C539.24 221.926 541.915 219.637 543.131 216.542L556.926 181.407C557.604 179.68 558.749 178.175 560.233 177.062L577.932 163.785L597.885 148.134C599.029 147.236 600.354 146.599 601.77 146.267L615.588 143.02C617.83 142.493 619.821 141.209 621.226 139.384L638.619 116.781L651.895 99.3551C655.258 94.9419 661.57 94.1095 665.961 97.5003L671.93 102.109C676.032 105.276 681.874 104.785 685.389 100.978L688.247 97.8823C692.935 92.8043 701.238 93.8995 704.449 100.019L716.572 123.122C718.68 127.14 723.23 129.235 727.654 128.224L734.708 126.613C738.042 125.851 741.533 126.845 743.965 129.248L750.987 136.187\",\n stroke: \"#10BBD5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHoldingsDark);\nexport default __webpack_public_path__ + \"static/media/holdingsDark.69f19b13.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgGift(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 13 14\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.49383 0C3.25908 0 2.24691 0.999826 2.24691 2.21951C2.24691 2.66855 2.4177 3.06412 2.65268 3.41463H0.864197C0.392832 3.41463 0 3.80268 0 4.26829V6.65854C0 7.05811 0.311403 7.35172 0.691358 7.44083V11.7805C0.691358 13.0002 1.70353 14 2.93827 14H9.50617C10.7409 14 11.7531 13.0002 11.7531 11.7805V7.44083C12.133 7.35172 12.4444 7.05811 12.4444 6.65854V4.26829C12.4444 3.80268 12.0516 3.41463 11.5802 3.41463H9.79176C10.0267 3.06412 10.1975 2.66855 10.1975 2.21951C10.1975 0.999826 9.18536 0 7.95062 0C7.24253 0 6.635 0.34914 6.22222 0.859661C5.80944 0.34914 5.20191 0 4.49383 0ZM4.49383 1.02439C5.16792 1.02439 5.7037 1.55364 5.7037 2.21951V3.41463H4.49383C3.81973 3.41463 3.28395 2.88539 3.28395 2.21951C3.28395 1.55364 3.81973 1.02439 4.49383 1.02439ZM7.95062 1.02439C8.62471 1.02439 9.16049 1.55364 9.16049 2.21951C9.16049 2.88539 8.62471 3.41463 7.95062 3.41463H6.74074V2.21951C6.74074 1.55364 7.27652 1.02439 7.95062 1.02439ZM1.03704 4.43902H4.49383H5.7037V6.4878H1.03704V4.43902ZM6.74074 4.43902H7.95062H11.4074V6.4878H6.74074V4.43902ZM1.72839 7.5122H5.7037V12.9756H2.93827C2.26418 12.9756 1.72839 12.4464 1.72839 11.7805V7.5122ZM6.74074 7.5122H10.716V11.7805C10.716 12.4464 10.1803 12.9756 9.50617 12.9756H6.74074V7.5122Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGift);\nexport default __webpack_public_path__ + \"static/media/gift.b014e457.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLightning(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 6 11\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.72559 6.19487e-05C2.43177 -0.00371155 2.15004 0.165109 2.02441 0.451234L0.0976562 4.84967C0.0366562 4.99117 0 5.15247 0 5.31647C0 5.95897 0.520586 6.47858 1.16309 6.47858H1.28906H3.16113L2.52441 9.55182C2.45341 9.89332 2.62844 10.2491 2.96094 10.3946C3.34244 10.5616 3.7866 10.3884 3.9541 10.0069L5.88086 5.60944C5.94186 5.46794 5.97852 5.30664 5.97852 5.14264C5.97802 4.50014 5.45695 3.97955 4.81445 3.97955H4.68945H2.81738L3.4541 0.907288C3.5251 0.565788 3.35008 0.209038 3.01758 0.0635385C2.9222 0.0217885 2.82352 0.00131945 2.72559 6.19487e-05Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLightning);\nexport default __webpack_public_path__ + \"static/media/lightning.2b894b74.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useAppSelector } from 'store';\nimport { ModalV3 } from 'components/modal/ModalV3';\nimport { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { prettifyNumber, toBigNumber } from 'utils/helperFunctions';\nimport { shrinkToken } from 'utils/formulas';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { ReactComponent as IconGift } from 'assets/icons/gift.svg';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { confirmLeaveNotification } from 'services/notifications/notifications';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\n\ninterface Props {\n holding: Holding;\n renderButton: (onClick: () => void) => React.ReactNode;\n}\n\nexport const V3UnstakeModal = ({ holding, renderButton }: Props) => {\n const account = useAppSelector((state) => state.user.account);\n const [isOpen, setIsOpen] = useState(false);\n const [txBusy, setTxBusy] = useState(false);\n const onClose = async () => {\n setIsOpen(false);\n };\n\n const dispatch = useDispatch();\n\n const programs = holding.programs.filter((p) =>\n toBigNumber(p.tokenAmountWei).gt(0)\n );\n\n const programsMerged = programs.map((p) => ({\n ...p,\n ...holding.pool.programs.find((pp) => pp.id === p.id),\n }));\n\n const activePrograms = programsMerged.filter((p) => p.isActive);\n const inactivePrograms = programsMerged.filter((p) => !p.isActive);\n\n const handleLeaveClick = async (\n id: string,\n poolTokenAmountWei: string,\n tokenAmountWei: string\n ) => {\n if (!account) {\n console.error('handleLeaveClick because arguments are not defined');\n return;\n }\n try {\n setTxBusy(true);\n const tx = await ContractsApi.StandardRewards.write.leave(\n id,\n poolTokenAmountWei\n );\n confirmLeaveNotification(\n dispatch,\n tx.hash,\n shrinkToken(tokenAmountWei, holding.pool.decimals),\n holding.pool.reserveToken.symbol\n );\n onClose();\n setTxBusy(false);\n await tx.wait();\n await updatePortfolioData(dispatch);\n } catch (e) {\n console.error('handleLeaveClick', e);\n onClose();\n setTxBusy(false);\n }\n };\n\n return (\n <>\n {renderButton(() => setIsOpen(true))}\n \n
\n
\n \n
\n

Reward program you have joined

\n {activePrograms.map((program) => (\n \n
\n
\n {prettifyNumber(\n shrinkToken(program.tokenAmountWei, holding.pool.decimals)\n )}{' '}\n {holding.pool.reserveToken.symbol}\n
\n
Program ID: {program.id}
\n
APR: {holding.pool.apr.standardRewards.toFixed(2)}%
\n
\n
\n \n handleLeaveClick(\n program.id,\n program.poolTokenAmountWei,\n program.tokenAmountWei\n )\n }\n >\n Leave\n \n
\n
\n ))}\n {inactivePrograms.length > 0 && (\n
\n
\n You have joined an inactive program!\n
\n
\n First leave, then join an active program to earn more bonuses.\n
\n {inactivePrograms.map((program) => (\n \n
\n
\n {prettifyNumber(\n shrinkToken(\n program.tokenAmountWei,\n holding.pool.decimals\n )\n )}{' '}\n {holding.pool.reserveToken.symbol}\n
\n
Program ID: {program.id}
\n
APR: 0%
\n
\n\n
\n \n handleLeaveClick(\n program.id,\n program.poolTokenAmountWei,\n program.tokenAmountWei\n )\n }\n >\n Leave\n \n
\n
\n ))}\n \n )}\n \n \n \n );\n};\n","import { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { prettifyNumber, toBigNumber } from 'utils/helperFunctions';\nimport { ReactComponent as IconGift } from 'assets/icons/gift.svg';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { V3UnstakeModal } from 'elements/earn/portfolio/v3/holdings/V3UnstakeModal';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\nexport const V3HoldingsItemStaked = ({ holding }: { holding: Holding }) => {\n const { pool } = holding;\n const isDisabled = toBigNumber(holding.stakedTokenBalance).isZero();\n\n if (!holding.hasLegacyStake && !pool.latestProgram?.isActive) {\n return null;\n }\n\n return (\n
\n
\n \n Earning Rewards\n
\n
\n (\n \n {prettifyNumber(holding.stakedTokenBalance)}{' '}\n {pool.reserveToken.symbol}\n
\n )}\n >\n {holding.stakedTokenBalance} {pool.reserveToken.symbol}\n \n\n
\n ({prettifyNumber(holding.stakedPoolTokenBalance)} bn\n {pool.reserveToken.symbol})\n
\n
\n\n (\n \n Manage Rewards\n \n )}\n />\n \n );\n};\n","import { Dialog, Transition } from '@headlessui/react';\nimport { Fragment, memo, ReactNode } from 'react';\nimport { ReactComponent as IconBancor } from 'assets/icons/bancor.svg';\nimport { ReactComponent as IconTimes } from 'assets/icons/times.svg';\n\ninterface Props {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n children: ReactNode;\n title: string;\n titleElement?: ReactNode;\n}\n\nconst ModalFullscreenV3 = ({\n isOpen,\n setIsOpen,\n children,\n title,\n titleElement,\n}: Props) => {\n return (\n <>\n \n setIsOpen(false)}\n >\n
\n
\n

\n \n {title}\n

\n
\n {titleElement && titleElement}\n \n
\n
\n\n
\n {children}\n
\n
\n \n \n \n );\n};\n\nexport default memo(ModalFullscreenV3);\n","import { memo, SVGProps } from 'react';\n\ninterface Props extends SVGProps {\n percentage: number | string;\n className?: string;\n strokeColor?: string;\n strokeWidth?: number;\n}\n\nexport const CirclePercentage = memo(\n ({\n percentage,\n strokeColor = 'text-primary',\n strokeWidth = 4,\n className = '',\n ...props\n }: Props) => {\n const number = Number(percentage).toFixed(0);\n return (\n \n \n \n \n );\n }\n);\n","import { Token } from 'services/observables/tokens';\nimport BigNumber from 'bignumber.js';\nimport axios from 'axios';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport {\n ApyVisionData,\n ApyVisionNonUniPosition,\n ApyVisionNonUniPositionToken,\n ApyVisionNonUniResponse,\n ApyVisionUniPosition,\n ExternalHolding,\n} from './externalHoldings.types';\nimport { utils } from 'ethers';\nimport { ethToken, wethToken } from 'services/web3/config';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\n\nconst fetchApyVisionUniswap = async (\n user: string\n): Promise => {\n // eslint-disable-next-line\n const url = `https://stats.apy.vision/api/v1/uniswapv3/user_positions/${user}?accessToken=${process.env.REACT_APP_APY_VISION_TOKEN}`;\n try {\n // TODO remove comment when uni v3 is supported - further adjustemnts may be needed\n // const { data } = await axios.get(url);\n // return data.result;\n return [];\n // eslint-disable-next-line no-unreachable\n } catch (e: any) {\n console.error('fetchApyVisionUniswap failed: ', e.message);\n return [];\n }\n};\n\nconst fetchApyVisionNonUniswap = async (\n user: string\n): Promise => {\n const url = `https://api.apy.vision/portfolio/1/core/${user}?accessToken=${process.env.REACT_APP_APY_VISION_TOKEN}&isInWallet=true`;\n try {\n const { data } = await axios.get(url);\n return data.userPools;\n } catch (e: any) {\n console.error('fetchApyVisionNonUniswap failed: ', e.message);\n return [];\n }\n};\n\nexport const fetchExternalHoldings = async (\n user: string\n): Promise => {\n const positionsUni = await fetchApyVisionUniswap(user);\n const positionsNonUni = await fetchApyVisionNonUniswap(user);\n return { positionsUni, positionsNonUni };\n};\n\nconst REKT_STATUS_THRESHOLD = -50;\nconst getRektStatus = (usdValue: number, hodlValue: number): string => {\n const rektUsdValue = new BigNumber(usdValue).minus(hodlValue);\n const rektAtRisk = new BigNumber(rektUsdValue).lt(REKT_STATUS_THRESHOLD);\n return rektAtRisk ? prettifyNumber(rektUsdValue.times(-1), true) : 'At risk';\n};\n\nexport enum AMMProvider {\n UniswapV2 = 'uniswap_eth',\n UniswapV3 = 'uniswapv3_eth',\n Sushiswap = 'sushiswap_eth',\n}\n\nconst getProviderName = (key: AMMProvider): string | undefined => {\n switch (key) {\n case AMMProvider.Sushiswap:\n return 'Sushiswap';\n case AMMProvider.UniswapV2:\n return 'Uniswap V2';\n case AMMProvider.UniswapV3:\n return 'Uniswap V3';\n // TODO remove comments once supported\n // case 'balancerv2_eth':\n // return 'Balancer V2';\n // case 'oneinch_eth':\n // return '1inch';\n // case 'balancer_eth':\n // return 'Balancer V2';\n // case 'kyber_eth':\n // return 'Kyber';\n // case 'curve_eth':\n // return 'Curve';\n default:\n return undefined;\n }\n};\n\nexport const getExternalHoldingsUni = (\n positions: ApyVisionUniPosition[],\n tokensMap: Map\n): ExternalHolding[] => {\n return positions\n .map((pos) => {\n const token0 = tokensMap.get(utils.getAddress(pos.token0_id));\n const token1 = tokensMap.get(utils.getAddress(pos.token1_id));\n if (!token0 && !token1) {\n return undefined;\n }\n const tokens = [token0, token1].filter((t) => !!t) as Token[];\n const usdValue = pos.current_day_data.position_usd_value_at_block;\n const rektStatus = getRektStatus(\n usdValue,\n pos.current_day_data.hodl_value\n );\n const ammName = 'Uniswap V3';\n const externalHolding: ExternalHolding = {\n ammKey: AMMProvider.UniswapV3,\n ammName,\n tokens,\n rektStatus,\n usdValue,\n // TODO add poolTokenAddress\n poolTokenAddress: '',\n poolTokenBalanceWei: '',\n name: '',\n };\n return externalHolding;\n })\n .filter((pos) => !!pos) as ExternalHolding[];\n};\n\nexport const getExternalHoldingsNonUni = (\n positions: ApyVisionNonUniPosition[],\n tokensMap: Map\n): ExternalHolding[] => {\n return (\n positions\n // TODO Remove this filter once we support more than 2 reseves\n .filter((pos) => pos.tokens.length === 2)\n .map((pos) => {\n let nonBancorToken: ApyVisionNonUniPositionToken | undefined =\n undefined;\n const tokens = pos.tokens\n .map((token) => {\n const address = utils.getAddress(token.tokenAddress);\n const isETH = address === utils.getAddress(wethToken);\n const tkn = tokensMap.get(isETH ? ethToken : address);\n if (!tkn) {\n nonBancorToken = token;\n return undefined;\n }\n if (isETH) {\n return {\n ...tkn,\n address: wethToken,\n balance: token.tokenCurrentBalance.toString(),\n } as Token;\n }\n return {\n ...tkn,\n balance: token.tokenCurrentBalance.toString(),\n } as Token;\n })\n .filter((t) => !!t) as Token[];\n\n if (tokens.length === 0) {\n return undefined;\n }\n\n const usdValue = pos.totalValueUsd;\n const rektStatus = getRektStatus(usdValue, pos.initialCapitalValueUsd);\n\n const ammName = getProviderName(pos.poolProviderKey);\n if (!ammName) {\n return undefined;\n }\n const poolTokenBalanceWei = utils\n .parseUnits(pos.currentOwnedLpTokens.toString(), 18)\n .toString();\n\n const newPos: ExternalHolding = {\n ammKey: pos.poolProviderKey,\n ammName,\n tokens,\n nonBancorToken,\n rektStatus,\n usdValue,\n poolTokenAddress: pos.address,\n poolTokenBalanceWei,\n name: pos.name,\n };\n return newPos;\n })\n .filter((pos) => !!pos) as ExternalHolding[]\n );\n};\n\nexport const getMigrateFnByAmmProvider = (ammKey: AMMProvider) => {\n switch (ammKey) {\n case AMMProvider.Sushiswap:\n return ContractsApi.BancorPortal.write.migrateSushiSwapV1Position;\n case AMMProvider.UniswapV2:\n return ContractsApi.BancorPortal.write.migrateUniswapV2Position;\n }\n};\n","import { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { ReactComponent as IconLightning } from 'assets/icons/lightning.svg';\nimport { useMemo } from 'react';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { shrinkToken } from 'utils/formulas';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\ninterface Props {\n holding: Holding;\n percentageUnstaked: string;\n}\n\nexport const V3WithdrawStep1Breakdown = ({\n holding,\n percentageUnstaked,\n}: Props) => {\n const {\n pool: {\n reserveToken: { symbol },\n },\n latestProgram,\n tokenBalance,\n } = holding;\n\n const amount = useMemo(\n () =>\n shrinkToken(latestProgram?.tokenAmountWei || 0, holding.pool.decimals),\n [holding.pool.decimals, latestProgram?.tokenAmountWei]\n );\n\n const percentageStaked = useMemo(\n () => 100 - Number(percentageUnstaked),\n [percentageUnstaked]\n );\n\n return (\n
\n (\n
\n \n {percentageUnstaked}% ready\n
\n )}\n >\n <>\n
{percentageUnstaked}% ready
\n
\n {prettifyNumber(tokenBalance)} {symbol}\n
\n
{percentageStaked}% Held for rewards
\n
\n {prettifyNumber(amount)} {symbol}\n
\n \n \n
\n );\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { Holding } from 'store/portfolio/v3Portfolio.types';\nimport BigNumber from 'bignumber.js';\nimport { expandToken, shrinkToken } from 'utils/formulas';\nimport {\n initWithdrawNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\nimport { ErrorCode } from 'services/web3/types';\nimport { useDispatch } from 'react-redux';\nimport { useAppSelector } from 'store';\nimport { AmountTknFiat } from 'elements/earn/portfolio/v3/initWithdraw/useV3WithdrawModal';\n\ninterface Props {\n holding: Holding;\n amount: AmountTknFiat;\n setStep: (step: number) => void;\n}\n\nexport const useV3WithdrawStep3 = ({ holding, amount, setStep }: Props) => {\n const dispatch = useDispatch();\n const account = useAppSelector((state) => state.user.account);\n const [txBusy, setTxBusy] = useState(false);\n const hasStarted = useRef(false);\n const { pool } = holding;\n const { reserveToken, poolDltId, poolTokenDltId, decimals } = pool;\n\n const [poolTokenAmountWei, setPoolTokenAmountWei] = useState('0');\n\n const approveTokens = useMemo(\n () => [\n {\n amount: shrinkToken(poolTokenAmountWei, reserveToken.decimals),\n token: {\n ...reserveToken,\n address: poolTokenDltId,\n symbol: `bn${reserveToken.symbol}`,\n },\n },\n ],\n [poolTokenAmountWei, poolTokenDltId, reserveToken]\n );\n\n const setWithdrawalAmountWei = useCallback(async (): Promise => {\n if (!account) {\n console.error('No account, please connect wallet');\n return;\n }\n try {\n const currentPoolTokenBalanceWei = await ContractsApi.Token(\n poolTokenDltId\n ).read.balanceOf(account);\n const currentTknBalanceWei =\n await ContractsApi.BancorNetworkInfo.read.poolTokenToUnderlying(\n poolDltId,\n currentPoolTokenBalanceWei\n );\n const currentTknBalance = shrinkToken(\n currentTknBalanceWei.toString(),\n decimals\n );\n const currentTknBalanceWithTolerance = new BigNumber(\n currentTknBalance\n ).times(0.99);\n const isWithdrawingMax = new BigNumber(amount.tkn).gt(\n currentTknBalanceWithTolerance\n );\n if (isWithdrawingMax) {\n setPoolTokenAmountWei(currentPoolTokenBalanceWei.toString());\n return;\n }\n const tokenAmountWei = expandToken(amount.tkn, decimals);\n const inputAmountInPoolTokenWei =\n await ContractsApi.BancorNetworkInfo.read.underlyingToPoolToken(\n poolDltId,\n tokenAmountWei\n );\n setPoolTokenAmountWei(inputAmountInPoolTokenWei.toString());\n } catch (e) {\n console.error('failed to getWithdrawalAmount', e);\n throw e;\n }\n }, [account, amount.tkn, decimals, poolDltId, poolTokenDltId]);\n\n const initWithdraw = async () => {\n if (!account) {\n console.error('No account, please connect wallet');\n return;\n }\n try {\n const tx = await ContractsApi.BancorNetwork.write.initWithdrawal(\n poolTokenDltId,\n poolTokenAmountWei\n );\n await tx.wait();\n initWithdrawNotification(\n dispatch,\n tx.hash,\n amount.tkn,\n reserveToken.symbol\n );\n setStep(4);\n await updatePortfolioData(dispatch);\n } catch (e: any) {\n setTxBusy(false);\n console.error('initWithdraw failed', e);\n if (e.code === ErrorCode.DeniedTx) {\n rejectNotification(dispatch);\n }\n }\n };\n\n const [onStart, ModalApprove] = useApproveModal(\n approveTokens,\n initWithdraw,\n ContractsApi.BancorNetwork.contractAddress\n );\n\n const handleButtonClick = useCallback(async () => {\n setTxBusy(true);\n await setWithdrawalAmountWei();\n }, [setWithdrawalAmountWei]);\n\n useEffect(() => {\n if (poolTokenAmountWei === '0' || hasStarted.current) {\n return;\n }\n hasStarted.current = true;\n onStart();\n }, [onStart, poolTokenAmountWei]);\n\n return {\n token: reserveToken,\n handleButtonClick,\n ModalApprove,\n txBusy,\n };\n};\n","import { Button } from 'components/button/Button';\nimport TokenInputV3 from 'components/tokenInput/TokenInputV3';\nimport { memo, useMemo } from 'react';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { useV3WithdrawStep1 } from 'elements/earn/portfolio/v3/initWithdraw/step1/useV3WithdrawStep1';\nimport { CirclePercentage } from 'components/circlePercentage/CirclePercentage';\nimport { ReactComponent as IconLightning } from 'assets/icons/lightning.svg';\nimport { V3WithdrawStep1Breakdown } from 'elements/earn/portfolio/v3/initWithdraw/step1/V3WithdrawStep1Breakdown';\nimport { useV3WithdrawStep3 } from 'elements/earn/portfolio/v3/initWithdraw/step3/useV3WithdrawStep3';\nimport { AmountTknFiat } from 'elements/earn/portfolio/v3/initWithdraw/useV3WithdrawModal';\nimport BigNumber from 'bignumber.js';\n\ninterface Props {\n inputTkn: string;\n setInputTkn: (amount: string) => void;\n inputFiat: string;\n setInputFiat: (amount: string) => void;\n setStep: (step: number) => void;\n holding: Holding;\n isFiat: boolean;\n withdrawalFeeInPercent: string;\n withdrawalFeeInTkn: string;\n amount: AmountTknFiat;\n}\n\nconst V3WithdrawStep1 = ({\n holding,\n setStep,\n inputTkn,\n setInputTkn,\n inputFiat,\n setInputFiat,\n isFiat,\n withdrawalFeeInPercent,\n withdrawalFeeInTkn,\n amount,\n}: Props) => {\n const { token, setBalance, isInputError, percentageUnstaked, showBreakdown } =\n useV3WithdrawStep1({\n holding,\n setStep,\n inputTkn,\n setInputTkn,\n setInputFiat,\n });\n\n const skipStep2 = useMemo(\n () => new BigNumber(inputTkn).lte(holding.tokenBalance),\n [inputTkn, holding.tokenBalance]\n );\n\n const handleNextStep = () => {\n if (skipStep2) {\n void handleButtonClick();\n } else {\n setStep(2);\n }\n };\n\n const { handleButtonClick, ModalApprove, txBusy } = useV3WithdrawStep3({\n holding,\n amount,\n setStep,\n });\n\n return (\n
\n {ModalApprove}\n

\n How much {token.symbol} do you want to withdraw?\n

\n\n setBalance(100)}\n className={`flex items-center mx-auto mb-5 ${\n isInputError ? 'text-error' : 'text-secondary'\n }`}\n >\n {showBreakdown && (\n
\n \n \n
\n )}\n Available {prettifyNumber(holding.tokenBalance)} {token.symbol}\n \n\n \n
\n
\n \n \n \n \n
\n {showBreakdown && (\n \n )}\n
\n\n
\n \n {txBusy\n ? 'waiting for confirmation ...'\n : skipStep2\n ? `${\n isFiat ? `${prettifyNumber(amount.tkn)} ${token.symbol} - ` : ''\n }Start cooldown`\n : `Next ${'->'}`}\n \n
\n\n
\n

USD value will likely change during the cooldown period

\n Withdrawal fee {withdrawalFeeInPercent}%\n {Number(withdrawalFeeInTkn) > 0 && (\n <>\n -\n \n {prettifyNumber(withdrawalFeeInTkn)} {token.symbol}\n \n \n )}\n
\n
\n );\n};\n\nexport default memo(V3WithdrawStep1);\n","import { useMemo } from 'react';\nimport BigNumber from 'bignumber.js';\nimport { calcFiatValue } from 'utils/helperFunctions';\nimport { Holding } from 'store/portfolio/v3Portfolio.types';\n\ninterface Props {\n holding: Holding;\n inputTkn: string;\n setInputTkn: (inputTkn: string) => void;\n setInputFiat: (inputFiat: string) => void;\n setStep: (step: number) => void;\n}\nexport const useV3WithdrawStep1 = ({\n holding,\n inputTkn,\n setInputTkn,\n setInputFiat,\n setStep,\n}: Props) => {\n const { pool, combinedTokenBalance, tokenBalance } = holding;\n const isInputError = useMemo(\n () => new BigNumber(holding.tokenBalance).lt(inputTkn),\n [holding.tokenBalance, inputTkn]\n );\n\n // const showBreakdown = useMemo(\n // () => new BigNumber(holding.latestProgram?.poolTokenAmountWei || 0).gt(0),\n // [holding.latestProgram?.poolTokenAmountWei]\n // );\n\n const showBreakdown = false;\n\n const percentageUnstaked = useMemo(\n () =>\n new BigNumber(tokenBalance)\n .div(combinedTokenBalance)\n .multipliedBy(100)\n .toFixed(0),\n [combinedTokenBalance, tokenBalance]\n );\n\n const setBalance = (percentage: 25 | 50 | 75 | 100) => {\n const valueTkn = new BigNumber(holding.tokenBalance)\n .times(percentage / 100)\n .toString();\n const valueFiat = calcFiatValue(valueTkn, pool.reserveToken.usdPrice);\n setInputTkn(valueTkn);\n setInputFiat(valueFiat);\n };\n\n const skipStep2 = useMemo(\n () => new BigNumber(inputTkn).lte(tokenBalance),\n [inputTkn, tokenBalance]\n );\n\n const handleNextStep = () => {\n if (skipStep2) {\n setStep(3);\n } else {\n setStep(2);\n }\n };\n\n return {\n handleNextStep,\n token: pool.reserveToken,\n setBalance,\n isInputError,\n combinedTokenBalance,\n percentageUnstaked,\n showBreakdown,\n };\n};\n","import { Button } from 'components/button/Button';\nimport { memo } from 'react';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { AmountTknFiat } from 'elements/earn/portfolio/v3/initWithdraw/useV3WithdrawModal';\nimport { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { useV3WithdrawStep3 } from 'elements/earn/portfolio/v3/initWithdraw/step3/useV3WithdrawStep3';\n\ninterface Props {\n amount: AmountTknFiat;\n lockDurationInDays: number;\n holding: Holding;\n setStep: (step: number) => void;\n isFiat: boolean;\n}\n\nconst V3WithdrawStep3 = ({\n amount,\n lockDurationInDays,\n holding,\n setStep,\n isFiat,\n}: Props) => {\n const { token, handleButtonClick, ModalApprove, txBusy } = useV3WithdrawStep3(\n {\n holding,\n amount,\n setStep,\n }\n );\n\n return (\n <>\n
\n

\n Start {lockDurationInDays} day cooldown of{' '}\n \n {isFiat\n ? `${prettifyNumber(amount.fiat, true)} USD`\n : `${prettifyNumber(amount.tkn)} ${token.symbol}`}\n \n

\n
\n \n {txBusy\n ? 'waiting for confirmation ...'\n : `${\n isFiat\n ? `${prettifyNumber(amount.tkn)} ${token.symbol} - `\n : ''\n }Start cooldown`}\n \n
\n
\n {ModalApprove}\n \n );\n};\n\nexport default memo(V3WithdrawStep3);\n","import { Button, ButtonVariant } from 'components/button/Button';\nimport { ReactComponent as IconCheck } from 'assets/icons/circlecheck.svg';\nimport { memo } from 'react';\n\ninterface Props {\n onClose: (state: boolean) => void;\n lockDurationInDays: number;\n}\n\nconst V3WithdrawStep4 = ({ onClose, lockDurationInDays }: Props) => {\n return (\n
\n \n Cooldown began\n \n

\n Remember to come back after {lockDurationInDays} days\n

\n
\n onClose(false)}\n >\n Return to portfolio\n \n
\n
\n );\n};\n\nexport default memo(V3WithdrawStep4);\n","import { Button } from 'components/button/Button';\nimport { memo } from 'react';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { AmountTknFiat } from 'elements/earn/portfolio/v3/initWithdraw/useV3WithdrawModal';\nimport { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { useV3WithdrawStep2 } from 'elements/earn/portfolio/v3/initWithdraw/step2/useV3WithdrawStep2';\n\ninterface Props {\n amount: AmountTknFiat;\n setStep: (step: number) => void;\n holding: Holding;\n isFiat: boolean;\n}\n\nconst V3WithdrawStep2 = ({ setStep, amount, holding, isFiat }: Props) => {\n const { handleLeave, token, txBusy } = useV3WithdrawStep2({\n amount,\n holding,\n setStep,\n });\n\n return (\n
\n \n

\n Remove{' '}\n \n {isFiat\n ? `${prettifyNumber(amount.fiat, true)} USD`\n : `${prettifyNumber(amount.tkn)} ${token.symbol}`}\n {' '}\n from earning rewards\n

\n
\n \n
\n
\n );\n};\n\nexport default memo(V3WithdrawStep2);\n","import { useMemo, useState } from 'react';\nimport { BigNumber } from 'bignumber.js';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { AmountTknFiat } from 'elements/earn/portfolio/v3/initWithdraw/useV3WithdrawModal';\nimport { expandToken } from 'utils/formulas';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\nimport { useDispatch } from 'react-redux';\nimport { useAppSelector } from 'store/index';\n\ninterface Props {\n holding: Holding;\n amount: AmountTknFiat;\n setStep: (step: number) => void;\n}\n\nexport const useV3WithdrawStep2 = ({ holding, amount, setStep }: Props) => {\n const { pool, latestProgram } = holding;\n const [txBusy, setTxBusy] = useState(false);\n const dispatch = useDispatch();\n const account = useAppSelector((state) => state.user.account);\n\n const tokenAmountToUnstakeWei = useMemo(() => {\n const amountToUnstake = new BigNumber(amount.tkn)\n .minus(holding.tokenBalance)\n .toString();\n return expandToken(amountToUnstake, pool.decimals);\n }, [amount.tkn, holding.tokenBalance, pool.decimals]);\n\n const handleLeave = async () => {\n if (!latestProgram || !account) {\n console.error('handleLeave: missing data');\n return;\n }\n setTxBusy(true);\n try {\n const poolTokenAmountWei =\n await ContractsApi.BancorNetworkInfo.read.underlyingToPoolToken(\n pool.poolDltId,\n tokenAmountToUnstakeWei\n );\n\n const tx = await ContractsApi.StandardRewards.write.leave(\n latestProgram.id,\n poolTokenAmountWei\n );\n await tx.wait();\n setStep(3);\n await updatePortfolioData(dispatch);\n } catch (e) {\n console.error(e);\n setTxBusy(false);\n }\n };\n\n return { handleLeave, token: pool.reserveToken, txBusy };\n};\n","import { memo } from 'react';\nimport ModalFullscreenV3 from 'components/modalFullscreen/modalFullscreenV3';\nimport V3WithdrawStep1 from 'elements/earn/portfolio/v3/initWithdraw/step1/V3WithdrawStep1';\nimport V3WithdrawStep3 from 'elements/earn/portfolio/v3/initWithdraw/step3/V3WithdrawStep3';\nimport V3WithdrawStep4 from 'elements/earn/portfolio/v3/initWithdraw/step4/V3WithdrawStep4';\nimport V3WithdrawStep2 from 'elements/earn/portfolio/v3/initWithdraw/step2/V3WithdrawStep2';\nimport { SwapSwitch } from 'elements/swapSwitch/SwapSwitch';\nimport { useV3WithdrawModal } from 'elements/earn/portfolio/v3/initWithdraw/useV3WithdrawModal';\nimport { Holding } from 'store/portfolio/v3Portfolio.types';\n\ninterface Props {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n holding: Holding;\n}\n\nconst V3WithdrawModal = ({ isOpen, setIsOpen, holding }: Props) => {\n const {\n step,\n onClose,\n setStep,\n inputTkn,\n setInputTkn,\n inputFiat,\n setInputFiat,\n isFiat,\n amount,\n withdrawalFeeInTkn,\n withdrawalFeeInPercent,\n lockDurationInDays,\n } = useV3WithdrawModal({ setIsOpen });\n\n return (\n }\n >\n {step === 1 && (\n \n )}\n {step === 2 && (\n \n )}\n {step === 3 && (\n \n )}\n {step === 4 && (\n \n )}\n \n );\n};\n\nexport default memo(V3WithdrawModal);\n","import { useAppSelector } from 'store';\nimport { useMemo, useState } from 'react';\nimport BigNumber from 'bignumber.js';\nimport { wait } from 'utils/pureFunctions';\n\nexport interface AmountTknFiat {\n tkn: string;\n fiat: string;\n}\n\ninterface Props {\n setIsOpen: (isOpen: boolean) => void;\n}\n\nexport const useV3WithdrawModal = ({ setIsOpen }: Props) => {\n const { withdrawalFee, lockDuration } = useAppSelector(\n (state) => state.v3Portfolio.withdrawalSettings\n );\n const isFiat = useAppSelector((state) => state.user.usdToggle);\n const [step, setStep] = useState(1);\n const [inputTkn, setInputTkn] = useState('');\n const [inputFiat, setInputFiat] = useState('');\n\n const amount: AmountTknFiat = useMemo(\n () => ({ tkn: inputTkn, fiat: inputFiat }),\n [inputTkn, inputFiat]\n );\n\n const lockDurationInDays = useMemo(\n () => lockDuration / 60 / 60 / 24,\n [lockDuration]\n );\n\n const withdrawalFeeInPercent = useMemo(\n () => (withdrawalFee * 100).toFixed(2),\n [withdrawalFee]\n );\n\n const withdrawalFeeInTkn = useMemo(() => {\n if (inputTkn) {\n return new BigNumber(inputTkn).times(withdrawalFee).toString();\n } else {\n return '0';\n }\n }, [inputTkn, withdrawalFee]);\n\n const onClose = async (state: boolean) => {\n setIsOpen(state);\n await wait(500);\n setStep(1);\n setInputTkn('');\n setInputFiat('');\n };\n\n return {\n amount,\n isFiat,\n inputTkn,\n setInputTkn,\n inputFiat,\n setInputFiat,\n step,\n setStep,\n onClose,\n lockDurationInDays,\n withdrawalFeeInPercent,\n withdrawalFee,\n withdrawalFeeInTkn,\n };\n};\n","import { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { prettifyNumber, toBigNumber } from 'utils/helperFunctions';\nimport { useAppSelector } from 'store/index';\nimport { useDispatch } from 'react-redux';\nimport { useCallback, useState } from 'react';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { expandToken } from 'utils/formulas';\nimport {\n confirmJoinNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\nimport { ErrorCode } from 'services/web3/types';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport V3WithdrawModal from 'elements/earn/portfolio/v3/initWithdraw/V3WithdrawModal';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\nexport const V3HoldingsItemUnstaked = ({ holding }: { holding: Holding }) => {\n const { pool } = holding;\n const isDisabled = toBigNumber(holding.tokenBalance).isZero();\n\n const account = useAppSelector((state) => state.user.account);\n const dispatch = useDispatch();\n const [txJoinBusy, setTxJoinBusy] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n const handleJoinClick = async () => {\n if (!pool.latestProgram || !account) {\n console.error('rewardProgram is not defined');\n return;\n }\n\n try {\n const tx = await ContractsApi.StandardRewards.write.join(\n pool.latestProgram.id,\n expandToken(holding.poolTokenBalance, pool.decimals)\n );\n confirmJoinNotification(\n dispatch,\n tx.hash,\n holding.tokenBalance,\n holding.pool.reserveToken.symbol\n );\n await tx.wait();\n await updatePortfolioData(dispatch);\n setTxJoinBusy(false);\n } catch (e: any) {\n console.error('handleJoinClick', e);\n setTxJoinBusy(false);\n if (e.code === ErrorCode.DeniedTx) {\n rejectNotification(dispatch);\n }\n }\n };\n\n const [onStart, ApproveModal] = useApproveModal(\n [\n {\n amount: holding.poolTokenBalance,\n token: {\n ...holding.pool.reserveToken,\n address: holding.pool.poolTokenDltId,\n symbol: `bn${holding.pool.reserveToken.symbol}`,\n },\n },\n ],\n handleJoinClick,\n ContractsApi.StandardRewards.contractAddress\n );\n\n const onStartJoin = useCallback(() => {\n setTxJoinBusy(true);\n onStart();\n }, [onStart]);\n\n return (\n <>\n {ApproveModal}\n \n
\n
Available Balance
\n
\n (\n \n {prettifyNumber(holding.tokenBalance)}{' '}\n {pool.reserveToken.symbol}\n
\n )}\n >\n {holding.tokenBalance} {pool.reserveToken.symbol}\n \n\n
\n ({prettifyNumber(holding.poolTokenBalance)} bn\n {pool.reserveToken.symbol})\n
\n
\n\n
\n setIsOpen(true)}\n >\n Withdraw\n \n\n {holding.pool.latestProgram?.isActive && (\n \n Join Rewards\n \n )}\n
\n \n \n );\n};\n","import { Holding } from 'store/portfolio/v3Portfolio.types';\nimport { useMemo } from 'react';\nimport { prettifyNumber, toBigNumber } from 'utils/helperFunctions';\nimport { shrinkToken } from 'utils/formulas';\nimport { ReactComponent as IconGift } from 'assets/icons/gift.svg';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\nimport { V3HoldingsItemStaked } from 'elements/earn/portfolio/v3/holdings/V3HoldingsItemStaked';\nimport { V3HoldingsItemUnstaked } from 'elements/earn/portfolio/v3/holdings/V3HoldingsItemUnstaked';\nimport BigNumber from 'bignumber.js';\nimport { Image } from 'components/image/Image';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\nexport const V3HoldingsItem = ({\n holding,\n selectedId,\n setSelectedId,\n}: {\n holding: Holding;\n selectedId: string;\n setSelectedId: (id: string) => void;\n}) => {\n const { pool, programs } = holding;\n\n const rewardTokenAmountUsd = useMemo(\n () =>\n programs\n .reduce(\n (acc, program) =>\n acc.plus(\n shrinkToken(\n program.pendingRewardsWei,\n program.rewardsToken.decimals\n )\n ),\n new BigNumber(0)\n )\n .times(programs.length > 0 ? programs[0].rewardsToken.usdPrice : 0)\n .toNumber(),\n [programs]\n );\n\n const isOpen = holding.pool.poolDltId === selectedId;\n\n return (\n \n setSelectedId(isOpen ? '' : holding.pool.poolDltId)}\n className=\"flex justify-between items-center w-full\"\n >\n
\n \n (\n
\n
\n
\n {holding.pool.reserveToken.symbol}\n
\n
{prettifyNumber(holding.combinedTokenBalance)}
\n
\n\n
\n {prettifyNumber(\n toBigNumber(holding.pool.reserveToken.usdPrice).times(\n holding.combinedTokenBalance\n ),\n true\n )}\n
\n
\n )}\n >\n {holding.combinedTokenBalance} {holding.pool.reserveToken.symbol}\n \n
\n
\n {toBigNumber(rewardTokenAmountUsd).gt(0) && (\n
\n \n
+{prettifyNumber(rewardTokenAmountUsd, true)}
\n
\n )}\n\n \n
\n \n\n
\n\n
\n \n \n
\n \n );\n};\n","import { useAppSelector } from 'store/index';\nimport {\n getIsLoadingHoldings,\n getPortfolioHoldings,\n} from 'store/portfolio/v3Portfolio';\nimport { useMemo, useState } from 'react';\n\nimport { V3HoldingsItem } from 'elements/earn/portfolio/v3/holdings/V3HoldingsItem';\nimport { orderBy } from 'lodash';\nimport { toBigNumber } from 'utils/helperFunctions';\n\nexport const V3Holdings = () => {\n const [selectedId, setSelectedId] = useState('');\n\n const holdings = useAppSelector(getPortfolioHoldings);\n const isLoadingHoldings = useAppSelector(getIsLoadingHoldings);\n\n const holdingsSorted = useMemo(\n () =>\n orderBy(\n holdings,\n (h) =>\n toBigNumber(h.combinedTokenBalance)\n .times(h.pool.reserveToken.usdPrice)\n .toNumber(),\n ['desc']\n ),\n [holdings]\n );\n\n return (\n
\n

Holdings

\n\n
\n {!isLoadingHoldings\n ? holdingsSorted.map((holding) => (\n \n ))\n : [...Array(3)].map((_, i) => (\n
\n ))}\n
\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { ropstenImage, zeroAddress } from 'services/web3/config';\n\nexport const mockToken: Token = {\n address: zeroAddress,\n logoURI: ropstenImage,\n name: 'Ethereum',\n balance: '1.085561228177686039',\n symbol: 'MOCK',\n decimals: 18,\n usdPrice: '3138.970276',\n liquidity: '142917205.826758',\n usd_24h_ago: '3096.083312',\n price_change_24: 1.39,\n price_history_7d: [],\n usd_volume_24: '5627813.477706',\n isProtected: true,\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgClock(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7.78149 0C7.39029 0 7.07316 0.317132 7.07316 0.708333C7.07316 1.09953 7.39029 1.41667 7.78149 1.41667H8.29168V2.46733C3.7897 2.82843 0.25 6.59875 0.25 11.1961C0.25 16.0323 4.16694 19.9532 9.00057 19.9532C13.8342 19.9532 17.7512 16.0323 17.7512 11.1961C17.7512 9.03278 16.9674 7.05256 15.6683 5.52452L16.5666 4.62553C16.8431 4.3488 16.8429 3.90031 16.5662 3.6238C16.2894 3.34729 15.841 3.34747 15.5644 3.6242L14.6669 4.52248C13.3086 3.36634 11.5927 2.61814 9.70834 2.46724V1.41667H10.2185C10.6097 1.41667 10.9269 1.09953 10.9269 0.708333C10.9269 0.317132 10.6097 0 10.2185 0H7.78149ZM14.1864 6.00551L14.1793 5.99827C12.8526 4.67417 11.0221 3.85568 9.00057 3.85568C4.95043 3.85568 1.66667 7.14129 1.66667 11.1961C1.66667 15.251 4.95043 18.5366 9.00057 18.5366C13.0507 18.5366 16.3345 15.251 16.3345 11.1961C16.3345 9.17204 15.5162 7.33963 14.1929 6.01189L14.1864 6.00551ZM9 12.6595C9.80727 12.6595 10.4622 12.0041 10.4622 11.1961C10.4622 11.0558 10.4425 10.9201 10.4056 10.7915L12.6692 8.52604C12.9457 8.24931 12.9456 7.80082 12.6688 7.52431C12.3921 7.2478 11.9436 7.24798 11.6671 7.52472L9.40424 9.78941C9.27585 9.75249 9.14022 9.73272 9 9.73272C8.19273 9.73272 7.53778 10.3882 7.53778 11.1961C7.53778 12.0041 8.19273 12.6595 9 12.6595Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClock);\nexport default __webpack_public_path__ + \"static/media/clock.1c173881.svg\";\nexport { ForwardRef as ReactComponent };","import { Modal } from 'components/modal/Modal';\nimport { useMemo, useState } from 'react';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { updatePortfolioData } from 'services/web3/v3/portfolio/helpers';\nimport { ExternalHolding } from 'elements/earn/portfolio/v3/externalHoldings/externalHoldings.types';\nimport { useAppSelector } from 'store';\nimport { useDispatch } from 'react-redux';\nimport { Button, ButtonSize } from 'components/button/Button';\nimport { TokenBalance } from 'components/tokenBalance/TokenBalance';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { mockToken } from 'utils/mocked';\nimport { getMigrateFnByAmmProvider } from 'elements/earn/portfolio/v3/externalHoldings/externalHoldings';\nimport { shrinkToken } from 'utils/formulas';\nimport { ProtectedSettingsV3 } from 'components/protectedSettingsV3/ProtectedSettingsV3';\nimport { prettifyNumber, toBigNumber } from 'utils/helperFunctions';\nimport { TokenMinimal } from 'services/observables/tokens';\nimport { Image } from 'components/image/Image';\nimport {\n confirmMigrateExtHoldingNotification,\n failedNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { ErrorCode } from 'services/web3/types';\n\ninterface Props {\n position: ExternalHolding;\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n nonBancorToken?: TokenMinimal;\n}\n\nexport const V3ExternalHoldingsModal = ({\n position,\n isOpen,\n setIsOpen,\n nonBancorToken,\n}: Props) => {\n const [txBusy, setTxBusy] = useState(false);\n const account = useAppSelector((state) => state.user.account);\n const dispatch = useDispatch();\n\n const tokensToApprove = useMemo(\n () => [\n {\n token: {\n ...mockToken,\n address: position.poolTokenAddress,\n symbol: position.name,\n },\n amount: shrinkToken(position.poolTokenBalanceWei, 18),\n },\n ],\n [position.name, position.poolTokenAddress, position.poolTokenBalanceWei]\n );\n\n const migrate = async () => {\n if (!account) {\n console.error('No account found, please login');\n return;\n }\n\n const migrateFn = getMigrateFnByAmmProvider(position.ammKey);\n if (!migrateFn) {\n console.error('getMigrateFnByAmmProvider returned undefined');\n return;\n }\n\n try {\n const tx = await migrateFn(\n position.tokens[0].address,\n position.tokens[1]?.address ?? position.nonBancorToken?.tokenAddress,\n position.poolTokenBalanceWei\n );\n setIsOpen(false);\n confirmMigrateExtHoldingNotification(dispatch, tx.hash, position.name);\n await tx.wait();\n await updatePortfolioData(dispatch);\n } catch (e: any) {\n console.error('failed to migrate position', e);\n if (e.code === ErrorCode.DeniedTx) {\n rejectNotification(dispatch);\n } else {\n failedNotification(dispatch, 'Migration Failed');\n }\n setIsOpen(false);\n } finally {\n setTxBusy(false);\n }\n };\n\n const [onStart, ApproveModal] = useApproveModal(\n tokensToApprove,\n migrate,\n ContractsApi.BancorPortal.contractAddress\n );\n\n const handleButtonClick = async () => {\n setTxBusy(true);\n onStart();\n };\n\n return (\n \n
\n
\n

\n Protect this {position.ammName} holding from impermanent loss\n

\n\n

\n {position.rektStatus === 'At risk'\n ? 'Your position is at risk of impermanent loss'\n : `You’ve lost ${position.rektStatus} in impermanent loss so far`}\n , get 100% protected on Bancor.\n

\n\n

Moving to Bancor

\n
\n\n
\n {position.tokens.map((t) => (\n
\n \n
\n ))}\n
\n {!!position.nonBancorToken && (\n
\n

Exit risky position

\n
\n
\n \n {prettifyNumber(position.nonBancorToken.tokenCurrentBalance)}{' '}\n {position.nonBancorToken.tokenName}\n
\n
HODL in your wallet
\n
\n
\n {prettifyNumber(\n toBigNumber(position.nonBancorToken.tokenCurrentPrice).times(\n position.nonBancorToken.tokenCurrentBalance\n ),\n true\n )}\n
\n
\n )}\n\n
\n Amounts might vary on execution\n
\n\n \n {txBusy ? '... waiting for confirmation' : 'Migrate and Protect'}\n \n\n \n\n {ApproveModal}\n
\n
\n );\n};\n","import { memo, useState } from 'react';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { ExternalHolding } from 'elements/earn/portfolio/v3/externalHoldings/externalHoldings.types';\nimport { V3ExternalHoldingsModal } from 'elements/earn/portfolio/v3/externalHoldings/V3ExternalHoldingsModal';\nimport { TokensOverlap } from 'components/tokensOverlap/TokensOverlap';\nimport { useAppSelector } from 'store/index';\nimport { utils } from 'ethers';\n\ninterface Props {\n position: ExternalHolding;\n}\n\nconst V3ExternalHoldingsItem = ({ position }: Props) => {\n const [isOpen, setIsOpen] = useState(false);\n const allTokenListTokens = useAppSelector(\n (state) => state.bancor.allTokenListTokens\n );\n\n const nonBancorToken =\n position.nonBancorToken !== undefined\n ? allTokenListTokens.find(\n (t) =>\n utils.getAddress(t.address) ===\n utils.getAddress(position.nonBancorToken?.tokenAddress ?? '')\n )\n : undefined;\n\n return (\n
\n
\n \n
\n
\n
{position.ammName}:
\n
{prettifyNumber(position.usdValue, true)}
\n
\n
\n
Rekt Status:
\n
\n {position.rektStatus !== 'At risk' && '-'}\n {position.rektStatus}\n
\n
\n setIsOpen(true)}\n >\n Protect and earn\n \n\n \n
\n );\n};\n\nexport default memo(V3ExternalHoldingsItem);\n","import { useMemo, useState } from 'react';\nimport {\n fetchExternalHoldings,\n getExternalHoldingsNonUni,\n getExternalHoldingsUni,\n} from 'elements/earn/portfolio/v3/externalHoldings/externalHoldings';\nimport { Token } from 'services/observables/tokens';\nimport { useAppSelector } from 'store';\nimport { useAsyncEffect } from 'use-async-effect';\nimport {\n ApyVisionData,\n ExternalHolding,\n} from 'elements/earn/portfolio/v3/externalHoldings/externalHoldings.types';\nimport { getV3Tokens } from 'store/bancor/token';\nimport { orderBy } from 'lodash';\n\nconst initialApyVisionData: ApyVisionData = {\n positionsUni: [],\n positionsNonUni: [],\n};\n\nexport const useExternalHoldings = () => {\n const account = useAppSelector((state) => state.user.account);\n const [apyVisionData, setApyVisionData] =\n useState(initialApyVisionData);\n\n const v3Tokens: Token[] = useAppSelector(getV3Tokens);\n const tokensMap = useMemo(\n () => new Map(v3Tokens.map((token) => [token.address, token])),\n [v3Tokens]\n );\n\n const positionsUni: ExternalHolding[] = useMemo(\n () => getExternalHoldingsUni(apyVisionData.positionsUni, tokensMap),\n [apyVisionData.positionsUni, tokensMap]\n );\n\n const positionsNonUni: ExternalHolding[] = useMemo(\n () => getExternalHoldingsNonUni(apyVisionData.positionsNonUni, tokensMap),\n [apyVisionData.positionsNonUni, tokensMap]\n );\n\n const positions: ExternalHolding[] = useMemo(\n () => orderBy([...positionsUni, ...positionsNonUni], 'usdValue', 'desc'),\n [positionsUni, positionsNonUni]\n );\n\n useAsyncEffect(async () => {\n if (!account) {\n setApyVisionData(initialApyVisionData);\n return;\n }\n const apyVisionData = await fetchExternalHoldings(account);\n setApyVisionData(apyVisionData);\n }, [account]);\n\n return { positions };\n};\n","import { memo } from 'react';\nimport V3ExternalHoldingsItem from 'elements/earn/portfolio/v3/externalHoldings/V3ExternalHoldingsItem';\nimport { Navigation } from 'swiper';\nimport { Swiper, SwiperSlide } from 'swiper/react/swiper-react';\nimport { NavigationOptions } from 'swiper/types';\nimport { useExternalHoldings } from 'elements/earn/portfolio/v3/externalHoldings/useExternalHoldings';\nimport { ReactComponent as IconArrow } from 'assets/icons/arrow.svg';\n\nconst navOptions: NavigationOptions = {\n nextEl: '.external-holding-swiper-next-btn',\n prevEl: '.external-holding-swiper-prev-btn',\n disabledClass:\n 'cursor-not-allowed text-graphite disabled:hover:text-graphite',\n};\n\nconst V3ExternalHoldings = () => {\n const { positions } = useExternalHoldings();\n\n return positions.length ? (\n
\n

\n External Holdings at risk{' '}\n ({positions.length})\n

\n

\n Your holdings on other platforms are vulnerable to impermanent loss\n

\n \n {positions.map((pos, i) => (\n \n \n \n ))}\n \n\n {positions.length > 1 && (\n
\n \n \n
\n )}\n
\n ) : (\n
\n );\n};\n\nexport default memo(V3ExternalHoldings);\n","import { V3Withdraw } from 'elements/earn/portfolio/v3/pendingWithdraw/V3Withdraw';\nimport { V3AvailableToStake } from 'elements/earn/portfolio/v3/V3AvailableToStake';\nimport { Button, ButtonSize } from 'components/button/Button';\nimport { ReactComponent as IconWallet } from 'assets/icons/wallet.svg';\nimport { getDarkMode } from 'store/user/user';\nimport { memo } from 'react';\nimport { useAppSelector } from 'store';\nimport { V3ClaimBonuses } from 'elements/earn/portfolio/v3/bonuses/V3ClaimBonuses';\nimport { WhatsNew } from './WhatsNew';\nimport { ReactComponent as HoldingsLight } from 'assets/holdingsLight.svg';\nimport { ReactComponent as HoldingsDark } from 'assets/holdingsDark.svg';\nimport { V3Holdings } from 'elements/earn/portfolio/v3/holdings/V3Holdings';\nimport { useWalletConnect } from 'elements/walletConnect/useWalletConnect';\nimport V3ExternalHoldings from 'elements/earn/portfolio/v3/externalHoldings/V3ExternalHoldings';\n\nconst V3Portfolio = () => {\n const account = useAppSelector((state) => state.user.account);\n const darkMode = useAppSelector(getDarkMode);\n const { handleWalletButtonClick } = useWalletConnect();\n const hasHoldings = true;\n\n return account ? (\n
\n
\n {hasHoldings ? (\n <>\n
\n
\n Personal Chart\n
Coming Soon
\n
\n {darkMode ? (\n \n ) : (\n \n )}\n
\n \n \n ) : (\n \n )}\n \n
\n
\n
\n

\n Claim Bonuses\n

\n \n
\n\n
\n

\n Pendings Withdrawals\n

\n \n
\n\n
\n

\n External Holdings\n

\n \n
\n
\n
\n ) : (\n
\n

\n Connect your wallet to see your earnings\n

\n handleWalletButtonClick()}\n >\n \n Connect Wallet\n \n
\n );\n};\n\nexport default memo(V3Portfolio);\n","import { useAppSelector } from 'store';\nimport { getStakeSummary, MyStakeSummary } from 'store/liquidity/liquidity';\nimport { prettifyNumber } from 'utils/helperFunctions';\n\nexport const MyStake = ({ loading }: { loading: boolean }) => {\n const summary = useAppSelector(getStakeSummary);\n\n return (\n
\n

My Stake

\n
\n
\n {loading ? (\n
\n ) : (\n
\n
Protected Value
\n
\n {summary\n ? `${prettifyNumber(summary.protectedValue, true)}`\n : '--'}\n
\n
\n )}\n {loading ? (\n
\n ) : (\n
\n
Claimable Value
\n
\n {summary\n ? `${prettifyNumber(summary.claimableValue, true)}`\n : '--'}\n
\n
\n )}\n {loading ? (\n
\n ) : (\n
\n
Total Fees
\n
\n {summary ? `${prettifyNumber(summary.fees, true)}` : '--'}\n
\n
\n )}\n
\n
\n );\n};\n","import { prettifyNumber } from 'utils/helperFunctions';\nimport { useMyRewards } from 'elements/earn/portfolio/liquidityProtection/rewards/useMyRewards';\nimport { ReactComponent as IconMore } from 'assets/icons/more.svg';\nimport { Link } from 'react-router-dom';\nimport { Popover } from '@headlessui/react';\nimport { DropdownTransition } from 'components/transitions/DropdownTransition';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { Button, ButtonSize } from 'components/button/Button';\nimport { useAppSelector } from 'store';\nimport { getUserRewardsProof } from 'store/liquidity/liquidity';\n\nexport const MyRewards = () => {\n const {\n totalRewards,\n totalRewardsUsd,\n claimableRewards,\n claimableRewardsUsd,\n loading,\n userRewards,\n hasClaimed,\n stakeRewardsToV3,\n } = useMyRewards();\n const account = useAppSelector((state) => state.user.account);\n const proof = useAppSelector(getUserRewardsProof);\n const canClaim =\n !hasClaimed && !!account && userRewards.claimable !== '0' && !!proof;\n\n return (\n
\n
\n

Rewards

\n
\n \n Stake to V3\n \n \n \n \n \n \n \n Claim\n \n \n \n
\n
\n
\n
\n {loading ? (\n
\n ) : (\n
\n
Total Rewards to Date
\n {totalRewards && totalRewardsUsd ? (\n
\n \n {prettifyNumber(totalRewards)} BNT\n \n \n {prettifyNumber(totalRewardsUsd, true)}\n \n
\n ) : (\n
\n \n --\n \n
\n )}\n
\n )}\n {loading ? (\n
\n ) : (\n
\n
Claimable Rewards
\n {!hasClaimed && claimableRewards && claimableRewardsUsd ? (\n
\n \n {prettifyNumber(claimableRewards)} BNT\n \n \n {prettifyNumber(claimableRewardsUsd, true)}\n \n
\n ) : (\n
\n \n --\n \n
\n )}\n
\n )}\n
\n
\n );\n};\n","import { prettifyNumber } from 'utils/helperFunctions';\ninterface Props {\n tknAmount: string;\n symbol: string;\n usdAmount: string;\n}\nexport const ProtectedPositionTableCellAmount = ({\n tknAmount,\n symbol,\n usdAmount,\n}: Props) => {\n return (\n
\n
\n {`${prettifyNumber(tknAmount)} ${symbol}`}\n
\n
\n {prettifyNumber(usdAmount, true)} USD\n
\n
\n );\n};\n","import { CellProps } from 'react-table';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\nimport { ReactComponent as IconMore } from 'assets/icons/more.svg';\nimport { PropsWithChildren } from 'react';\nimport { classNameGenerator } from 'utils/pureFunctions';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\ninterface Props {\n singleContent: JSX.Element;\n groupContent: JSX.Element;\n cellData: PropsWithChildren>;\n canExpandMultiple?: boolean;\n subMenu?: Function;\n}\n\nconst Expander = (isExpanded: boolean) => (\n \n);\n\nexport const TableCellExpander = ({\n cellData,\n canExpandMultiple = false,\n singleContent,\n groupContent,\n subMenu,\n}: Props) => {\n const {\n row: { canExpand, isExpanded, toggleRowExpanded, original },\n toggleAllRowsExpanded,\n } = cellData;\n\n const handleClick = () => {\n if (!canExpandMultiple && !isExpanded) toggleAllRowsExpanded(false);\n\n toggleRowExpanded(!isExpanded);\n };\n\n return (\n
\n {canExpand ? groupContent : original.groupId && singleContent}\n
\n {canExpand && (\n handleClick()}\n >\n {Expander(isExpanded)}\n \n )}\n {subMenu && !canExpand && (\n (\n setIsOpen(!isOpen)}\n className=\"w-32 h-32 bg-white dark:bg-black flex items-center justify-center rounded-full\"\n >\n \n \n )}\n options={{\n placement: 'bottom',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 10],\n },\n },\n ],\n }}\n >\n \n \n )}\n
\n
\n );\n};\n","import { groupBy } from 'lodash';\nimport { first } from 'rxjs/operators';\nimport { liquidityProtection$ } from 'services/observables/contracts';\nimport { PoolToken } from 'services/observables/pools';\nimport { writeWeb3 } from 'services/web3';\nimport { LiquidityProtection__factory } from 'services/web3/abis/types';\nimport { changeGas } from 'services/web3/config';\nimport { ErrorCode } from 'services/web3/types';\nimport { ProtectedPosition } from 'services/web3/protection/positions';\n\nexport const migrateV2Positions = async (\n positions: ProtectedPosition[],\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: Function\n) => {\n try {\n const liquidityProtectionContract = await liquidityProtection$\n .pipe(first())\n .toPromise();\n\n const contract = LiquidityProtection__factory.connect(\n liquidityProtectionContract,\n writeWeb3.signer\n );\n\n const dict = groupBy(positions, (pos) => pos.pool.pool_dlt_id);\n const grouped = Object.keys(dict);\n\n const posStruct = grouped.map((poolToken) => ({\n poolToken,\n reserveToken: dict[poolToken][0].reserveToken.address,\n positionIds: dict[poolToken].map((pos) => pos.positionId),\n }));\n\n const estimate = await contract.estimateGas.migratePositions(posStruct);\n const gasLimit = changeGas(estimate.toString());\n\n const tx = await contract.migratePositions(posStruct, { gasLimit });\n onHash(tx.hash);\n tx.wait();\n onCompleted();\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed();\n }\n};\n\n// eslint-disable-next-line\nexport const migrateV1Positions = (poolToken: PoolToken) => {};\n\nexport const claimBntToV3 = async (\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: Function\n) => {\n try {\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed();\n }\n};\n","import { BigNumber } from 'bignumber.js';\nimport { ButtonPercentages } from 'components/button/Button';\nimport { TokenInputField } from 'components/tokenInputField/TokenInputField';\nimport { useEffect, useState } from 'react';\nimport { Token } from 'services/observables/tokens';\n\ninterface TokenInputPercentageProps {\n label: string;\n token?: Token;\n balance?: string;\n amount: string;\n errorMsg?: string;\n setAmount: Function;\n debounce?: Function;\n balanceLabel?: string;\n}\nconst percentages = [25, 50, 75, 100];\n\nexport const TokenInputPercentage = ({\n token,\n balance,\n label,\n amount,\n errorMsg,\n setAmount,\n debounce,\n balanceLabel = 'Balance',\n}: TokenInputPercentageProps) => {\n const [amountUSD, setAmountUSD] = useState('');\n const [selPercentage, setSelPercentage] = useState(-1);\n\n const fieldBalance = balance\n ? balance\n : token && token.balance\n ? token.balance\n : undefined;\n\n useEffect(() => {\n if (amount && fieldBalance) {\n const percentage = (Number(amount) / Number(fieldBalance)) * 100;\n setSelPercentage(\n percentages.findIndex((x) => percentage.toFixed(10) === x.toFixed(10))\n );\n if (debounce) debounce(amount);\n }\n }, [amount, token, fieldBalance, debounce]);\n\n return (\n <>\n {token && (\n \n )}\n
\n {\n setSelPercentage(percentages.indexOf(percentage));\n if (token && fieldBalance) {\n const amount = new BigNumber(fieldBalance).times(\n new BigNumber(percentage / 100)\n );\n setAmount(amount.toString());\n setAmountUSD(\n (amount.toNumber() * Number(token.usdPrice)).toString()\n );\n }\n }}\n />\n
\n \n );\n};\n","import { ReactComponent as IconInfo } from 'assets/icons/info.svg';\n\ninterface WithdrawLiquidityInfoProps {\n protectionNotReached: boolean;\n multiplierWillReset: boolean;\n}\n\nexport const WithdrawLiquidityInfo = ({\n protectionNotReached,\n multiplierWillReset,\n}: WithdrawLiquidityInfoProps) => {\n return (\n <>\n {(protectionNotReached || multiplierWillReset) && (\n
\n
\n \n Important!\n
\n
\n {protectionNotReached && (\n

\n You still haven’t reached full protection. There is a risk for\n impermanent loss and you might receive less than your original\n deposit amount as a result.\n

\n )}\n {multiplierWillReset && (\n

\n Withdrawing will reset your rewards multiplier for all active\n positions back to x1\n

\n )}\n
\n
\n )}\n \n );\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useAppSelector } from 'store';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { Token } from 'services/observables/tokens';\nimport { TokenInputPercentage } from 'components/tokenInputPercentage/TokenInputPercentage';\nimport { WithdrawLiquidityInfo } from './WithdrawLiquidityInfo';\nimport { LinePercentage } from 'components/linePercentage/LinePercentage';\nimport { Modal } from 'components/modal/Modal';\nimport {\n fetchProtectedPositions,\n getWithdrawBreakdown,\n ProtectedPosition,\n withdrawProtection,\n} from 'services/web3/protection/positions';\nimport { checkPriceDeviationTooHigh } from 'services/web3/liquidity/liquidity';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { bntToken, getNetworkVariables } from 'services/web3/config';\nimport useAsyncEffect from 'use-async-effect';\nimport { useDebounce } from 'hooks/useDebounce';\nimport BigNumber from 'bignumber.js';\nimport {\n rejectNotification,\n withdrawProtectedPosition,\n withdrawProtectedPositionFailed,\n} from 'services/notifications/notifications';\nimport { useDispatch } from 'react-redux';\nimport { setProtectedPositions } from 'store/liquidity/liquidity';\nimport { SwapSwitch } from '../../../swapSwitch/SwapSwitch';\nimport { wait } from 'utils/pureFunctions';\nimport { ApprovalContract } from 'services/web3/approval';\nimport {\n ConversionEvents,\n sendLiquidityApprovedEvent,\n sendLiquidityEvent,\n sendLiquidityFailEvent,\n sendLiquiditySuccessEvent,\n setCurrentLiquidity,\n} from 'services/api/googleTagManager';\nimport { Pool } from 'services/observables/pools';\nimport { Button, ButtonSize } from 'components/button/Button';\n\ninterface Props {\n protectedPosition: ProtectedPosition;\n isModalOpen: boolean;\n setIsModalOpen: Function;\n}\n\nexport const WithdrawLiquidityWidget = ({\n protectedPosition,\n isModalOpen,\n setIsModalOpen,\n}: Props) => {\n const dispatch = useDispatch();\n const account = useAppSelector((state) => state.user.account);\n const { positionId, reserveToken, currentCoveragePercent, pool } =\n protectedPosition;\n const { tknAmount } = protectedPosition.claimableAmount;\n const [amount, setAmount] = useState('');\n const [amountDebounce, setAmountebounce] = useDebounce('');\n const [isPriceDeviationToHigh, setIsPriceDeviationToHigh] = useState(false);\n const token = useAppSelector((state: any) =>\n getTokenById(state, reserveToken.address)\n );\n const pools = useAppSelector((state) => state.pool.v2Pools);\n const [breakdown, setBreakdown] = useState<\n { tkn: number; bnt: number } | undefined\n >();\n const gov = getNetworkVariables().govToken;\n const govToken = useAppSelector((state: any) =>\n getTokenById(state, gov)\n );\n\n const withdrawingBNT = reserveToken.address === bntToken;\n const protectionNotReached = currentCoveragePercent !== 1;\n const multiplierWillReset = true;\n const emtpyAmount = amount.trim() === '' || Number(amount) === 0;\n const tokenInsufficent = Number(amount) > Number(tknAmount);\n const fiatToggle = useAppSelector((state) => state.user.usdToggle);\n\n const showVBNTWarning = useMemo(() => {\n if (token && token.address !== bntToken) {\n return false;\n }\n if (!amount) {\n return false;\n }\n const govTokenBalance = govToken ? govToken.balance ?? 0 : 0;\n const initalStake = protectedPosition.initialStake.tknAmount;\n return new BigNumber(amount)\n .div(tknAmount)\n .times(initalStake)\n .gt(govTokenBalance);\n }, [\n amount,\n govToken,\n protectedPosition.initialStake.tknAmount,\n tknAmount,\n token,\n ]);\n\n const withdrawDisabled = emtpyAmount || tokenInsufficent || showVBNTWarning;\n\n useAsyncEffect(\n async (isMounted) => {\n const isPriceDeviationToHigh = await checkPriceDeviationTooHigh(\n pool,\n token!\n );\n setIsPriceDeviationToHigh(isPriceDeviationToHigh);\n\n if (isMounted()) {\n if (withdrawDisabled || withdrawingBNT) return;\n const res = await getWithdrawBreakdown(\n positionId,\n amountDebounce,\n tknAmount\n );\n\n if (res.bntAmount === '0') setBreakdown(undefined);\n else {\n const percentage = new BigNumber(res.actualAmount)\n .div(res.expectedAmount)\n .toNumber();\n\n setBreakdown({ tkn: percentage, bnt: 1 - percentage });\n }\n }\n },\n [amountDebounce]\n );\n\n const withdraw = useCallback(async () => {\n if (token) {\n let transactionId: string;\n await withdrawProtection(\n positionId,\n amount,\n tknAmount,\n (txHash: string) => {\n transactionId = txHash;\n withdrawProtectedPosition(dispatch, token, amount, txHash);\n setIsModalOpen(false);\n },\n async () => {\n sendLiquiditySuccessEvent(transactionId);\n const positions = await fetchProtectedPositions(pools, account!);\n dispatch(setProtectedPositions(positions));\n },\n () => {\n sendLiquidityFailEvent('User rejected transaction');\n rejectNotification(dispatch);\n },\n (errorMsg) => {\n sendLiquidityFailEvent(errorMsg);\n withdrawProtectedPositionFailed(dispatch, token, amount);\n }\n );\n }\n setIsModalOpen(false);\n }, [\n account,\n amount,\n dispatch,\n pools,\n positionId,\n setIsModalOpen,\n tknAmount,\n token,\n ]);\n\n const [onStart, ModalApprove] = useApproveModal(\n govToken ? [{ amount: amount, token: govToken }] : [],\n withdraw,\n ApprovalContract.LiquidityProtection,\n sendLiquidityEvent,\n sendLiquidityApprovedEvent\n );\n\n const handleWithdraw = useCallback(async () => {\n const amountUsd = new BigNumber(amount)\n .times(token ? token.usdPrice ?? 0 : 0)\n .toString();\n\n const percentage = new BigNumber(amount).div(tknAmount).toFixed(0);\n const userSelectedPercentage =\n percentage === '25' ||\n percentage === '50' ||\n percentage === '75' ||\n percentage === '100';\n setCurrentLiquidity(\n 'Withdraw Single',\n 1,\n pool.name,\n token!.symbol,\n amount,\n amountUsd,\n undefined,\n undefined,\n fiatToggle,\n userSelectedPercentage ? percentage : undefined\n );\n sendLiquidityEvent(ConversionEvents.click);\n if (withdrawingBNT) {\n setIsModalOpen(false);\n await wait(1000);\n onStart();\n } else withdraw();\n }, [\n amount,\n fiatToggle,\n onStart,\n pool.name,\n setIsModalOpen,\n tknAmount,\n token,\n withdraw,\n withdrawingBNT,\n ]);\n\n return (\n <>\n }\n >\n
\n \n
\n \n
\n {breakdown && (\n
\n
Output breakdown
\n
\n \n
\n
\n )}\n {withdrawingBNT && (\n
\n BNT withdrawals are subject to a 24h lock period before they can\n be claimed.\n
\n )}\n {isPriceDeviationToHigh && (\n
\n Due to price volatility, withdrawing from your protected position\n is currently not available. Please try again in a few minutes.\n
\n )}\n {showVBNTWarning && (\n
\n Insufficient vBNT balance.\n
\n )}\n \n {emtpyAmount ? 'Enter Amount' : 'Withdraw'}\n \n
\n \n {ModalApprove}\n \n );\n};\n","import { Modal } from 'components/modal/Modal';\nimport {\n fetchProtectedPositions,\n ProtectedPosition,\n ProtectedPositionGrouped,\n} from 'services/web3/protection/positions';\nimport { Button, ButtonSize } from 'components/button/Button';\nimport { ReactComponent as IconCheck } from 'assets/icons/circlecheck.svg';\nimport { useAppSelector } from 'store';\nimport { useMemo } from 'react';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport {\n getAllBntPositionsAndAmount,\n setProtectedPositions,\n} from 'store/liquidity/liquidity';\nimport {\n migrateNotification,\n rejectNotification,\n migrateFailedNotification,\n} from 'services/notifications/notifications';\nimport { migrateV2Positions } from 'services/web3/protection/migration';\nimport { useDispatch } from 'react-redux';\nimport { Pool } from 'services/observables/pools';\nimport { Image } from 'components/image/Image';\n\nexport const UpgradeBntModal = ({\n position,\n isOpen,\n setIsOpen,\n}: {\n position: ProtectedPositionGrouped;\n isOpen: boolean;\n setIsOpen: Function;\n}) => {\n const dispatch = useDispatch();\n\n const pools = useAppSelector((state) => state.pool.v2Pools);\n const account = useAppSelector((state) => state.user.account);\n\n const totalBNT = useAppSelector<{\n usdAmount: number;\n tknAmount: number;\n bntPositions: ProtectedPosition[];\n }>(getAllBntPositionsAndAmount);\n\n const { withdrawalFee, lockDuration } = useAppSelector(\n (state) => state.v3Portfolio.withdrawalSettings\n );\n\n const lockDurationInDays = useMemo(\n () => lockDuration / 60 / 60 / 24,\n [lockDuration]\n );\n\n const withdrawalFeeInPercent = useMemo(\n () => (withdrawalFee * 100).toFixed(2),\n [withdrawalFee]\n );\n\n const migrate = (positions: ProtectedPosition[]) => {\n migrateV2Positions(\n positions,\n (txHash: string) => migrateNotification(dispatch, txHash),\n async () => {\n const positions = await fetchProtectedPositions(pools, account!);\n dispatch(setProtectedPositions(positions));\n },\n () => rejectNotification(dispatch),\n () => migrateFailedNotification(dispatch)\n );\n setIsOpen(false);\n };\n\n return (\n }>\n
\n \n
Upgrade BNT
\n
\n Move all BNT to a single pool and earn from all trades in the network\n
\n
\n
\n
Upgrade all BNT
\n {`${prettifyNumber(totalBNT.tknAmount)} ${\n position.reserveToken.symbol\n } ${prettifyNumber(totalBNT.usdAmount, true)}`}\n
\n
\n \n Single BNT pool\n
\n
\n \n Auto-compounding\n
\n
\n \n Fully upgrade partially protected holdings\n
\n
\n migrate(totalBNT.bntPositions)}\n size={ButtonSize.Full}\n >\n Upgrade All\n \n \n migrate(\n position.subRows.length === 0 ? [position] : position.subRows\n )\n }\n className=\"text-primary\"\n >\n No Thanks, just BNT from the {position.pool.name}\n \n
\n {`100% Protected • ${lockDurationInDays} day cooldown • ${withdrawalFeeInPercent}% withdrawal fee`}\n
\n
\n
\n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLocked(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 0C7.59593 0 5.62756 1.97277 5.62756 4.38222V6.57591H3.71046C2.36233 6.57591 1.25 7.68559 1.25 9.04187L1.25 17.534C1.25 18.8903 2.36233 20 3.71046 20H16.2895C17.6377 20 18.75 18.8903 18.75 17.534V9.04187C18.75 7.68559 17.6377 6.57591 16.2895 6.57591H14.3724V4.38222C14.3724 1.97277 12.4041 0 10 0ZM10 1.64398C11.5173 1.64398 12.7321 2.86155 12.7321 4.38222V6.57591H7.26787V4.38222C7.26787 2.86155 8.48272 1.64398 10 1.64398ZM3.71046 8.21988H16.2895C16.7509 8.21988 17.1097 8.57436 17.1097 9.04187V17.534C17.1097 18.0015 16.7509 18.356 16.2895 18.356H3.71046C3.24912 18.356 2.8903 18.0015 2.8903 17.534V9.04187C2.8903 8.57436 3.24912 8.21988 3.71046 8.21988Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLocked);\nexport default __webpack_public_path__ + \"static/media/locked.38227130.svg\";\nexport { ForwardRef as ReactComponent };","import { useAppSelector } from 'store';\nimport { ProtectedPositionGrouped } from 'services/web3/protection/positions';\nimport { useMemo, useState } from 'react';\nimport { TableColumn } from 'components/table/DataTable';\nimport { ProtectedPositionTableCellLiquidity } from 'elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellLiquidity';\nimport { ProtectedPositionTableCellAmount } from 'elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellStake';\nimport { ProtectedPositionTableCellFees } from 'elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellFees';\nimport { ProtectedPositionTableCellRoi } from 'elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellRoi';\nimport { getGroupedPositions } from 'store/liquidity/liquidity';\nimport { ProtectedPositionTableCellActions } from 'elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellActions';\nimport { ProtectedPositionTableCellClaimable } from 'elements/earn/portfolio/liquidityProtection/protectedPositions/ProtectedPositionTableCellClaimable';\nimport { sorAlphaByKey, sortNumbersByKey } from 'utils/pureFunctions';\n\nexport const useProtectedPositions = () => {\n const groupedPositions =\n useAppSelector(getGroupedPositions);\n const [search, setSearch] = useState('');\n\n const data = useMemo(\n () =>\n groupedPositions.filter((pos) =>\n pos.reserveToken.symbol.toLowerCase().includes(search.toLowerCase())\n ),\n [groupedPositions, search]\n );\n const columns = useMemo[]>(\n () => [\n {\n id: 'liquidity',\n Header: 'Liquidity',\n accessor: 'pool',\n Cell: (cellData) =>\n ProtectedPositionTableCellLiquidity(cellData.row.original),\n sortType: (a, b) =>\n sorAlphaByKey(a.original, b.original, ['reserveToken', 'symbol']),\n minWidth: 130,\n sortDescFirst: true,\n },\n {\n id: 'initialStake',\n accessor: 'initialStake',\n Header: 'Initial Stake',\n Cell: (cellData) =>\n ProtectedPositionTableCellAmount({\n tknAmount: cellData.value.tknAmount,\n usdAmount: cellData.value.usdAmount,\n symbol: cellData.row.original.reserveToken.symbol,\n }),\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, [\n 'initialStake',\n 'usdAmount',\n ]),\n minWidth: 130,\n sortDescFirst: true,\n headerClassName: 'justify-center',\n tooltip: 'Amount of tokens you originally staked in the pool',\n },\n {\n id: 'protected',\n accessor: 'protectedAmount',\n Header: 'Protected',\n Cell: (cellData) =>\n ProtectedPositionTableCellAmount({\n tknAmount: cellData.value.tknAmount,\n usdAmount: cellData.value.usdAmount,\n symbol: cellData.row.original.reserveToken.symbol,\n }),\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, [\n 'protectedAmount',\n 'usdAmount',\n ]),\n minWidth: 130,\n sortDescFirst: true,\n headerClassName: 'justify-center',\n tooltip:\n 'Amount of tokens you can withdraw with 100% protection + fees',\n },\n {\n id: 'claimable',\n accessor: 'claimableAmount',\n Header: 'Claimable',\n Cell: (cellData) => ProtectedPositionTableCellClaimable(cellData.row),\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, [\n 'claimableAmount',\n 'usdAmount',\n ]),\n minWidth: 130,\n sortDescFirst: true,\n headerClassName: 'justify-center',\n tooltip:\n 'Amount of tokens you can withdraw right now (assuming you have not earned full protection, this value will be lower than Protected Value)',\n },\n {\n id: 'feesRewards',\n accessor: 'rewardsMultiplier',\n Header: 'Fees & Rewards',\n Cell: (cellData) =>\n ProtectedPositionTableCellFees(cellData.row.original),\n sortType: (a, b) => sortNumbersByKey(a.original, b.original, ['fees']),\n minWidth: 130,\n sortDescFirst: true,\n headerClassName: 'justify-center',\n tooltip:\n 'Fees and rewards earned by your stake since you entered the pool.',\n },\n {\n id: 'roi',\n accessor: 'roi',\n Header: 'ROI',\n Cell: (cellData) =>\n ProtectedPositionTableCellRoi(cellData.row.original),\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, ['roi', 'fees']),\n minWidth: 130,\n headerClassName: 'justify-center',\n tooltip:\n 'The ROI of your fully protected value vs. your initial stake.',\n },\n // {\n // id: 'apr',\n // Header: 'APR',\n // accessor: 'aprs',\n // Cell: (cellData) => {\n // return (\n //
\n //
Day {(Number(cellData.value.day) * 100).toFixed(2)} %
\n //
Week {(Number(cellData.value.week) * 100).toFixed(2)} %
\n //
\n // );\n // },\n // minWidth: 130,\n // sortDescFirst: true,\n // },\n {\n id: 'expander',\n disableSortBy: true,\n accessor: 'subRows',\n minWidth: 250,\n width: 250,\n Cell: (cellData) => ProtectedPositionTableCellActions(cellData),\n },\n ],\n []\n );\n\n return { search, setSearch, data, columns };\n};\n","import { ProtectedPositionGrouped } from 'services/web3/protection/positions';\nimport { Image } from 'components/image/Image';\n\nexport const ProtectedPositionTableCellLiquidity = (\n position: ProtectedPositionGrouped\n) => {\n const isGroup = position.groupId && position.groupId.includes('-');\n return (\n
\n
\n \n
{position.reserveToken.symbol}
\n
\n
\n {position.pool.name}\n
\n
\n );\n};\n","import { ProtectedPositionGrouped } from 'services/web3/protection/positions';\nimport { Row } from 'react-table';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { ReactComponent as IconClock } from 'assets/icons/clock.svg';\nimport BigNumber from 'bignumber.js';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\nexport const ProtectedPositionTableCellClaimable = (\n row: Row\n) => {\n const { tknAmount, usdAmount } = row.original.claimableAmount;\n const { symbol } = row.original.reserveToken;\n const currentCoveragePercent = new BigNumber(\n row.original.currentCoveragePercent\n )\n .times(100)\n .toFixed(0);\n return (\n
\n
\n {!row.canExpand && (\n }\n >\n Current protection is {currentCoveragePercent}%\n \n )}\n {`${prettifyNumber(tknAmount)} ${symbol}`}\n
\n
\n {prettifyNumber(usdAmount, true)} USD\n
\n
\n );\n};\n","import { ProtectedPositionGrouped } from 'services/web3/protection/positions';\nimport { prettifyNumber } from 'utils/helperFunctions';\n\nexport const ProtectedPositionTableCellFees = (\n position: ProtectedPositionGrouped\n) => {\n // const hasRewards = new BigNumber(position.rewardsAmount).isGreaterThan(0);\n const hasRewards = false;\n const isSubRow = !position.groupId;\n\n return (\n
\n
\n {prettifyNumber(position.fees)} {position.reserveToken.symbol}\n
\n {hasRewards && !isSubRow && (\n
\n
\n + {prettifyNumber(position.rewardsAmount)} BNT | X\n {Number(position.rewardsMultiplier).toFixed(2)}\n
\n
\n )}\n
\n );\n};\n","import { ProtectedPositionGrouped } from 'services/web3/protection/positions';\n\nexport const ProtectedPositionTableCellRoi = (\n position: ProtectedPositionGrouped\n) => {\n // const hasRewards = new BigNumber(position.rewardsAmount).isGreaterThan(0);\n const hasRewards = false;\n const isSubRow = !position.groupId;\n const fees = Number(position.roi.fees);\n\n return (\n
\n
\n {fees > 0 ? (fees * 100).toFixed(2) : '0.00'} %\n
\n {hasRewards && !isSubRow && (\n
\n
\n + {(Number(position.roi.reserveRewards) * 100).toFixed(2)} %\n
\n
\n )}\n
\n );\n};\n","import {\n fetchProtectedPositions,\n ProtectedPosition,\n ProtectedPositionGrouped,\n} from 'services/web3/protection/positions';\nimport { CellProps } from 'react-table';\nimport { PropsWithChildren, useCallback, useMemo, useState } from 'react';\nimport { TableCellExpander } from 'components/table/TableCellExpander';\nimport { Button } from 'components/button/Button';\nimport { migrateV2Positions } from 'services/web3/protection/migration';\nimport {\n migrateFailedNotification,\n migrateNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { useDispatch } from 'react-redux';\nimport { WithdrawLiquidityWidget } from '../../withdrawLiquidity/WithdrawLiquidityWidget';\nimport { UpgradeBntModal } from '../../v3/UpgradeBntModal';\nimport { bntToken } from 'services/web3/config';\nimport {\n getAllBntPositionsAndAmount,\n setProtectedPositions,\n} from 'store/liquidity/liquidity';\nimport { Pool } from 'services/observables/pools';\nimport { useAppSelector } from 'store';\nimport { getIsV3Exist } from 'store/bancor/pool';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\nexport const ProtectedPositionTableCellActions = (\n cellData: PropsWithChildren<\n CellProps\n >\n) => {\n const [isOpenWithdraw, setIsOpenWithdraw] = useState(false);\n const [isOpenBnt, setIsOpenBnt] = useState(false);\n const pools = useAppSelector((state) => state.pool.v2Pools);\n const account = useAppSelector((state) => state.user.account);\n const { row } = cellData;\n const position = row.original;\n const isPoolExistV3 = useAppSelector((state) =>\n getIsV3Exist(state, position.reserveToken.address)\n );\n const totalBNT = useAppSelector<{\n usdAmount: number;\n tknAmount: number;\n bntPositions: ProtectedPosition[];\n }>(getAllBntPositionsAndAmount);\n const protocolBnBNTAmount = useAppSelector(\n (state) => state.liquidity.protocolBnBNTAmount\n );\n const dispatch = useDispatch();\n\n const isMigrateDisabled = useCallback(\n (positions: ProtectedPosition[]) => {\n if (!positions || positions.length === 0) return true;\n\n const totalAmount = positions\n .map((x) => Number(x.protectedAmount.tknAmount))\n .reduce((sum, current) => sum + current, 0);\n\n return (\n positions[0].reserveToken.address === bntToken &&\n protocolBnBNTAmount < totalAmount\n );\n },\n [protocolBnBNTAmount]\n );\n\n const migrate = useCallback(\n (positions: ProtectedPosition[]) => {\n const isBnt = positions[0].reserveToken.address === bntToken;\n if (isBnt && protocolBnBNTAmount > totalBNT.tknAmount) setIsOpenBnt(true);\n else\n migrateV2Positions(\n positions,\n (txHash: string) => migrateNotification(dispatch, txHash),\n async () => {\n const positions = await fetchProtectedPositions(pools, account!);\n dispatch(setProtectedPositions(positions));\n },\n () => rejectNotification(dispatch),\n () => migrateFailedNotification(dispatch)\n );\n },\n [dispatch, account, pools, totalBNT.tknAmount, protocolBnBNTAmount]\n );\n\n const singleContent = useMemo(() => {\n const disabled = isMigrateDisabled([position]);\n const button = (\n migrate([position])}\n className=\"text-12 w-[165px] h-[32px] mr-10\"\n disabled={disabled}\n >\n Upgrade To V3\n \n );\n return isPoolExistV3 ? (\n disabled ? (\n button}>\n Hold tight, migration will be available again shortly\n \n ) : (\n button\n )\n ) : (\n <>\n );\n }, [position, migrate, isPoolExistV3, isMigrateDisabled]);\n\n const groupContent = useMemo(() => {\n const disabled = isMigrateDisabled(position.subRows);\n const button = (\n migrate(position.subRows)}\n className=\"text-12 w-[145px] h-[32px] mr-10\"\n disabled={disabled}\n >\n Upgrade All To V3\n \n );\n return isPoolExistV3 ? (\n disabled ? (\n button}>\n Hold tight, migration will be available again shortly\n \n ) : (\n button\n )\n ) : (\n <>\n );\n }, [position, migrate, isPoolExistV3, isMigrateDisabled]);\n return (\n
\n {TableCellExpander({\n cellData,\n singleContent,\n groupContent,\n subMenu: () => setIsOpenWithdraw(true),\n })}\n \n \n
\n );\n};\n","import { DataTable } from 'components/table/DataTable';\nimport { useProtectedPositions } from 'elements/earn/portfolio/liquidityProtection/protectedPositions/useProtectedPositions';\nimport { ProtectedPositionGrouped } from 'services/web3/protection/positions';\nimport { SearchInput } from 'components/searchInput/SearchInput';\n\nexport const ProtectedPositionsTable = ({ loading }: { loading: boolean }) => {\n const { data, columns, search, setSearch } = useProtectedPositions();\n\n return (\n
\n
\n

My Protected Positions

\n \n
\n\n \n data={data}\n columns={columns}\n isLoading={loading}\n stickyColumn\n search={search}\n />\n
\n );\n};\n","import { useDispatch } from 'react-redux';\nimport {\n claimBntNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { Token } from 'services/observables/tokens';\nimport { claimBnt } from 'services/web3/lockedbnt/lockedbnt';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { Button, ButtonSize } from 'components/button/Button';\nimport { Image } from 'components/image/Image';\n\ninterface ClaimAvailableProps {\n bnt?: Token;\n availableBNT: number;\n loading: boolean;\n}\n\nexport const ClaimAvailable = ({\n bnt,\n availableBNT,\n loading,\n}: ClaimAvailableProps) => {\n const dispatch = useDispatch();\n const noBntToClaim = availableBNT === 0;\n\n const handleButtonClick = () => {\n claimBnt(\n (txHash) => {\n claimBntNotification(dispatch, txHash, prettifyNumber(availableBNT));\n },\n () => {},\n () => rejectNotification(dispatch),\n () => {}\n );\n };\n\n return (\n
\n

Available to Claim

\n
\n {loading ? (\n
\n
\n
\n ) : (\n
\n
\n
\n \n {noBntToClaim ? (\n No BNT to claim\n ) : (\n <>\n {bnt?.symbol}\n \n {prettifyNumber(availableBNT)}\n \n {`(${prettifyNumber(\n bnt && bnt.usdPrice\n ? Number(bnt.usdPrice) * availableBNT\n : 0,\n true\n )})`}\n \n )}\n
\n handleButtonClick()}\n disabled={noBntToClaim}\n >\n Claim BNT\n \n
\n
\n )}\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { LockedBnt } from 'services/web3/lockedbnt/lockedbnt';\nimport { ReactComponent as IconLock } from 'assets/icons/locked.svg';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { CountdownTimer } from 'components/countdownTimer/CountdownTimer';\nimport { UTCTimestamp } from 'lightweight-charts';\nimport { isMobile } from 'react-device-detect';\nimport { Image } from 'components/image/Image';\n\ninterface ClaimLockedProps {\n bnt?: Token;\n lockedBNT: LockedBnt[];\n loading: boolean;\n}\n\nexport const ClaimLocked = ({ bnt, lockedBNT, loading }: ClaimLockedProps) => {\n const noBntLocked = lockedBNT.length === 0;\n\n return (\n
\n

Locked

\n
\n\n {loading ? (\n
\n
\n
\n ) : (\n
\n
\n {noBntLocked ? (\n
\n <>\n \n No BNT locked\n \n
\n ) : (\n <>\n {lockedBNT.map((lock, index) => (\n
\n
\n
\n {!isMobile && }\n \n
{bnt?.symbol}
\n
{prettifyNumber(lock.bnt)}
\n
{`(${prettifyNumber(\n bnt && bnt.usdPrice\n ? Number(bnt.usdPrice) * lock.bnt\n : 0,\n true\n )})`}
\n
\n
\n
\n \n
\n {!isMobile && 'left to claim'}\n
\n
\n {index !== lockedBNT.length - 1 && (\n
\n )}\n
\n ))}\n \n )}\n
\n
\n )}\n
\n );\n};\n","import { MyStake } from './protectedPositions/MyStake';\nimport { MyRewards } from './rewards/MyRewards';\nimport { ProtectedPositionsTable } from './protectedPositions/ProtectedPositionsTable';\nimport { ClaimAvailable } from './claim/ClaimAvailable';\nimport { ClaimLocked } from './claim/ClaimLocked';\nimport { useAppSelector } from 'store';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { Token } from 'services/observables/tokens';\nimport { bntToken } from 'services/web3/config';\nimport { LockedAvailableBnt } from 'services/web3/lockedbnt/lockedbnt';\n\nexport const LiquidityProtection = () => {\n const bnt = useAppSelector((state: any) =>\n getTokenById(state, bntToken)\n );\n const lockedAvailableBNT = useAppSelector(\n (state) => state.liquidity.lockedAvailableBNT\n );\n const loadingLockedBnt = useAppSelector(\n (state) => state.liquidity.loadingLockedBnt\n );\n\n const loadingPositions = useAppSelector(\n (state) => state.liquidity.loadingPositions\n );\n\n return (\n
\n

\n Manage your protected positions in Bancor pools and track and analyze\n your returns.\n

\n\n
\n \n \n
\n\n \n\n

Closed Positions

\n

\n When unstaking protected positions, you will be able to see and claim\n your BNT here\n

\n
\n \n \n
\n
\n );\n};\n","import { useDispatch } from 'react-redux';\nimport {\n rejectNotification,\n removeLiquidityNotification,\n removeLiquidityNotificationFailed,\n} from 'services/notifications/notifications';\nimport { removeLiquidity } from 'services/web3/liquidity/liquidity';\nimport {\n ConversionEvents,\n sendLiquidityEvent,\n sendLiquidityFailEvent,\n sendLiquiditySuccessEvent,\n setCurrentLiquidity,\n} from 'services/api/googleTagManager';\nimport { useWeb3React } from '@web3-react/core';\nimport { PoolToken } from 'services/observables/pools';\nimport { Button } from 'components/button/Button';\n\nexport const PoolTokensCellActions = (poolToken: PoolToken) => {\n const dispatch = useDispatch();\n const { chainId } = useWeb3React();\n\n const handleClick = () => {\n setCurrentLiquidity(\n 'Withdraw Dual',\n chainId,\n poolToken.poolName,\n poolToken.poolName,\n poolToken.amount,\n undefined,\n undefined,\n undefined,\n undefined\n );\n sendLiquidityEvent(ConversionEvents.click);\n let transactionId: string;\n removeLiquidity(\n poolToken,\n (txHash: string) => {\n transactionId = txHash;\n removeLiquidityNotification(\n dispatch,\n poolToken.amount,\n poolToken.poolName,\n txHash\n );\n },\n () => {\n sendLiquiditySuccessEvent(transactionId);\n },\n () => {\n sendLiquidityFailEvent('User rejected transaction');\n rejectNotification(dispatch);\n },\n (errorMsg) => {\n sendLiquidityFailEvent(errorMsg);\n removeLiquidityNotificationFailed(\n dispatch,\n poolToken.amount,\n poolToken.poolName\n );\n }\n );\n };\n\n return (\n \n );\n};\n","import { ReactComponent as IconSearch } from 'assets/icons/search.svg';\nimport { DataTable, TableColumn } from 'components/table/DataTable';\nimport { useMemo, useState } from 'react';\nimport { useAppSelector } from 'store';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { PoolTokensCellActions } from './PoolTokensCellActions';\nimport { PoolTokensCellName } from './PoolTokensCellName';\nimport { PoolTokensCellReserve } from './PoolTokensCellReserve';\nimport { PoolToken } from 'services/observables/pools';\nimport { sorAlphaByKey, sortNumbersByKey } from 'utils/pureFunctions';\n\nexport const PoolTokensTable = () => {\n const [search, setSearch] = useState('');\n const poolTokens = useAppSelector(\n (state) => state.liquidity.poolTokens\n );\n\n const data = useMemo(() => {\n return poolTokens.filter((p) =>\n p.bnt.token.symbol.toLowerCase().includes(search.toLowerCase())\n );\n }, [poolTokens, search]);\n\n const columns = useMemo[]>(\n () => [\n {\n id: 'name',\n Header: 'Name',\n accessor: 'bnt',\n Cell: (cellData) => PoolTokensCellName(cellData.row.original),\n sortType: (a, b) =>\n sorAlphaByKey(a.original, b.original, ['tkn', 'token', 'symbol']),\n minWidth: 130,\n },\n {\n id: 'amount',\n Header: 'Amount',\n accessor: 'amount',\n Cell: (cellData) => prettifyNumber(cellData.value),\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, ['amount']),\n minWidth: 130,\n },\n {\n id: 'value',\n Header: 'Value',\n accessor: 'value',\n Cell: (cellData) => prettifyNumber(cellData.value, true),\n sortType: (a, b) => sortNumbersByKey(a.original, b.original, ['value']),\n minWidth: 130,\n },\n {\n id: 'breakdown',\n Header: 'Reserve Breakdown',\n accessor: 'tkn',\n Cell: (cellData) => PoolTokensCellReserve(cellData.row.original),\n disableSortBy: true,\n minWidth: 130,\n },\n {\n id: 'actions',\n Header: '',\n accessor: 'converter',\n Cell: (cellData) => PoolTokensCellActions(cellData.row.original),\n minWidth: 130,\n },\n ],\n []\n );\n\n return (\n
\n
\n

Pool Tokens

\n
\n \n setSearch(e.target.value)}\n placeholder=\"Search\"\n className=\"block w-full max-w-[160px] border border-silver rounded-10 pl-[38px] h-[35px] dark:bg-charcoal dark:border-grey focus:border-primary\"\n />\n
\n
\n\n \n data={data}\n columns={columns}\n isLoading={!data.length}\n stickyColumn\n />\n
\n );\n};\n","import { TokensOverlap } from 'components/tokensOverlap/TokensOverlap';\nimport { PoolToken } from 'services/observables/pools';\n\nexport const PoolTokensCellName = (poolToken: PoolToken) => {\n return (\n
\n
\n \n
\n
{poolToken.tkn.token.symbol} Pool
\n
\n );\n};\n","import { prettifyNumber } from 'utils/helperFunctions';\nimport { PoolToken } from 'services/observables/pools';\nimport { Image } from 'components/image/Image';\n\nexport const PoolTokensCellReserve = (poolToken: PoolToken) => {\n return (\n
\n \n {`${poolToken.bnt.token.symbol} ${prettifyNumber(poolToken.bnt.amount)}`}\n
+
\n \n {`${poolToken.tkn.token.symbol} ${prettifyNumber(poolToken.tkn.amount)}`}\n
\n );\n};\n","import { PoolTokensTable } from './poolTokensTable/PoolTokensTable';\n\nexport const PoolTokens = () => {\n return (\n
\n

Manage your Bancor pool tokens.

\n\n \n
\n );\n};\n","import { SwapSwitch } from 'elements/swapSwitch/SwapSwitch';\nimport { ReactComponent as IconTimes } from 'assets/icons/times.svg';\nimport { useNavigation } from 'hooks/useNavigation';\n\ninterface Props {\n title: string;\n subtitle?: string;\n goBack?: Function;\n children: JSX.Element | JSX.Element[];\n}\nexport const Widget = ({ title, subtitle, children, goBack }: Props) => {\n const { goToPage } = useNavigation();\n\n const handleBackClick = () => {\n goBack ? goBack() : goToPage.earn();\n };\n\n return (\n
\n
\n \n
\n

{title}

\n {subtitle &&

{subtitle}

}\n
\n
\n \n
\n
\n
\n {children}\n
\n );\n};\n","import { Widget } from 'components/widgets/Widget';\nimport { useNavigation } from 'hooks/useNavigation';\n\nexport const WidgetLoading = ({ title = 'loading' }) => {\n const { goToPage } = useNavigation();\n return (\n \n
\n
\n
\n
\n
\n
\n );\n};\n","import { InputField } from '../inputField/InputField';\nimport { useState } from 'react';\nimport { Pool } from 'services/observables/pools';\nimport { Image } from 'components/image/Image';\n\ninterface Props {\n pools: Pool[];\n onSelect: Function;\n}\nexport const SelectPoolModalContent = ({ pools, onSelect }: Props) => {\n const [search, setSearch] = useState('');\n const filteredPools = pools.filter((pool) =>\n pool.reserves[0].symbol.toLowerCase().includes(search.toLowerCase())\n );\n\n return (\n <>\n
\n \n
\n
\n
\n Pools\n APR\n
\n {filteredPools.map((pool) => (\n onSelect(pool)}\n className=\"flex justify-between items-center w-full\"\n >\n \n \n \n {pool.name}\n \n {pool.apr.toFixed(2)}%\n \n ))}\n
\n \n );\n};\n","import { isMobile } from 'react-device-detect';\nimport { ModalFullscreen } from '../modalFullscreen/ModalFullscreen';\nimport { Modal } from '../modal/Modal';\nimport { SelectPoolModalContent } from './SelectPoolModalContent';\nimport { Pool } from 'services/observables/pools';\n\ninterface Props {\n pools: Pool[];\n isOpen: boolean;\n setIsOpen: Function;\n onSelect: Function;\n}\n\nexport const SelectPoolModal = ({\n pools,\n isOpen,\n setIsOpen,\n onSelect,\n}: Props) => {\n const handleOnSelect = (pool: Pool) => {\n setIsOpen(false);\n onSelect(pool);\n };\n\n if (isMobile) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n );\n};\n","import { useState } from 'react';\nimport { SelectPoolModal } from 'components/selectPoolModal/SelectPoolModal';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\nimport { Pool } from 'services/observables/pools';\nimport { Image } from 'components/image/Image';\n\ninterface SelectPoolProps {\n pool: Pool;\n pools: Pool[];\n label: string;\n onSelect: Function;\n}\n\nexport const SelectPool = ({\n pool,\n pools,\n label,\n onSelect,\n}: SelectPoolProps) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n return (\n
\n {label}\n setIsModalOpen(true)}\n className=\"flex items-center border border-charcoal dark:border-graphite rounded-[16px] px-20 py-6\"\n >\n \n \n {pool.name}\n \n \n \n
\n );\n};\n","import {\n stakePoolLevelRewards,\n stakeRewards,\n} from 'services/web3/protection/rewards';\nimport { useCallback, useState } from 'react';\nimport {\n rejectNotification,\n stakeRewardsFailedNotification,\n stakeRewardsNotification,\n} from 'services/notifications/notifications';\nimport { useDispatch } from 'react-redux';\n\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport {\n fetchProtectedPositions,\n ProtectedPositionGrouped,\n} from 'services/web3/protection/positions';\nimport {\n setLoadingPositions,\n setProtectedPositions,\n} from 'store/liquidity/liquidity';\nimport { useAppSelector } from 'store';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { Pool } from 'services/observables/pools';\nimport { useNavigation } from 'hooks/useNavigation';\n\ninterface Props {\n pool: Pool;\n account?: string | null;\n errorBalance: string;\n bntAmount: string;\n position?: ProtectedPositionGrouped;\n}\n\nexport const RewardsStakeCTA = ({\n pool,\n account,\n errorBalance,\n bntAmount,\n position,\n}: Props) => {\n const [isBusy, setIsBusy] = useState(false);\n const dispatch = useDispatch();\n const pools = useAppSelector((state) => state.pool.v2Pools);\n const { goToPage } = useNavigation();\n\n const onCompleted = useCallback(async () => {\n dispatch(setLoadingPositions(true));\n const positions = await fetchProtectedPositions(pools, account!);\n dispatch(setProtectedPositions(positions));\n dispatch(setLoadingPositions(false));\n }, [account, dispatch, pools]);\n\n const onHash = useCallback(\n (txHash: string) => {\n stakeRewardsNotification(\n dispatch,\n txHash,\n prettifyNumber(bntAmount),\n pool.name\n );\n goToPage.portfolioV2();\n },\n [bntAmount, dispatch, goToPage, pool.name]\n );\n\n const handleClick = async () => {\n try {\n setIsBusy(true);\n if (position) {\n await stakePoolLevelRewards({\n newPoolId: pool.pool_dlt_id,\n reserveId: position.reserveToken.address,\n amount: bntAmount,\n poolId: position.pool.pool_dlt_id,\n onHash: (txHash) => onHash(txHash),\n onCompleted: () => onCompleted(),\n rejected: () => rejectNotification(dispatch),\n failed: () => stakeRewardsFailedNotification(dispatch),\n });\n } else {\n await stakeRewards({\n amount: bntAmount,\n poolId: pool.pool_dlt_id,\n onHash: (txHash) => onHash(txHash),\n onCompleted: () => onCompleted(),\n rejected: () => rejectNotification(dispatch),\n failed: () => stakeRewardsFailedNotification(dispatch),\n });\n }\n } catch (e: any) {\n console.error('Staking Rewards failed with msg: ', e.message);\n } finally {\n setIsBusy(false);\n }\n };\n\n const btnOptions = () => {\n if (!account) {\n return {\n label: 'Login',\n disabled: false,\n variant: ButtonVariant.Primary,\n };\n } else if (isBusy) {\n return {\n label: 'Please wait ...',\n disabled: true,\n variant: ButtonVariant.Primary,\n };\n } else if (errorBalance) {\n return {\n label: errorBalance,\n disabled: true,\n variant: ButtonVariant.Secondary,\n };\n } else if (!bntAmount || Number(bntAmount) === 0) {\n return {\n label: 'Enter amount',\n disabled: true,\n variant: ButtonVariant.Primary,\n };\n } else {\n return {\n label: 'Stake and Protect',\n disabled: false,\n variant: ButtonVariant.Primary,\n };\n }\n };\n\n const btn = btnOptions();\n\n return (\n handleClick()}\n disabled={btn.disabled}\n variant={btn.variant}\n size={ButtonSize.Full}\n className=\"mt-10\"\n >\n {btn.label}\n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { getSpaceAvailable } from 'services/web3/liquidity/liquidity';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { useInterval } from 'hooks/useInterval';\nimport { Pool } from 'services/observables/pools';\n\ninterface Props {\n pool: Pool;\n}\n\nexport const RewardsStakeSpaceAvailable = ({ pool }: Props) => {\n const [spaceAvailable, setSpaceAvailable] = useState('');\n\n useInterval(\n async () => {\n await fetchData();\n },\n 15000,\n false\n );\n\n const fetchData = useCallback(async () => {\n const spaceAvailable = await getSpaceAvailable(pool.pool_dlt_id, 0);\n setSpaceAvailable(spaceAvailable.bnt);\n }, [pool.pool_dlt_id]);\n\n useEffect(() => {\n void fetchData();\n }, [fetchData, pool.pool_dlt_id]);\n\n return (\n
\n
\n Space Available\n
{prettifyNumber(spaceAvailable)} BNT
\n
\n
\n );\n};\n","import { useEffect, useState } from 'react';\nimport { fetchPendingRewards } from 'services/web3/protection/rewards';\nimport { useInterval } from 'hooks/useInterval';\nimport { useAppSelector } from 'store';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { getProtectedPools } from 'store/bancor/pool';\n\nimport BigNumber from 'bignumber.js';\nimport { useQuery } from 'hooks/useQuery';\nimport { ProtectedPositionGrouped } from 'services/web3/protection/positions';\nimport { getPositionById } from 'store/liquidity/liquidity';\nimport { Pool } from 'services/observables/pools';\nimport { useNavigation } from 'hooks/useNavigation';\n\ninterface Props {\n pool?: Pool;\n}\n\nexport const useRewardsClaim = ({ pool }: Props) => {\n const [claimableRewards, setClaimableRewards] = useState();\n const [errorBalance, setErrorBalance] = useState('');\n const [bntAmount, setBntAmount] = useState('');\n const [bntAmountUsd, setBntAmountUsd] = useState('');\n const pools = useAppSelector(getProtectedPools);\n const { goToPage } = useNavigation();\n const query = useQuery();\n const posGroupId = query.get('posGroupId');\n\n const bnt = useAppSelector((state) =>\n getTokenById(state, pool ? pool.reserves[1].address : '')\n );\n\n const position = useAppSelector(\n getPositionById(posGroupId ?? '')\n );\n\n const account = useAppSelector((state) => state.user.account);\n\n const fetchClaimableRewards = async (account: string) => {\n if (posGroupId && position) {\n setClaimableRewards(position.rewardsAmount);\n } else {\n const pendingRewards = await fetchPendingRewards(account);\n setClaimableRewards(pendingRewards);\n }\n };\n\n const onSelect = (pool: Pool) => {\n if (posGroupId)\n goToPage.portfolioV2RewardsStake(pool.pool_dlt_id, posGroupId);\n else goToPage.portfolioV2RewardsStake(pool.pool_dlt_id);\n };\n\n useInterval(\n async () => {\n if (account) {\n await fetchClaimableRewards(account);\n }\n },\n account ? 15000 : null\n );\n\n useEffect(() => {\n if (!account) {\n setClaimableRewards(undefined);\n }\n }, [account]);\n\n useEffect(() => {\n if (new BigNumber(claimableRewards ?? 0).lt(bntAmount)) {\n setErrorBalance('Insufficient Balance');\n } else {\n setErrorBalance('');\n }\n }, [bntAmount, claimableRewards]);\n\n return {\n claimableRewards,\n account,\n bntAmount,\n setBntAmount,\n bntAmountUsd,\n setBntAmountUsd,\n bnt,\n errorBalance,\n pools,\n onSelect,\n position,\n };\n};\n","import { Widget } from 'components/widgets/Widget';\nimport { SelectPool } from 'components/selectPool/SelectPool';\nimport { RewardsStakeCTA } from 'elements/earn/portfolio/liquidityProtection/rewards/stake/RewardsStakeCTA';\nimport { RewardsStakeSpaceAvailable } from 'elements/earn/portfolio/liquidityProtection/rewards/stake/RewardsStakeSpaceAvailable';\nimport { useRewardsClaim } from 'elements/earn/portfolio/liquidityProtection/rewards/claim/useRewardsClaim';\nimport { TokenInputField } from 'components/tokenInputField/TokenInputField';\nimport { Pool } from 'services/observables/pools';\nimport { useNavigation } from 'hooks/useNavigation';\n\ninterface Props {\n pool: Pool;\n}\n\nexport const RewardsStakeWidget = ({ pool }: Props) => {\n const {\n claimableRewards,\n account,\n bntAmount,\n setBntAmount,\n bntAmountUsd,\n setBntAmountUsd,\n bnt,\n errorBalance,\n pools,\n onSelect,\n position,\n } = useRewardsClaim({ pool });\n const { goToPage } = useNavigation();\n\n return (\n \n
\n \n
\n \n {errorBalance && (\n
{errorBalance}
\n )}\n
\n \n \n
\n
\n );\n};\n","import { Widget } from 'components/widgets/Widget';\nimport { useNavigation } from 'hooks/useNavigation';\n\nexport const WidgetError = ({ title = 'ERROR' }) => {\n const { goToPage } = useNavigation();\n return (\n \n
\n
\n Invalid Pool or Pool not found!\n
\n
Please try again or contact support.
\n
\n
\n );\n};\n","import { useParams } from 'react-router-dom';\nimport { useAppSelector } from 'store';\nimport { getPoolById, SelectedPool } from 'store/bancor/pool';\nimport { WidgetLoading } from 'components/widgets/WidgetLoading';\nimport { RewardsStakeWidget } from 'elements/earn/portfolio/liquidityProtection/rewards/stake/RewardsStakeWidget';\nimport { WidgetError } from 'components/widgets/WidgetError';\n\nexport const RewardsStake = () => {\n const { id } = useParams();\n const { status, pool } = useAppSelector(getPoolById(id || ''));\n const title = 'Stake Rewards';\n return (\n
\n {status === 'loading' ? (\n \n ) : (\n
\n {!pool ? (\n \n ) : (\n \n )}\n
\n )}\n
\n );\n};\n","import { prettifyNumber } from 'utils/helperFunctions';\nimport { useAppSelector } from 'store';\nimport BigNumber from 'bignumber.js';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { bntToken } from 'services/web3/config';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\nimport { ReactComponent as IconInfo } from 'assets/icons/info-solid.svg';\n\ninterface Props {\n amount?: string;\n}\n\nexport const RewardsClaimAmount = ({ amount }: Props) => {\n const bnt = useAppSelector((state) => getTokenById(state, bntToken));\n const usdPrice = () => new BigNumber(amount ?? 0).times(bnt?.usdPrice ?? 0);\n\n return (\n
\n
\n
\n

\n Claimable Rewards\n

\n (\n \n )}\n >\n Claimable value does not include earned liquidity mining rewards.\n You can withdraw or re-stake rewards from the Protection screen, by\n clicking “Withdraw” in the rewards widget.\n \n
\n
\n\n
\n {amount && bnt?.usdPrice ? (\n
\n
{prettifyNumber(amount)} BNT
\n
{prettifyNumber(usdPrice(), true)}
\n
\n ) : (\n
--
\n )}\n
\n
\n );\n};\n","import { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { useMyRewards } from 'elements/earn/portfolio/liquidityProtection/rewards/useMyRewards';\nimport { useAppSelector } from 'store';\nimport { getUserRewardsProof } from 'store/liquidity/liquidity';\n\ninterface Props {\n claimableRewards?: string;\n account?: string | null;\n}\n\nexport const RewardsClaimCTA = ({ account }: Props) => {\n const { userRewards, hasClaimed, stakeRewardsToV3, claimRewardsToWallet } =\n useMyRewards();\n const proof = useAppSelector(getUserRewardsProof);\n const canClaim =\n !hasClaimed && !!account && userRewards.claimable !== '0' && proof;\n\n return (\n <>\n \n Stake my Rewards to Bancor V3\n \n \n Withdraw Rewards\n \n \n );\n};\n","import { Widget } from 'components/widgets/Widget';\nimport { RewardsClaimAmount } from 'elements/earn/portfolio/liquidityProtection/rewards/claim/RewardsClaimAmount';\nimport { RewardsClaimCTA } from 'elements/earn/portfolio/liquidityProtection/rewards/claim/RewardsClaimCTA';\nimport { useNavigation } from 'hooks/useNavigation';\nimport { useMyRewards } from 'elements/earn/portfolio/liquidityProtection/rewards/useMyRewards';\nimport { useAppSelector } from 'store';\n\nexport const RewardsClaim = () => {\n const account = useAppSelector((state) => state.user.account);\n const { claimableRewards, hasClaimed } = useMyRewards();\n const { goToPage } = useNavigation();\n\n return (\n
\n \n
\n \n \n
\n
\n
\n );\n};\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _ellipse, _path13, _path14, _path15, _path16, _ellipse2, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgGrowCoins(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 320 365\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130.144 160.226L160.463 141.972L190.783 160.226L160.463 178.479L130.144 160.226Z\",\n fill: \"#10BBD5\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.6826 242.821L58.0025 224.568L88.3224 242.821L58.0025 261.075L27.6826 242.821Z\",\n fill: \"#10BBD5\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M230.512 68.3084L260.832 50.0549L291.151 68.3084L260.832 86.5619L230.512 68.3084Z\",\n fill: \"#10BBD5\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.3,\n d: \"M292.197 68.1842L261.354 86.4014V363.621L292.197 346.309V68.1842Z\",\n fill: \"url(#paint0_linear_13147_235184)\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M230.511 68.1842L261.354 86.4014V363.621L230.511 346.309V68.1842Z\",\n fill: \"url(#paint1_linear_13147_235184)\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.3,\n d: \"M190.784 160.791L159.941 179.008V363.228L190.784 345.916V160.791Z\",\n fill: \"url(#paint2_linear_13147_235184)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.3,\n d: \"M89.368 243.387L58.5254 261.604V362.824L89.368 345.512V243.387Z\",\n fill: \"url(#paint3_linear_13147_235184)\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130.143 160.791L160.986 179.008V364.228L130.143 346.916V160.791Z\",\n fill: \"url(#paint4_linear_13147_235184)\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.6828 243.387L58.5254 261.604V362.824L27.6828 345.512V243.387Z\",\n fill: \"url(#paint5_linear_13147_235184)\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M230.51 68.1842L261.352 49.9669L292.195 68.1842M230.51 68.1842L261.352 86.4015M230.51 68.1842V346.309L261.352 363.621M261.352 86.4015L292.195 68.1842M261.352 86.4015V363.621M292.195 68.1842V346.309L261.352 363.621\",\n stroke: \"url(#paint6_linear_13147_235184)\",\n strokeWidth: 0.843085\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130 159.973L160.32 141.719L190.64 159.973M130 159.973L160.32 178.226M130 159.973V346.612L160.32 363.958M160.32 178.226L190.64 159.973M160.32 178.226V363.958M190.64 159.973V346.612L160.32 363.958\",\n stroke: \"url(#paint7_linear_13147_235184)\",\n strokeWidth: 0.843085\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M175.795 100.408C176.051 100.493 176.305 100.586 176.557 100.687C181.665 102.74 184.917 107.695 186.153 113.851C187.39 120.015 186.639 127.487 183.658 134.83C180.677 142.173 176 148.067 170.808 151.645C165.628 155.216 159.837 156.535 154.733 154.49L148.916 152.359C148.661 152.274 148.407 152.181 148.155 152.08C143.047 150.027 139.795 145.072 138.559 138.916C137.322 132.752 138.073 125.279 141.054 117.937C144.035 110.594 148.711 104.7 153.903 101.121C159.084 97.5505 164.875 96.2319 169.979 98.2769L175.795 100.408Z\",\n fill: \"black\"\n })), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 159.056,\n cy: 125.034,\n rx: 18.609,\n ry: 28.3398,\n transform: \"rotate(21.9948 159.056 125.034)\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M160.499 111.533L164.841 135.416L144.577 130.35L160.499 111.533ZM146.095 129.861L163.778 134.281L159.989 113.441L146.095 129.861Z\",\n fill: \"black\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.815 112.526L135.371 111.129L141.815 109.733L143.212 103.288L144.608 109.733L151.053 111.129L144.608 112.526L143.212 118.971L141.815 112.526Z\",\n fill: \"#10BBD5\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.6826 242.751L58.5253 224.568L89.3679 242.751M27.6826 242.751L58.5253 260.935M27.6826 242.751V347.066L58.5253 364.346M58.5253 260.935L89.3679 242.751M58.5253 260.935V364.346M89.3679 242.751V347.066L58.5253 364.346\",\n stroke: \"url(#paint8_linear_13147_235184)\",\n strokeWidth: 0.843085\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M251.732 9.7522C263.656 3.7001 278.668 9.68125 285.345 22.8352C291.293 34.5548 288.744 48.2281 279.694 55.3694C278.743 56.1204 277.835 56.9226 276.907 57.7427C276.734 57.8958 276.56 58.0495 276.385 58.2036C275.282 59.1752 274.142 60.1558 272.908 61.0348C272.035 61.6559 271.109 62.2181 270.131 62.7146C258.207 68.7667 243.195 62.7855 236.518 49.6315C230.612 37.9955 233.084 24.4349 241.976 17.2517C242.873 16.5265 243.743 15.7625 244.628 14.9844C244.868 14.7736 245.109 14.5618 245.352 14.3495C246.483 13.3611 247.648 12.3704 248.89 11.4787C249.782 10.839 250.73 10.2611 251.732 9.7522Z\",\n fill: \"black\"\n })), _ellipse2 || (_ellipse2 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 263.9,\n cy: 33.7211,\n rx: 23.2083,\n ry: 26.0364,\n transform: \"rotate(-26.9108 263.9 33.7211)\",\n fill: \"white\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.6811 221.042C31.5429 220.709 31.4218 220.371 31.3174 220.029C29.9648 215.597 31.4482 210.644 34.7836 206.206C38.1285 201.756 43.4037 197.717 49.8933 195.029C56.2965 192.377 62.7933 191.492 68.2596 192.22C73.7102 192.946 78.2538 195.301 80.5265 199.252C80.7656 199.667 80.9788 200.1 81.1645 200.548M31.6811 221.042C31.8268 221.394 31.9895 221.736 32.1683 222.068ZM32.1683 222.068L34.3625 227.299L34.3632 227.301C36.2289 231.803 40.7851 234.555 46.4094 235.498C52.0481 236.445 58.8939 235.609 65.6338 232.818C72.2158 230.092 77.5492 225.976 80.8859 221.45C84.2137 216.935 85.6239 211.903 84.0873 207.442C84.0136 207.228 83.9332 207.015 83.846 206.805M83.846 206.805C83.7137 206.485 83.5674 206.174 83.4078 205.871ZM83.4078 205.871L81.51 201.502C81.4098 201.181 81.2947 200.862 81.1645 200.548\",\n fill: \"black\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.3174 220.029C31.4218 220.371 31.5429 220.709 31.6811 221.042L32.1683 222.068L34.3625 227.299L34.3632 227.301C36.2289 231.803 40.7851 234.555 46.4094 235.498C52.0481 236.445 58.8939 235.609 65.6338 232.818C72.2158 230.092 77.5492 225.976 80.8859 221.45C84.2137 216.935 85.6239 211.903 84.0873 207.442C84.0136 207.228 83.9332 207.015 83.846 206.805L83.4078 205.871L81.51 201.502C81.4098 201.181 81.2947 200.862 81.1645 200.548C80.9788 200.1 80.7656 199.667 80.5265 199.252C78.2538 195.301 73.7102 192.946 68.2596 192.22C62.7933 191.492 56.2965 192.377 49.8933 195.029C43.4037 197.717 38.1285 201.756 34.7836 206.206C31.4482 210.644 29.9648 215.597 31.3174 220.029Z\",\n fill: \"black\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.3858 200.87C83.8138 209.147 75.8643 220.301 62.6299 225.782C49.3956 231.263 35.888 228.996 32.46 220.719C29.0319 212.442 36.9815 201.289 50.2158 195.808C63.4501 190.327 76.9577 192.593 80.3858 200.87Z\",\n fill: \"white\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M81.1773 203.486L74.7324 202.089L81.1773 200.693L82.5738 194.248L83.9703 200.693L90.4151 202.089L83.9703 203.486L82.5738 209.93L81.1773 203.486Z\",\n fill: \"#10BBD5\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M275.641 12.1566L269.196 10.7601L275.641 9.3636L277.037 2.91875L278.434 9.3636L284.878 10.7601L278.434 12.1566L277.037 18.6014L275.641 12.1566Z\",\n fill: \"#10BBD5\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M318.842 118.932C318.823 118.467 318.43 118.105 317.965 118.125L310.384 118.44C309.919 118.459 309.557 118.852 309.576 119.317C309.596 119.783 309.989 120.144 310.454 120.125L317.193 119.844L317.473 126.583C317.492 127.049 317.885 127.41 318.35 127.391C318.815 127.371 319.177 126.979 319.158 126.513L318.842 118.932ZM271.428 170.825L318.62 119.538L317.38 118.396L270.187 169.683L271.428 170.825ZM1.22351 335.61C104.954 307.089 198.582 249.99 271.428 170.825L270.187 169.683C197.555 248.616 104.203 305.547 0.776489 333.984L1.22351 335.61Z\",\n fill: \"url(#paint9_linear_13147_235184)\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M262.524 18.6638L274.628 32.1157L269.637 49.8391L256.82 35.6782L262.524 18.6638ZM262.864 20.3021L257.776 35.4783L269.239 48.1428L273.691 32.3344L262.864 20.3021Z\",\n fill: \"black\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M59.5097 200.234L70.8359 209.634L53.1299 221.531L42.4854 210.132L59.5097 200.234ZM43.8232 210.33L53.2559 220.43L69.4301 209.563L59.4244 201.259L43.8232 210.33Z\",\n fill: \"black\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_13147_235184\",\n x1: 260.831,\n y1: 90.7419,\n x2: 292.197,\n y2: 332.778,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#10BBD5\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#10BBD5\",\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_13147_235184\",\n x1: 245.933,\n y1: 68.1842,\n x2: 246.194,\n y2: 339.574,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\",\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint2_linear_13147_235184\",\n x1: 159.419,\n y1: 183.27,\n x2: 190.784,\n y2: 302.458,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#10BBD5\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#10BBD5\",\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint3_linear_13147_235184\",\n x1: 54.3433,\n y1: 247.569,\n x2: 73.6853,\n y2: 290.958,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#10BBD5\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#10BBD5\",\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint4_linear_13147_235184\",\n x1: 145.565,\n y1: 160.791,\n x2: 145.826,\n y2: 283.639,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\",\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint5_linear_13147_235184\",\n x1: 43.1041,\n y1: 243.387,\n x2: 43.3655,\n y2: 284.685,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\",\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint6_linear_13147_235184\",\n x1: 261.352,\n y1: 49.9669,\n x2: 260.83,\n y2: 347.415,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", null), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint7_linear_13147_235184\",\n x1: 160.32,\n y1: 141.719,\n x2: 160.32,\n y2: 315.274,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", null), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint8_linear_13147_235184\",\n x1: 57.9219,\n y1: 260.211,\n x2: 58.0025,\n y2: 285.73,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", null), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.433998,\n stopOpacity: 0.34\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint9_linear_13147_235184\",\n x1: 229.267,\n y1: 236.921,\n x2: 39.9858,\n y2: 384.723,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#10BBD5\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#10BBD5\",\n stopOpacity: 0\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGrowCoins);\nexport default __webpack_public_path__ + \"static/media/growCoins.20fa7034.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgProtected(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 16,\n viewBox: \"0 0 15 16\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.51573 0.500232C7.38597 0.496326 7.26015 0.541898 7.16447 0.627834C7.16447 0.627834 4.64409 2.83353 1.62829 2.83353C1.35043 2.83353 1.125 3.05748 1.125 3.33352V7.4207C1.125 9.64592 2.16172 13.3086 7.30471 15.4609C7.42922 15.513 7.57078 15.513 7.69529 15.4609C12.8383 13.3086 13.875 9.64592 13.875 7.4207V3.33352C13.875 3.05748 13.6496 2.83353 13.3717 2.83353C10.3559 2.83353 7.83553 0.627834 7.83553 0.627834C7.74771 0.54971 7.635 0.504138 7.51573 0.500232ZM7.5 1.64344C8.19202 2.19552 10.2209 3.61216 12.8684 3.79185V7.4207C12.8684 9.33473 12.1279 12.4219 7.5 14.4427C2.8721 12.4219 2.13158 9.33473 2.13158 7.4207V3.79185C4.77909 3.61216 6.80798 2.19552 7.5 1.64344ZM10.006 5.82827C9.87621 5.83218 9.7517 5.88687 9.65995 5.97931L6.66118 8.95974L5.34005 7.64596C5.21292 7.51575 5.02549 7.46367 4.84987 7.50924C4.67293 7.55481 4.53531 7.69153 4.48944 7.86731C4.44356 8.04178 4.49599 8.22798 4.62706 8.35428L6.30469 10.0209C6.50129 10.2149 6.82108 10.2149 7.01768 10.0209L10.3729 6.68764C10.521 6.54311 10.5656 6.32306 10.4843 6.13426C10.4044 5.94416 10.2144 5.82307 10.006 5.82827Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgProtected);\nexport default __webpack_public_path__ + \"static/media/protected.fcceb775.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgProtectedHeart(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.0003 1.66667C5.40535 1.66667 1.66699 5.40503 1.66699 10C1.66699 14.595 5.40535 18.3333 10.0003 18.3333C14.5953 18.3333 18.3337 14.595 18.3337 10C18.3337 5.40503 14.5953 1.66667 10.0003 1.66667ZM10.0003 2.91667C13.9197 2.91667 17.0837 6.08058 17.0837 10C17.0837 13.9194 13.9197 17.0833 10.0003 17.0833C6.0809 17.0833 2.91699 13.9194 2.91699 10C2.91699 6.08058 6.0809 2.91667 10.0003 2.91667Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.8988 6.66686C11.3108 6.65939 10.7198 6.8749 10.2695 7.31464L9.99527 7.5832L9.72102 7.31546C9.2707 6.87596 8.68037 6.66036 8.0926 6.66767C7.50483 6.67498 6.91967 6.90501 6.48046 7.35533C5.60165 8.25578 5.61992 9.71712 6.52033 10.5959L9.55907 13.5614C9.67579 13.6751 9.83231 13.7387 9.99527 13.7387C10.1582 13.7387 10.3147 13.6751 10.4315 13.5614L13.471 10.5951C14.3712 9.71658 14.3889 8.25585 13.5109 7.35533C13.0717 6.90476 12.4867 6.67432 11.8988 6.66686ZM8.10725 7.90953C8.37256 7.90631 8.63938 8.00641 8.84781 8.20982L9.55907 8.90318C9.67579 9.0169 9.83231 9.08055 9.99527 9.08055C10.1582 9.08055 10.3147 9.0169 10.4315 8.90318L11.1427 8.20982L11.1435 8.20901C11.352 8.00542 11.6181 7.90622 11.8833 7.90953C12.1484 7.91286 12.4124 8.01913 12.6157 8.22773C13.0227 8.64478 13.0149 9.29365 12.5978 9.70071L9.99527 12.2406L7.39273 9.70071C6.97564 9.29365 6.9678 8.64559 7.37482 8.22854V8.22773C7.57811 8.0193 7.84193 7.91276 8.10725 7.90953Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgProtectedHeart);\nexport default __webpack_public_path__ + \"static/media/protectedHeart.2e75dbaf.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as IconCheck } from 'assets/icons/circlecheck.svg';\n\nexport enum Operations {\n fiatIn,\n fiatOut,\n}\n\nexport enum DepositMethods {\n wire = 'Wire Transfer',\n creditCard = 'Credit Card',\n debitCard = 'Debit Card',\n samsungPay = 'Samsung Pay',\n googlePay = 'Google Pay',\n applePay = 'Apple Pay',\n ideal = 'iDeal',\n interac = 'Interac',\n sepa = 'SEPA',\n openBanking = 'Open Banking',\n sepaInstant = 'SEPA Instant',\n fasterPayments = 'Faster Payments',\n}\n\nexport interface Fiat {\n name: string;\n text: string;\n logo: React.FunctionComponent<\n React.SVGProps & {\n title?: string | undefined;\n }\n >;\n operations: Operations[];\n depositMethods: DepositMethods[];\n buyUrl?: string;\n sellUrl?: string;\n smallGap?: boolean;\n}\n\nexport const FiatBox = ({ fiat }: { fiat: Fiat }) => {\n const fiatIn = fiat.operations.includes(Operations.fiatIn);\n const fiatOut = fiat.operations.includes(Operations.fiatOut);\n\n return (\n
\n \n
\n Available Operations\n {fiatIn && (\n
\n Fiat in\n
\n )}\n {fiatOut && (\n
\n Fiat Out\n
\n )}\n
\n {fiat.text}\n
\n {fiatIn && (\n \n Buy\n \n )}\n {fiatOut && (\n \n Sell\n \n )}\n
\n
\n
\n
Deposit Methods
\n \n {fiat.depositMethods.map((method) => (\n
\n \n {method}\n
\n ))}\n
\n
\n
\n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { useInterval } from 'hooks/useInterval';\n\ninterface TickerProps {\n id: string;\n children: JSX.Element | JSX.Element[];\n speedMs?: number;\n}\n\nexport const Ticker = ({ id, children, speedMs = 60 }: TickerProps) => {\n const [pause, setPause] = useState(false);\n const [pos, setPos] = useState(0);\n const [scrollBack, setScrollBack] = useState(false);\n const [isMomentumScrolling, setIsMomentumScrolling] = useState(false);\n\n useInterval(async () => {\n const element = document.getElementById(`${id}`);\n if (element && !pause) {\n const scrollWidth = element.scrollWidth;\n const clientWidth = element.clientWidth;\n const scrollPosition = element.scrollLeft;\n const scrollTotal = scrollWidth - clientWidth;\n const nextPosition = scrollBack ? pos - 1 : pos + 1;\n\n if (scrollTotal === scrollPosition) setScrollBack(true);\n if (scrollPosition === 0) setScrollBack(false);\n\n element.scrollLeft = nextPosition;\n setPos(nextPosition);\n }\n }, speedMs);\n\n const handleScroll = useCallback((event: Event) => {\n const target = event.target as HTMLDivElement;\n if (target) setPos(target.scrollLeft);\n }, []);\n\n useEffect(() => {\n const element = document.getElementById(`${id}`);\n element && element.addEventListener('scroll', handleScroll);\n return () => {\n element && element.removeEventListener('scroll', handleScroll);\n };\n }, [id, handleScroll]);\n\n const unpauseOnMomentumEnd = () => {\n const element = document.getElementById(`${id}`);\n if (!element) return;\n const scrollStart = element.scrollLeft;\n setTimeout(() => {\n const scrollPos = element.scrollLeft;\n if (scrollStart !== scrollPos) unpauseOnMomentumEnd();\n else {\n setIsMomentumScrolling(false);\n setPause(false);\n }\n }, 250);\n };\n\n return (\n setPause(true)}\n onMouseLeave={() => setPause(false)}\n onTouchStart={() => setPause(true)}\n onTouchEnd={() => {\n if (!isMomentumScrolling) {\n setIsMomentumScrolling(true);\n unpauseOnMomentumEnd();\n }\n }}\n className=\"overflow-x-scroll pb-15 px-10 hide-scrollbar\"\n >\n {children}\n \n );\n};\n","import { Ticker } from 'components/ticker/Ticker';\nimport { useAppSelector } from 'store';\nimport { Token } from 'services/observables/tokens';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { getTopMovers } from 'store/bancor/bancor';\n\ninterface Props {\n setSearch: Function;\n}\n\nexport const TopMovers = ({ setSearch }: Props) => {\n const tokens = useAppSelector(getTopMovers);\n const handleClick = (token: Token) => {\n setSearch(token.symbol);\n };\n\n return (\n
\n

Top Movers

\n \n
\n {tokens.length\n ? tokens.map((token) => {\n const changePositive = Number(token.price_change_24) > 0;\n return (\n handleClick(token)}\n key={token.address}\n >\n
\n \n
\n
{token.symbol}
\n
{prettifyNumber(token.usdPrice ?? 0, true)}
\n \n {`${changePositive ? '+' : ''}${\n token.price_change_24\n }%`}\n
\n
\n
\n \n );\n })\n : [...Array(20)].map((_, index) => (\n \n ))}\n \n
\n
\n );\n};\n","import { createRef, useEffect } from 'react';\nimport {\n ChartOptions,\n createChart,\n DeepPartial,\n LineData,\n LineStyleOptions,\n SeriesOptionsCommon,\n} from 'lightweight-charts';\n\nconst seriesOptDefault: DeepPartial = {\n lineWidth: 1,\n crosshairMarkerVisible: false,\n priceLineVisible: false,\n};\n\nconst chartOptDefault: DeepPartial = {\n layout: {\n backgroundColor: 'transparent',\n },\n crosshair: {\n vertLine: {\n visible: false,\n },\n horzLine: {\n visible: false,\n },\n },\n leftPriceScale: {\n visible: false,\n borderVisible: false,\n },\n rightPriceScale: {\n visible: false,\n borderVisible: false,\n },\n timeScale: {\n visible: false,\n borderVisible: false,\n },\n grid: {\n horzLines: {\n visible: false,\n },\n vertLines: {\n visible: false,\n },\n },\n handleScroll: false,\n handleScale: false,\n};\n\nconst sizeDefault = { width: 160, height: 50 };\n\ninterface LineChartSimpleProps {\n data: LineData[];\n seriesOptions?: DeepPartial;\n chartOptions?: DeepPartial;\n color?: string;\n size?: { width: number; height: number };\n}\n\nexport const LineChartSimple = ({\n data,\n seriesOptions = seriesOptDefault,\n chartOptions = chartOptDefault,\n color,\n size = sizeDefault,\n}: LineChartSimpleProps) => {\n const chartDiv = createRef();\n\n useEffect(() => {\n if (!chartDiv.current) return;\n const chart = createChart(chartDiv.current, size);\n chart.applyOptions(chartOptions);\n chart.timeScale().fitContent();\n\n const lineSeries = chart.addLineSeries({\n ...seriesOptions,\n color,\n });\n lineSeries.setData(data);\n return () => chart.remove();\n }, [data, seriesOptions, chartOptions, size, chartDiv, color]);\n\n return
;\n};\n","import { Token } from 'services/observables/tokens';\nimport { useAppSelector } from 'store';\nimport { LineChartSimple } from 'components/charts/LineChartSimple';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { ReactComponent as IconProtected } from 'assets/icons/protected.svg';\nimport { useMemo } from 'react';\nimport { SortingRule } from 'react-table';\nimport { DataTable, TableColumn } from 'components/table/DataTable';\nimport { wethToken } from 'services/web3/config';\nimport { SearchInput } from 'components/searchInput/SearchInput';\nimport { sortNumbersByKey } from 'utils/pureFunctions';\nimport { getTokenTableData } from 'store/bancor/token';\nimport { Navigate } from 'components/navigate/Navigate';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { Image } from 'components/image/Image';\n\ninterface Props {\n searchInput: string;\n setSearchInput: (value: string) => void;\n}\n\nexport const TokenTable = ({ searchInput, setSearchInput }: Props) => {\n const tokens = useAppSelector(getTokenTableData);\n\n const data = useMemo(() => {\n return tokens.filter(\n (t) =>\n t.address !== wethToken &&\n (t.symbol.toLowerCase().includes(searchInput.toLowerCase()) ||\n t.name.toLowerCase().includes(searchInput.toLowerCase()))\n );\n }, [tokens, searchInput]);\n\n const CellName = (token: Token) => {\n return (\n
\n
\n {token.isProtected && (\n \n )}\n
\n\n \n

{token.symbol}

\n
\n );\n };\n\n const columns = useMemo[]>(\n () => [\n {\n id: 'name',\n Header: () => (\n \n Name\n \n ),\n accessor: 'symbol',\n Cell: (cellData) => CellName(cellData.row.original),\n minWidth: 180,\n sortDescFirst: true,\n },\n {\n id: 'price',\n Header: 'Price',\n accessor: 'usdPrice',\n Cell: (cellData) => prettifyNumber(cellData.value ?? 0, true),\n minWidth: 110,\n sortDescFirst: true,\n },\n {\n id: 'c24h',\n Header: '24h Change',\n accessor: 'price_change_24',\n Cell: (cellData) => {\n const changePositive = Number(cellData.value) > 0;\n return (\n \n {`${changePositive ? '+' : ''}${cellData.value}%`}\n \n );\n },\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, ['price_change_24']),\n minWidth: 110,\n sortDescFirst: true,\n },\n {\n id: 'v24h',\n Header: '24h Volume',\n accessor: 'usd_volume_24',\n Cell: (cellData) => prettifyNumber(cellData.value ?? 0, true),\n minWidth: 120,\n sortDescFirst: true,\n },\n {\n id: 'liquidity',\n Header: 'Liquidity',\n accessor: 'liquidity',\n Cell: (cellData) => prettifyNumber(cellData.value ?? 0, true),\n tooltip: 'The value of tokens staked in the pool',\n minWidth: 150,\n sortDescFirst: true,\n },\n {\n id: 'price7d',\n Header: 'Last 7 Days',\n accessor: 'price_history_7d',\n Cell: (cellData) => {\n const value = cellData.value;\n\n if (value.length === 0) return
N/A
;\n\n const changePositive =\n value[value.length - 1].value >= value[0].value;\n return (\n \n );\n },\n minWidth: 170,\n disableSortBy: true,\n },\n {\n id: 'actions',\n Header: '',\n accessor: 'symbol',\n Cell: (cellData) => {\n return (\n \n Trade\n \n );\n },\n width: 50,\n minWidth: 50,\n disableSortBy: true,\n },\n ],\n []\n );\n\n const defaultSort: SortingRule = { id: 'liquidity', desc: true };\n\n return (\n
\n
\n

Tokens

\n \n
\n\n \n data={data}\n columns={columns}\n defaultSort={defaultSort}\n isLoading={!tokens.length}\n stickyColumn\n search={searchInput}\n />\n
\n );\n};\n","import { TopMovers } from 'elements/tokens/TopMovers';\nimport { TokenTable } from 'elements/tokens/TokenTable';\nimport { useState } from 'react';\nimport { Page } from 'components/Page';\n\nexport const Tokens = () => {\n const [searchInput, setSearchInput] = useState('');\n const title = 'Tokens';\n const subtitle = 'Explore all tokens supported by Bancor.';\n\n return (\n \n
\n \n \n
\n
\n );\n};\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMoonpay(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 133,\n height: 41,\n viewBox: \"0 0 133 41\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.8286 31.0219H46.5974V20.6321L50.8624 31.0219H53.0952L57.3378 20.6321V31.0219H60.1068V15.3477H56.7126L51.9788 26.9242L47.245 15.3477H43.8286V31.0219Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.6826 31.2012C71.099 31.2012 73.5552 28.738 73.5552 25.3793C73.5552 22.0205 71.099 19.5574 67.6826 19.5574C64.2441 19.5574 61.7876 22.0205 61.7876 25.3793C61.7876 28.738 64.2441 31.2012 67.6826 31.2012ZM67.6826 28.8277C65.807 28.8277 64.5567 27.4169 64.5567 25.3793C64.5567 23.3416 65.807 21.9309 67.6826 21.9309C69.536 21.9309 70.7864 23.3416 70.7864 25.3793C70.7864 27.4169 69.536 28.8277 67.6826 28.8277Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.2541 31.2012C83.6705 31.2012 86.1267 28.738 86.1267 25.3793C86.1267 22.0205 83.6705 19.5574 80.2541 19.5574C76.8153 19.5574 74.3591 22.0205 74.3591 25.3793C74.3591 28.738 76.8153 31.2012 80.2541 31.2012ZM80.2541 28.8277C78.3783 28.8277 77.1279 27.4169 77.1279 25.3793C77.1279 23.3416 78.3783 21.9309 80.2541 21.9309C82.1073 21.9309 83.3579 23.3416 83.3579 25.3793C83.3579 27.4169 82.1073 28.8277 80.2541 28.8277Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.5334 31.022H90.2801V24.8643C90.2801 23.2072 91.3519 21.9981 92.8924 21.9981C94.2992 21.9981 95.237 23.0729 95.237 24.6179V31.022H97.9836V24.0357C97.9836 21.3935 96.3312 19.5574 93.7856 19.5574C92.1781 19.5574 90.9053 20.2515 90.2801 21.4831V19.7365H87.5334V31.022Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.264 31.0219H103.234V25.0657H106.538C109.799 25.0657 111.741 23.0504 111.741 20.2067C111.741 17.3629 109.799 15.3477 106.538 15.3477H100.264V31.0219ZM103.234 22.5802V17.8331H106.405C108.146 17.8331 108.861 18.9527 108.861 20.2067C108.861 21.4606 108.146 22.5802 106.405 22.5802H103.234Z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.014 19.5574C114.089 19.5574 112.191 21.304 112.057 23.5431H114.514C114.558 22.5355 115.429 21.6174 116.881 21.6174C118.332 21.6174 119.18 22.4011 119.18 23.4983C119.18 23.9462 118.912 24.2597 118.354 24.2597H116.278C113.754 24.2597 112.057 25.6256 112.057 27.82C112.057 29.768 113.576 31.2012 115.809 31.2012C117.416 31.2012 118.712 30.4621 119.18 29.3427V31.022H121.882V23.767C121.882 21.2144 119.873 19.5574 117.014 19.5574ZM116.456 29.1635C115.429 29.1635 114.715 28.5812 114.715 27.708C114.715 26.7228 115.496 26.0734 116.657 26.0734H119.18V26.2525C119.18 27.9543 118.176 29.1635 116.456 29.1635Z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M133 19.7366H130.187L127.596 27.4841L124.984 19.7366H122.193L126.301 31.0221L124.716 35.5899H127.328L129.07 30.4846L133 19.7366Z\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.5634 23.7912C32.5634 32.8086 25.2739 40.1186 16.2818 40.1186C7.2896 40.1186 0 32.8086 0 23.7912C0 14.7739 7.2896 7.46387 16.2818 7.46387C25.2739 7.46387 32.5634 14.7739 32.5634 23.7912Z\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.3326 5.8312C42.3326 9.05168 39.7292 11.6624 36.5175 11.6624C33.306 11.6624 30.7026 9.05168 30.7026 5.8312C30.7026 2.61072 33.306 0 36.5175 0C39.7292 0 42.3326 2.61072 42.3326 5.8312Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMoonpay);\nexport default __webpack_public_path__ + \"static/media/moonpay.e2a555c0.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBanxa(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 135,\n height: 22,\n viewBox: \"0 0 135 22\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.9169 10.6829C22.6958 13.6624 21.9449 19.7444 17.1809 21.5504C16.4578 21.8294 15.6243 21.9371 14.8429 21.9434C10.2762 21.9792 5.70872 21.9622 1.14121 21.9604C0.149828 21.9604 0.000897174 21.8079 0 20.8183C0 14.4238 0 8.02997 0 1.63671C0 0.619315 0.194688 0.431805 1.24707 0.430908C5.32024 0.430908 9.39341 0.430908 13.4666 0.430908C16.1141 0.430908 18.1776 1.51918 19.4436 3.8321C20.661 6.05529 20.4502 8.28387 19.0775 10.4066C19.0255 10.482 18.9842 10.5636 18.9169 10.6829ZM10.0232 18.1384C11.5305 18.1384 13.0377 18.1456 14.545 18.1384C15.8665 18.1304 16.8884 17.0708 16.9216 15.6936C16.9548 14.3479 16.011 13.1663 14.7316 13.1466C11.5771 13.0981 8.42088 13.1214 5.26552 13.1277C4.61327 13.1277 4.27324 13.474 4.27862 14.1406C4.28401 15.1006 4.27055 16.0615 4.27862 17.0215C4.28849 17.8917 4.54778 18.1366 5.4306 18.1393C6.96207 18.142 8.49265 18.1384 10.0232 18.1384ZM9.45442 9.28153C10.819 9.28153 12.1845 9.29051 13.5491 9.28153C14.7774 9.27166 15.7625 8.21659 15.8181 6.87621C15.8719 5.56364 14.9344 4.34169 13.7214 4.32195C10.8746 4.27709 8.02612 4.30491 5.17849 4.3085C4.57021 4.3085 4.28132 4.64404 4.28132 5.23707C4.28132 6.26703 4.26606 7.30057 4.2867 8.32784C4.30016 9.04558 4.55585 9.27705 5.29153 9.28153C6.67857 9.28781 8.0656 9.28153 9.45442 9.28153Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.3418 15.0225V14.346C72.3418 10.1527 72.3418 5.95926 72.3418 1.76587C72.3418 0.562759 72.4764 0.431771 73.666 0.430874C74.3488 0.430874 75.0324 0.425491 75.7152 0.430874C76.3055 0.437154 76.6123 0.700026 76.6123 1.33343C76.6028 7.9163 76.6028 14.4992 76.6123 21.082C76.6123 21.7163 76.3315 21.9792 75.7152 21.9604C75.3384 21.9478 74.9615 21.9604 74.5847 21.9604C72.3562 21.9604 72.3867 21.9343 70.9449 20.2557C67.245 15.9583 63.5118 11.6823 59.7912 7.39564C59.6869 7.24772 59.5299 7.14532 59.3525 7.10944V20.5007C59.3525 21.8581 59.2457 21.9604 57.8596 21.9613C57.2944 21.9613 56.7292 21.9613 56.1648 21.9613C55.178 21.9559 55.0443 21.8195 55.0398 20.8084C55.0398 20.2701 55.0398 19.7318 55.0398 19.1935C55.0398 13.3601 55.0398 7.52842 55.0398 1.69858C55.0398 0.577114 55.178 0.442539 56.2958 0.438053C57.0737 0.438053 57.9679 0.414778 58.6285 0.426389C59.2891 0.438124 59.6898 0.625561 60.0882 1.08761C63.9759 5.60398 67.8688 10.1138 71.7667 14.617C71.9022 14.7731 72.0439 14.9247 72.1821 15.0781L72.3418 15.0225Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.7406 21.9613C34.3017 21.9613 30.8611 21.8886 27.4231 21.9882C25.3838 22.0474 24.4364 20.2002 25.4206 18.5431C28.7644 12.9088 32.022 7.22342 35.3137 1.55867C36.5124 -0.504835 39.0657 -0.525471 40.2634 1.53265C43.5943 7.25482 46.9178 12.9818 50.2337 18.7135C51.1704 20.3284 50.2337 21.9487 48.338 21.9568C44.8085 21.9721 41.2737 21.9613 37.7406 21.9613ZM30.6529 17.8128H44.918L37.7854 5.52149L30.6529 17.8128Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.1204 10.7126C97.8815 12.812 99.6113 14.8755 101.343 16.939C102.308 18.0883 103.302 19.216 104.225 20.3994C104.447 20.6865 104.59 21.2069 104.479 21.5209C104.397 21.7523 103.851 21.9228 103.502 21.9416C102.493 21.9964 101.476 21.9156 100.467 21.9766C99.7494 22.0197 99.2856 21.7452 98.8594 21.2006C97.1548 19.0222 95.4215 16.8672 93.6971 14.705C93.5957 14.5785 93.4791 14.4637 93.3158 14.2843L89.876 18.5674C89.0982 19.5372 88.3508 20.5313 87.5272 21.4634C87.2596 21.7386 86.9014 21.9075 86.5188 21.939C85.4153 21.9991 84.3055 21.991 83.1993 21.9443C82.8404 21.9291 82.2222 21.7649 82.189 21.5855C82.1164 21.1907 82.2195 20.6425 82.4699 20.3294C83.9376 18.5019 85.4682 16.7246 86.9764 14.9302C88.1499 13.5333 89.3216 12.1355 90.5112 10.7135C88.5446 8.31446 86.613 5.95848 84.6796 3.6034C84.249 3.07766 83.7645 2.58421 83.4101 2.01092C83.2136 1.69242 83.0997 1.19718 83.2073 0.86343C83.2782 0.643622 83.7035 0.449834 84.1341 0.449834C85.0941 0.449828 85.9464 0.418438 86.9584 0.418432C87.651 0.418432 88.1382 0.630166 88.5679 1.19C89.9774 3.0328 91.4335 4.8406 92.8744 6.66276C93.0045 6.82695 93.1516 6.97767 93.3454 7.19658C94.3197 5.96656 95.2734 4.76704 96.2235 3.56392C96.9206 2.68111 97.5828 1.76958 98.3247 0.925335C98.5952 0.651914 98.9551 0.485029 99.3385 0.455217C100.394 0.395106 101.458 0.40587 102.515 0.450729C102.83 0.464187 103.341 0.625678 103.399 0.823954C103.501 1.17116 103.453 1.6996 103.239 1.97862C102.096 3.46434 100.883 4.89623 99.6938 6.34696L96.1204 10.7126Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.626 21.9613C118.187 21.9613 114.746 21.8886 111.308 21.9882C109.269 22.0474 108.321 20.2002 109.306 18.5431C112.649 12.9088 115.907 7.22342 119.199 1.55867C120.397 -0.504835 122.951 -0.525471 124.148 1.53265C127.479 7.25482 130.803 12.9818 134.119 18.7135C135.055 20.3284 134.119 21.9487 132.223 21.9568C128.694 21.9721 125.159 21.9613 121.626 21.9613ZM114.538 17.8128H128.803L121.67 5.52149L114.538 17.8128Z\",\n fill: \"url(#paint0_linear)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 129.235,\n y1: 10.1383,\n x2: 108.914,\n y2: 20.8147,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#00D2BC\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#0071CF\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBanxa);\nexport default __webpack_public_path__ + \"static/media/banxa.52bc7597.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSimplex(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 128,\n height: 40,\n viewBox: \"0 0 128 40\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.835 24.9565C127.591 25.5864 127.097 25.6576 126.638 25.1438C125.399 23.7509 124.138 22.3579 122.895 20.965C122.733 20.7824 122.643 20.7499 122.46 20.965C121.222 22.3579 119.972 23.7276 118.724 25.1082L118.588 25.2506C118.313 25.5369 117.969 25.5601 117.721 25.328C117.617 25.2069 117.561 25.0521 117.563 24.8926C117.565 24.733 117.625 24.5797 117.732 24.4613C118.232 23.9118 118.741 23.3686 119.246 22.8222C120.061 21.9385 120.874 21.0501 121.697 20.1726C121.84 20.0178 121.84 19.9281 121.697 19.7748C120.447 18.4284 119.201 17.0767 117.961 15.7199C117.845 15.6192 117.759 15.4878 117.714 15.3407C117.663 15.0745 117.652 14.8099 117.929 14.6427C118.056 14.5646 118.208 14.5346 118.356 14.5581C118.503 14.5817 118.638 14.6572 118.735 14.7712C119.244 15.3268 119.746 15.8917 120.249 16.4551C121.004 17.3047 121.761 18.1575 122.51 19.0118C122.646 19.1666 122.73 19.196 122.881 19.0227C124.11 17.6298 125.35 16.2368 126.585 14.8516C126.856 14.5421 127.264 14.474 127.514 14.6969C127.763 14.9197 127.722 15.3376 127.473 15.6116C126.213 16.9942 124.951 18.3742 123.686 19.7516C123.547 19.9064 123.531 19.9807 123.677 20.1386C124.944 21.5005 126.201 22.8718 127.462 24.2368C127.636 24.4027 127.768 24.6082 127.845 24.8358L127.835 24.9565Z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.1583 16.3745C67.627 13.7125 72.2577 13.7017 73.3659 16.6965C73.5996 16.2996 73.8734 15.9277 74.183 15.5868C75.1117 14.6674 76.2631 14.3796 77.5199 14.4183C78.3045 14.4415 79.0676 14.6009 79.7253 15.0575C80.6787 15.7106 81.0842 16.6794 81.273 17.7644C81.3656 18.3363 81.4065 18.9154 81.3953 19.4947V24.5835C81.3953 24.681 81.3953 24.78 81.3953 24.8776C81.3643 25.2614 81.1585 25.4827 80.8397 25.4842C80.4775 25.4842 80.2438 25.2614 80.2314 24.8652C80.2175 24.3405 80.2314 23.8143 80.2314 23.2896C80.2314 21.8998 80.2314 20.51 80.2314 19.1201C80.2309 18.5733 80.1479 18.0296 79.9853 17.5075C79.4916 15.8963 78.1281 15.3252 76.6423 15.5558C75.1844 15.7833 74.2094 16.845 73.9168 18.3726C73.8182 18.9101 73.771 19.4558 73.776 20.0023C73.776 21.6104 73.776 23.22 73.776 24.828C73.776 25.3805 73.3721 25.6468 72.9093 25.4131C72.64 25.2784 72.6168 25.0292 72.6168 24.7692C72.6168 22.9306 72.6168 21.0919 72.6168 19.2548C72.6342 18.5973 72.5293 17.9424 72.3072 17.3233C71.7377 15.8406 70.4841 15.336 69.0246 15.5543C67.5651 15.7725 66.6102 16.8048 66.2976 18.3649C66.204 18.8233 66.1568 19.2899 66.1567 19.7578C66.1567 21.4417 66.1567 23.1271 66.1567 24.8125C66.1567 25.1221 66.0716 25.3666 65.7265 25.4533C65.6485 25.4805 65.5653 25.4893 65.4834 25.4788C65.4015 25.4684 65.3232 25.439 65.2546 25.3931C65.186 25.3472 65.129 25.2859 65.0881 25.2142C65.0473 25.1424 65.0237 25.0621 65.0192 24.9797C65.0161 24.9251 65.0161 24.8703 65.0192 24.8156C65.0192 21.6171 65.0192 18.4221 65.0192 15.2308C65.0192 14.7944 65.1631 14.5993 65.4835 14.5668C65.9014 14.5235 66.1382 14.7324 66.1505 15.1766C66.166 15.5465 66.1583 15.9195 66.1583 16.3745Z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.4769 25.6188C50.0979 25.594 48.7453 25.447 47.5365 24.701C47.2812 24.533 47.0353 24.3511 46.7998 24.1562C46.6975 24.0744 46.6176 23.9679 46.5677 23.8467C46.5027 23.7309 46.4799 23.5961 46.5034 23.4654C46.5268 23.3347 46.5949 23.2161 46.6961 23.1301C46.8679 22.9754 47.2703 23.0094 47.4622 23.1796C49.2576 24.7815 51.3423 24.8279 53.4982 24.2243C54.642 23.9055 55.1295 23.0434 54.9871 21.9276C54.9689 21.7304 54.9001 21.5413 54.7873 21.3786C54.6745 21.2159 54.5215 21.0851 54.3433 20.999C53.5447 20.5795 52.6733 20.496 51.7973 20.4604C50.7712 20.4186 49.7404 20.4309 48.7329 20.1771C47.795 19.9403 46.9855 19.541 46.7642 18.4948C46.5212 17.348 46.7472 16.3172 47.665 15.5155C48.3738 14.8964 49.2312 14.6163 50.1413 14.4971C51.6456 14.3021 53.1082 14.4259 54.4748 15.1332C54.8392 15.3115 55.1747 15.5437 55.47 15.8219C55.5799 15.9369 55.6447 16.0876 55.6527 16.2464C55.6606 16.4053 55.6112 16.5617 55.5133 16.6871C55.3991 16.7919 55.2497 16.8501 55.0947 16.8501C54.9396 16.8501 54.7902 16.7919 54.676 16.6871C53.4688 15.5851 52.0155 15.4071 50.474 15.5619C49.8096 15.6459 49.1715 15.8741 48.6044 16.2305C47.9219 16.6298 47.5984 17.7101 47.9451 18.4236C48.0665 18.6592 48.2712 18.8412 48.5193 18.9343C49.3303 19.2872 50.1939 19.3367 51.0591 19.3615C52.1099 19.3909 53.1577 19.4203 54.1792 19.7113C54.6473 19.8452 55.0721 20.0994 55.4113 20.4486C55.7505 20.7978 55.9922 21.2298 56.1125 21.7016C56.2327 22.1733 56.2273 22.6683 56.0966 23.1373C55.9659 23.6063 55.7147 24.0328 55.3678 24.3745C54.6929 25.0744 53.78 25.4958 52.8095 25.5553C52.367 25.6038 51.922 25.625 51.4769 25.6188Z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.8098 19.7237C59.8098 18.0707 59.8098 16.4193 59.8098 14.7711C59.8233 14.6824 59.8027 14.5919 59.7522 14.5178C59.7016 14.4437 59.6249 14.3915 59.5374 14.3718C59.035 14.1871 58.6098 13.838 58.3311 13.3811C58.0523 12.9242 57.9364 12.3864 58.0021 11.8552C58.0479 11.4711 58.1858 11.1037 58.404 10.7843C58.6222 10.4649 58.9143 10.2028 59.2555 10.0205C59.5966 9.83808 59.9768 9.74074 60.3636 9.7367C60.7504 9.73267 61.1325 9.82206 61.4774 9.99729C61.8223 10.1725 62.1198 10.4284 62.3446 10.7432C62.5694 11.058 62.715 11.4224 62.7688 11.8055C62.8227 12.1886 62.7833 12.579 62.654 12.9436C62.5247 13.3082 62.3092 13.6362 62.0261 13.8997C61.8186 14.1141 61.5613 14.2737 61.277 14.364C60.9999 14.4383 60.9674 14.5884 60.9674 14.8283C60.9767 18.0743 60.9793 21.3198 60.9752 24.5648C60.9785 24.696 60.9749 24.8272 60.9643 24.958C60.9631 25.0296 60.9477 25.1002 60.919 25.1658C60.8902 25.2314 60.8487 25.2906 60.7969 25.34C60.745 25.3894 60.6839 25.428 60.617 25.4535C60.5501 25.4791 60.4787 25.4911 60.4072 25.4888C60.2683 25.5004 60.1305 25.4566 60.0238 25.3671C59.9172 25.2775 59.8502 25.1493 59.8376 25.0106C59.8167 24.8702 59.8074 24.7284 59.8098 24.5865C59.8098 22.9635 59.8098 21.3425 59.8098 19.7237Z\",\n fill: \"#43AF2A\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.294 17.5275V24.7784C101.294 25.0648 101.274 25.3279 100.944 25.4424C100.545 25.5817 100.208 25.3836 100.158 24.9657C100.146 24.8351 100.141 24.7038 100.144 24.5726V10.4577C100.144 10.3602 100.144 10.2611 100.144 10.1636C100.166 9.75656 100.366 9.53369 100.706 9.53369C101.081 9.53369 101.285 9.75037 101.286 10.1713C101.286 10.8833 101.286 11.5937 101.286 12.3041L101.294 17.5275Z\",\n fill: \"currentColor\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.5571 25.492C37.4655 25.4711 37.3853 25.4161 37.333 25.3381C37.2806 25.2602 37.26 25.1652 37.2754 25.0725C37.2816 21.6913 37.2816 18.3102 37.2754 14.929C37.2621 14.8364 37.2849 14.7422 37.339 14.6659C37.3932 14.5896 37.4745 14.5369 37.5663 14.5188C37.8901 14.4012 38.1856 14.2171 38.434 13.9784C38.6823 13.7397 38.878 13.4516 39.0083 13.1327C39.1386 12.8139 39.2008 12.4713 39.1908 12.127C39.1808 11.7826 39.0988 11.4442 38.9502 11.1335C38.8015 10.8227 38.5895 10.5465 38.3277 10.3226C38.0659 10.0987 37.7601 9.93213 37.4301 9.8335C37.1001 9.73487 36.753 9.7064 36.4113 9.74993C36.0696 9.79346 35.7408 9.90802 35.446 10.0863C35.1984 10.241 35.0777 10.1745 34.8919 10.0274C32.3042 7.9556 29.7134 5.88944 27.1194 3.82895C26.8594 3.62156 26.7635 3.47298 26.8703 3.11082C26.9633 2.78111 26.9859 2.43553 26.9367 2.0965C26.8876 1.75747 26.7676 1.43257 26.5848 1.14288C26.4019 0.853194 26.1602 0.605186 25.8753 0.414955C25.5904 0.224723 25.2687 0.0965166 24.931 0.0386552C24.5971 -0.0210486 24.2544 -0.0115068 23.9244 0.0666887C23.5943 0.144884 23.2838 0.290066 23.0121 0.493228C22.7404 0.696391 22.5134 0.953202 22.3451 1.24773C22.1768 1.54226 22.0708 1.86823 22.0337 2.20542C22.0152 2.39269 21.9579 2.46543 21.7768 2.50567C18.4421 3.26094 15.1073 4.02086 11.7725 4.78542C11.6892 4.81538 11.5976 4.81273 11.516 4.778C11.4345 4.74327 11.3692 4.67903 11.333 4.59815C10.7588 3.72989 9.92461 3.36 8.90623 3.50238C8.45467 3.54884 8.02664 3.72665 7.67509 4.01383C7.32354 4.30102 7.0639 4.68496 6.92828 5.11817C6.59398 6.06381 6.80137 6.93516 7.48545 7.66412C7.55431 7.71757 7.60072 7.7948 7.61561 7.88069C7.6305 7.96657 7.61278 8.05492 7.56593 8.12843C6.0884 11.1825 4.61449 14.2387 3.14418 17.2969C3.11787 17.3836 3.05953 17.4569 2.98103 17.5021C2.90253 17.5472 2.80978 17.5608 2.72166 17.5399C2.37283 17.4936 2.01803 17.5268 1.68381 17.6369C1.3496 17.7471 1.04462 17.9314 0.791693 18.176C0.416369 18.5244 0.158274 18.9805 0.0529481 19.4817C-0.0523781 19.9828 0.000245107 20.5043 0.203571 20.9743C0.406897 21.4507 0.756269 21.8503 1.20132 22.1153C1.64637 22.3804 2.1641 22.4973 2.67987 22.4492C2.92131 22.4291 3.04668 22.4678 3.14418 22.7061C3.45372 23.384 3.78183 24.0464 4.10375 24.7181C5.25213 27.0912 6.40104 29.4685 7.55045 31.8499C7.60014 31.9244 7.61948 32.0151 7.60452 32.1034C7.58956 32.1917 7.54143 32.271 7.46997 32.325C7.18327 32.6063 6.97277 32.9558 6.85825 33.3408C6.74373 33.7258 6.72895 34.1336 6.8153 34.5258C6.90737 35.0137 7.14441 35.4625 7.49547 35.8135C7.84653 36.1646 8.29529 36.4017 8.78316 36.4938C9.27103 36.5859 9.77533 36.5287 10.2302 36.3298C10.6851 36.1308 11.0694 35.7993 11.333 35.3786C11.3485 35.3396 11.3718 35.3042 11.4014 35.2745C11.431 35.2447 11.4664 35.2213 11.5053 35.2057C11.5443 35.1901 11.586 35.1825 11.6279 35.1835C11.6699 35.1845 11.7112 35.194 11.7493 35.2114C12.0589 35.2935 12.3885 35.3662 12.7074 35.4312C15.7006 36.1184 18.6923 36.8087 21.684 37.4819C21.7789 37.4875 21.868 37.5296 21.9327 37.5994C21.9973 37.6692 22.0324 37.7613 22.0306 37.8564C22.076 38.2772 22.2327 38.6783 22.4846 39.0183C22.7365 39.3584 23.0745 39.6251 23.4638 39.7911C23.6371 39.8715 23.8213 39.9304 24.0024 40H24.9883C25.0007 39.9474 25.044 39.9427 25.0858 39.9319C25.4227 39.8455 25.7376 39.689 26.01 39.4728C26.2825 39.2565 26.5063 38.9853 26.6669 38.6767C26.8275 38.3682 26.9213 38.0293 26.9422 37.6821C26.9631 37.3349 26.9107 36.9872 26.7882 36.6616C26.7108 36.4465 26.8347 36.3892 26.9507 36.2964C29.621 34.1719 32.2908 32.0454 34.96 29.9168C35.0145 29.8618 35.0877 29.8292 35.1651 29.8255C35.2424 29.8217 35.3184 29.8471 35.3779 29.8967C36.6609 30.6705 38.2845 30.2062 38.9128 28.9108C39.0691 28.6005 39.1578 28.2606 39.1733 27.9135C39.1887 27.5664 39.1305 27.22 39.0024 26.897C38.8743 26.5741 38.6793 26.2819 38.4302 26.0397C38.1811 25.7975 37.8835 25.6109 37.5571 25.492ZM8.68027 31.3732L8.61681 31.3871C7.12587 28.3051 5.63751 25.2196 4.15173 22.1304L4.19351 22.1041C5.63802 23.2545 7.08254 24.4034 8.52705 25.5508C8.57845 25.5887 8.61955 25.6388 8.64659 25.6967C8.67362 25.7545 8.68573 25.8182 8.68181 25.882C8.67769 27.7144 8.67717 29.5474 8.68027 31.3809V31.3732ZM8.68027 24.1857L4.83271 21.1306L7.44366 21.7233C7.78415 21.8007 8.12465 21.8781 8.46669 21.957C8.61217 21.988 8.68646 22.0453 8.68336 22.217C8.67253 22.8485 8.68027 23.48 8.68027 24.1934V24.1857ZM8.6911 19.3724C8.6911 19.8367 8.6911 20.3087 8.6911 20.8148L5.08498 20.0039C6.29528 19.7299 7.40652 19.4807 8.5224 19.2192C8.70193 19.1712 8.69265 19.2625 8.6911 19.3848V19.3724ZM8.54716 18.0228C7.3864 18.2813 6.22563 18.5444 5.06641 18.7967C5.05093 18.7967 5.03236 18.7812 4.972 18.7502L8.68646 15.7879C8.68646 16.5185 8.68646 17.1809 8.68646 17.8402C8.69043 17.8615 8.68989 17.8833 8.68488 17.9044C8.67987 17.9254 8.6705 17.9452 8.65738 17.9624C8.64425 17.9796 8.62766 17.9939 8.60867 18.0043C8.58969 18.0147 8.56874 18.021 8.54716 18.0228ZM8.68336 8.82179C8.68336 10.5614 8.68336 12.301 8.68336 14.0406C8.68336 14.1799 8.69884 14.3084 8.558 14.4198C7.1073 15.563 5.66279 16.7119 4.22447 17.8665L4.17185 17.8247C5.65763 14.7448 7.14702 11.6582 8.64003 8.56488C8.66538 8.60205 8.68285 8.64403 8.69137 8.68821C8.69989 8.7324 8.69927 8.77786 8.68955 8.82179H8.68336ZM23.9111 16.8806L22.7704 15.9706C23.1372 15.887 23.4452 15.8158 23.7486 15.7446C23.877 15.7106 23.9033 15.7678 23.9033 15.87C23.9173 16.1826 23.9173 16.4937 23.9173 16.8806H23.9111ZM23.9033 27.829C23.9033 28.5161 23.9033 29.2049 23.9033 29.8936C23.9033 30.0623 23.86 30.1397 23.6805 30.1753C23.1032 30.2944 22.529 30.4291 21.9579 30.5715C21.8232 30.6055 21.7629 30.5715 21.7056 30.4569C21.0865 29.16 20.4675 27.863 19.8329 26.5722C19.7648 26.4314 19.8236 26.3757 19.9149 26.3045C20.4396 25.8913 20.9627 25.4796 21.4812 25.0663C21.52 25.0292 21.5679 25.0029 21.62 24.9899C21.6721 24.9768 21.7266 24.9776 21.7784 24.9921C22.4036 25.1437 23.031 25.2882 23.6604 25.4254C23.6976 25.4274 23.7339 25.4373 23.767 25.4545C23.8 25.4717 23.829 25.4958 23.852 25.5251C23.875 25.5544 23.8915 25.5883 23.9004 25.6245C23.9092 25.6607 23.9102 25.6983 23.9033 25.7349C23.9033 26.4299 23.9095 27.1232 23.9095 27.829H23.9033ZM18.9353 12.6616C18.8687 12.7994 18.8192 12.838 18.6799 12.7251C17.709 11.9409 16.735 11.1629 15.7578 10.3912C15.6557 10.3107 15.6418 10.2596 15.7578 10.1729C16.4265 9.64362 17.093 9.11121 17.7575 8.57571C17.7825 8.54826 17.8154 8.52911 17.8516 8.52081C17.8878 8.51252 17.9257 8.51547 17.9602 8.52928L20.4257 9.08645C20.5805 9.1205 20.6238 9.17312 20.5449 9.33408C20.0042 10.4381 19.4697 11.5457 18.9414 12.657L18.9353 12.6616ZM19.3841 14.751C19.624 14.9537 19.8716 15.1472 20.1579 15.3809L18.7619 15.6982C18.9167 15.3809 19.0513 15.0992 19.1829 14.8144C19.2262 14.7077 19.2711 14.6458 19.3903 14.7417L19.3841 14.751ZM18.1459 13.779C18.2094 13.8301 18.3007 13.8673 18.2837 13.988C18.2636 14.0313 18.2388 14.0793 18.2156 14.1288C17.9463 14.6891 17.6708 15.2463 17.4123 15.8096C17.3819 15.8821 17.3336 15.9457 17.2719 15.9945C17.2101 16.0432 17.1371 16.0754 17.0595 16.0882C16.4512 16.2197 15.843 16.3513 15.2394 16.5014C15.0691 16.5448 14.9933 16.52 14.9159 16.3559C14.3133 15.0868 13.7036 13.8208 13.0865 12.5579C13.0669 12.533 13.0532 12.504 13.0463 12.4731C13.0394 12.4421 13.0395 12.4101 13.0466 12.3792C13.0537 12.3483 13.0677 12.3194 13.0875 12.2946C13.1072 12.2698 13.1323 12.2498 13.1608 12.236C13.6251 11.8785 14.0894 11.507 14.5429 11.1325C14.5621 11.1102 14.5858 11.0924 14.6126 11.0801C14.6393 11.0679 14.6683 11.0616 14.6977 11.0616C14.7271 11.0616 14.7561 11.0679 14.7828 11.0801C14.8095 11.0924 14.8333 11.1102 14.8525 11.1325C15.9513 12.0178 17.0595 12.8938 18.1568 13.7744L18.1459 13.779ZM16.654 17.3681L16.0256 18.6713L15.5241 17.6281L16.654 17.3681ZM16.64 22.6164C16.2646 22.5661 15.8936 22.487 15.5303 22.3796C15.6851 22.0422 15.8399 21.714 16.0225 21.3426L16.64 22.6164ZM17.0889 23.9226C17.1431 23.9272 17.1954 23.9451 17.2411 23.9748C17.2867 24.0045 17.3243 24.0451 17.3504 24.0928C17.6517 24.7233 17.9545 25.3516 18.2589 25.9779C18.2682 25.9965 18.2759 26.0182 18.2837 26.0383C18.3053 26.1373 18.2233 26.1714 18.1676 26.2163C17.0491 27.1077 15.9302 27.9992 14.8107 28.8907C14.6977 28.982 14.6296 28.9541 14.5321 28.8752C14.0755 28.5022 13.6158 28.1323 13.1484 27.7702C13.1204 27.7551 13.096 27.7342 13.0769 27.7089C13.0578 27.6835 13.0443 27.6543 13.0376 27.6233C13.0308 27.5922 13.0309 27.5601 13.0377 27.5291C13.0446 27.4981 13.058 27.4689 13.0773 27.4436C13.6901 26.191 14.2968 24.9358 14.8973 23.6781C14.9732 23.5233 15.0351 23.4521 15.2378 23.5047C15.86 23.6579 16.4822 23.7818 17.0997 23.918L17.0889 23.9226ZM18.6985 27.278C18.8238 27.1774 18.8734 27.2161 18.9322 27.3384C19.463 28.4496 19.9939 29.5608 20.5356 30.6674C20.6176 30.8377 20.5789 30.8918 20.4102 30.929C19.6364 31.1023 18.8625 31.2834 18.0794 31.4552C18.0299 31.4769 17.9759 31.4862 17.9219 31.4825C17.868 31.4787 17.8158 31.4619 17.7698 31.4335L15.6248 29.7311C16.6679 28.8969 17.6785 28.089 18.6985 27.278ZM18.7573 24.3049L20.1626 24.6283C19.8778 24.8574 19.6395 25.0431 19.4088 25.2366C19.2974 25.3294 19.2355 25.331 19.1721 25.1871C19.0467 24.9007 18.9167 24.6222 18.7619 24.3033L18.7573 24.3049ZM23.908 24.1377C23.908 24.2554 23.86 24.2817 23.7455 24.2538C23.4514 24.1826 23.1543 24.1223 22.7766 24.0402L23.908 23.1395V24.1377ZM23.908 19.9915C23.908 20.4558 23.908 20.9309 23.908 21.4014C23.9144 21.4765 23.9013 21.5519 23.8702 21.6205C23.839 21.689 23.7907 21.7484 23.73 21.793C22.9809 22.3801 22.2365 22.9723 21.4967 23.5697C21.4453 23.6166 21.3828 23.6496 21.3151 23.6656C21.2474 23.6816 21.1767 23.68 21.1098 23.661C20.1966 23.4459 19.2804 23.2432 18.3626 23.042C18.2835 23.0308 18.2086 22.9995 18.1452 22.951C18.0817 22.9024 18.0319 22.8384 18.0005 22.7649C17.612 21.9369 17.2096 21.1135 16.8041 20.2886C16.7548 20.205 16.728 20.1101 16.7261 20.013C16.7242 19.916 16.7473 19.8201 16.7933 19.7346C17.206 18.9091 17.611 18.0759 18.0082 17.235C18.0334 17.1697 18.0752 17.112 18.1295 17.0678C18.1837 17.0236 18.2486 16.9942 18.3177 16.9828C19.2556 16.7764 20.192 16.5644 21.1268 16.3467C21.1878 16.3271 21.2529 16.3238 21.3156 16.3371C21.3783 16.3504 21.4365 16.3798 21.4843 16.4225C22.2148 17.0117 22.95 17.5967 23.6898 18.1776C23.7651 18.2279 23.8255 18.2976 23.8647 18.3793C23.9039 18.4609 23.9204 18.5516 23.9126 18.6419C23.8972 19.0923 23.9095 19.5395 23.9095 19.9899L23.908 19.9915ZM23.908 12.1911C23.908 12.8814 23.908 13.5701 23.908 14.2588C23.908 14.4616 23.8476 14.5498 23.648 14.59C23.0289 14.718 22.4098 14.8562 21.7907 15.0048C21.7352 15.0232 21.6757 15.0262 21.6185 15.0137C21.5613 15.0012 21.5086 14.9735 21.4657 14.9336C20.9643 14.5281 20.4592 14.1268 19.9505 13.7295C19.8236 13.6305 19.7726 13.55 19.8561 13.3797C20.4649 12.1416 21.0633 10.9034 21.6515 9.66528C21.7536 9.44861 21.865 9.40063 22.0941 9.46099C22.6002 9.59409 23.114 9.69933 23.6263 9.80767C23.6688 9.80895 23.7104 9.81941 23.7484 9.83834C23.7865 9.85726 23.8199 9.88419 23.8466 9.91728C23.8732 9.95037 23.8923 9.98884 23.9027 10.03C23.913 10.0712 23.9143 10.1142 23.9064 10.1559C23.8972 10.8338 23.9095 11.5117 23.9095 12.1896L23.908 12.1911ZM23.908 5.18163V6.7386C23.908 7.30661 23.908 7.87461 23.908 8.44106C23.908 8.62214 23.8863 8.69643 23.6712 8.63607C23.2936 8.53083 22.8973 8.46273 22.5228 8.37451C22.4408 8.35439 22.2953 8.36368 22.368 8.20272C22.854 7.18743 23.3415 6.17318 23.8306 5.15996L23.908 5.18163ZM22.7859 4.57493L22.8261 4.60434L21.2274 7.93187C21.2215 7.95275 21.2116 7.97225 21.198 7.98922C21.1845 8.00618 21.1678 8.02027 21.1487 8.03066C21.1297 8.04104 21.1088 8.04751 21.0872 8.04968C21.0656 8.05186 21.0438 8.04969 21.0231 8.04331C20.3793 7.88854 19.7354 7.7477 19.0219 7.579L22.7859 4.57493ZM22.0399 3.6293C21.8106 3.87365 21.557 4.09404 21.2831 4.28706C20.1038 5.22961 18.9213 6.16596 17.742 7.1085C17.7029 7.15299 17.6531 7.18674 17.5973 7.20651C17.5415 7.22629 17.4815 7.23145 17.4232 7.22148C15.6258 6.80361 13.8284 6.38728 12.031 5.9725C12.003 5.95761 11.9766 5.93998 11.9521 5.91988L22.0399 3.6293ZM16.4032 8.16712C15.8538 8.60666 15.3415 9.01216 14.8339 9.42384C14.7457 9.49504 14.6791 9.51671 14.5801 9.43932C13.6267 8.67786 12.6702 7.91949 11.74 7.10541L16.4032 8.16712ZM13.7644 10.2735C13.3821 10.5831 13.0231 10.8647 12.6671 11.1526C12.5464 11.2501 12.4675 11.2826 12.3823 11.1C11.918 10.1141 11.4398 9.13443 10.9678 8.15938C10.9554 8.11956 10.9471 8.0786 10.943 8.03712L13.7644 10.2735ZM9.86425 8.65929L9.91378 8.64536C10.2697 9.36761 10.6247 10.0955 10.9786 10.8291C11.1442 11.1712 11.3005 11.5179 11.4692 11.8584C11.5234 11.9682 11.545 12.0456 11.429 12.1369C10.9213 12.5301 10.4214 12.934 9.86425 13.3751V8.65929ZM10.392 14.4322C10.9089 14.087 11.3779 13.6692 11.8592 13.2729C12.014 13.1476 12.0836 13.1182 12.1827 13.3302C12.6986 14.426 13.2238 15.5171 13.7582 16.6036C13.8495 16.7908 13.7985 16.845 13.6174 16.8853C12.4442 17.1422 11.2726 17.4079 10.1026 17.6823C9.8983 17.7303 9.83329 17.6823 9.84103 17.4749C9.85496 17.0694 9.84103 16.6655 9.84103 16.26C9.85653 16.042 9.85653 15.8233 9.84103 15.6053C9.7652 15.0791 9.94009 14.7231 10.392 14.4322ZM10.2852 18.8075C11.5342 18.5397 12.7785 18.2534 14.0198 17.9578C14.2922 17.8944 14.4268 17.9578 14.5383 18.2178C14.7751 18.7564 15.0366 19.2842 15.2997 19.8088C15.3347 19.8684 15.3531 19.9363 15.3531 20.0054C15.3531 20.0745 15.3347 20.1424 15.2997 20.202C15.0165 20.7669 14.7364 21.3333 14.4764 21.9044C14.3928 22.0901 14.2937 22.1072 14.1219 22.0669C12.7703 21.7574 11.4192 21.4509 10.0685 21.1476C9.90294 21.1104 9.82865 21.0393 9.83639 20.8597C9.85032 20.5657 9.83639 20.2701 9.83639 19.9744C9.85326 19.7684 9.85326 19.5614 9.83639 19.3554C9.77603 18.9808 9.95866 18.8725 10.2852 18.8028V18.8075ZM9.84103 22.539C9.84103 22.3223 9.8983 22.2867 10.1026 22.3347C11.2804 22.6102 12.4613 22.8733 13.6422 23.141C13.7691 23.1689 13.8635 23.1874 13.7722 23.3732C13.2011 24.5339 12.6454 25.6947 12.0697 26.9004C11.3562 26.3339 10.6768 25.7938 10.0051 25.2644C9.95072 25.2214 9.90806 25.1654 9.88101 25.1016C9.85396 25.0378 9.84341 24.9682 9.85032 24.8992C9.84722 24.1083 9.85187 23.3205 9.84103 22.5343V22.539ZM9.87353 26.6403L11.4599 27.8971C11.5714 27.9853 11.5002 28.0689 11.4599 28.1571L9.87353 31.4444V26.6403ZM11.0003 31.9211L10.9492 31.8855C11.1039 31.5512 11.2726 31.2153 11.4336 30.8795C11.7431 30.2217 12.0713 29.5639 12.3839 28.9031C12.4473 28.7684 12.4953 28.7065 12.6377 28.8241C12.9999 29.1244 13.3698 29.4138 13.7598 29.7264L11.0003 31.9211ZM11.7168 32.8992L11.6952 32.8543L14.5832 30.556C14.6435 30.508 14.693 30.4693 14.7782 30.539C15.3013 30.963 15.8306 31.3809 16.4001 31.8359L11.7168 32.8992ZM11.8608 34.0522C13.3032 33.7226 14.6466 33.413 16.0055 33.1066C16.4203 33.0122 16.8397 32.9363 17.2436 32.8218C17.3398 32.7889 17.4431 32.7829 17.5424 32.8044C17.6416 32.826 17.7332 32.8743 17.807 32.9441C19.1349 34.0151 20.4706 35.0753 21.8031 36.1401C21.8727 36.1914 21.9202 36.2671 21.9362 36.3521L11.8608 34.0522ZM19.0142 32.4225C19.7091 32.2677 20.3251 32.1284 20.9364 31.9814C20.9661 31.9687 20.9982 31.9625 21.0305 31.9631C21.0628 31.9636 21.0946 31.971 21.1238 31.9848C21.153 31.9985 21.179 32.0183 21.2001 32.0428C21.2211 32.0673 21.2368 32.0959 21.246 32.1269C21.7598 33.2103 22.2814 34.2828 22.7565 35.4065L19.0142 32.4225ZM23.8507 34.8725L22.303 31.6765C22.7844 31.5635 23.2224 31.4707 23.6542 31.3546C23.8693 31.2958 23.9173 31.3546 23.9157 31.5651C23.9126 32.6624 23.9157 33.7535 23.8507 34.8771V34.8725ZM35.0127 14.3734L32.9418 18.6682C32.6323 18.0166 32.3475 17.43 32.0612 16.845C32.0475 16.8252 32.0381 16.8027 32.0337 16.7791C32.0293 16.7554 32.03 16.731 32.0357 16.7076C32.0414 16.6842 32.052 16.6623 32.0668 16.6433C32.0816 16.6243 32.1003 16.6086 32.1216 16.5974C33.0688 15.8452 34.0128 15.0899 35.0127 14.3734ZM30.7612 25.8572L31.3802 24.5804C31.4251 24.4906 31.4514 24.3575 31.6062 24.4813C32.4713 25.1747 33.3396 25.865 34.1769 26.6311L30.7612 25.8572ZM33.9865 27.8305L29.2939 28.8969C29.6035 28.2437 29.8991 27.6494 30.1823 27.052C30.1886 27.0314 30.1992 27.0123 30.2134 26.996C30.2275 26.9797 30.2449 26.9665 30.2644 26.9574C30.284 26.9482 30.3052 26.9432 30.3268 26.9427C30.3483 26.9422 30.3698 26.9462 30.3897 26.9545C31.5582 27.2238 32.7298 27.4885 33.8999 27.7578C33.9293 27.764 33.9478 27.798 33.9865 27.8305ZM31.1744 22.3486C31.0924 22.5204 31.0366 22.5513 30.8741 22.4213C29.9239 21.6475 28.9643 20.8938 28.0047 20.137C27.8778 20.0364 27.8639 19.9822 28.0047 19.8754C28.9756 19.1129 29.9419 18.3447 30.9035 17.5709C31.0351 17.4641 31.0924 17.4796 31.162 17.6281C31.5133 18.3664 31.8724 19.1 32.2268 19.8352C32.25 19.8847 32.2671 19.9373 32.2918 20.0008C32.264 20.0704 32.2346 20.1555 32.1974 20.2283C31.8538 20.9325 31.5071 21.6382 31.1744 22.3486ZM34.2295 13.3627C34.1134 13.5298 33.9643 13.6715 33.7915 13.779C33.0935 14.344 32.3847 14.8949 31.6898 15.4645C31.5071 15.6192 31.4359 15.5806 31.3477 15.3809C31.1682 14.9739 30.9685 14.5746 30.7673 14.1505L34.2295 13.3627ZM30.4872 13.0392C30.2953 13.0857 30.2179 13.0392 30.1405 12.8845C29.8774 12.3134 29.5988 11.75 29.2986 11.1248L33.9819 12.1911C33.8271 12.3366 33.646 12.3196 33.4835 12.3583C32.4853 12.5749 31.4839 12.7932 30.4872 13.0392ZM26.2249 4.5997L34.2388 10.987L34.2249 11.0458L31.7362 10.484C30.8076 10.2735 29.879 10.0615 28.9504 9.8541C28.8556 9.84201 28.7656 9.80577 28.6889 9.74885C28.6122 9.69194 28.5514 9.61626 28.5124 9.52909C27.7571 7.93342 26.9848 6.34549 26.2171 4.75601C26.2064 4.73109 26.2016 4.70405 26.2029 4.67696C26.2042 4.64987 26.2118 4.62344 26.2249 4.5997ZM25.1167 5.11353L27.203 9.43777C26.4802 9.28301 25.824 9.12824 25.1678 8.98275C25.0362 8.95335 25.0641 8.82798 25.0641 8.73977C25.0626 7.53876 25.0626 6.3362 25.1167 5.11353ZM25.3086 10.1915C26.1057 10.3803 26.9043 10.5598 27.7029 10.7378C27.7605 10.7529 27.8134 10.7822 27.8566 10.823C27.8999 10.8638 27.9322 10.9149 27.9505 10.9715C28.2926 11.6881 28.6346 12.4078 28.9844 13.1213C29.0633 13.276 29.0726 13.3581 28.8652 13.4045C27.6611 13.6676 26.4591 13.9395 25.2591 14.2201C25.0811 14.2619 25.0595 14.2201 25.061 14.0654C25.061 13.4463 25.061 12.8272 25.061 12.1973C25.061 11.6076 25.061 11.018 25.061 10.4283C25.0548 10.224 25.0904 10.1389 25.3086 10.1915ZM25.0595 15.6703C25.0595 15.5156 25.1013 15.4397 25.2607 15.4041C26.6458 15.0946 28.0295 14.785 29.4131 14.4662L29.5106 14.4507C29.6282 14.4322 29.6499 14.5204 29.6886 14.6055C29.9424 15.1364 30.1947 15.6688 30.4624 16.1934C30.5383 16.3482 30.5073 16.4132 30.3789 16.5138C29.2893 17.3743 28.2059 18.2405 27.1287 19.1124C26.9554 19.2532 26.8563 19.2393 26.6923 19.1015C26.228 18.7146 25.7559 18.3478 25.2792 17.981C25.2078 17.9339 25.1501 17.8687 25.112 17.792C25.074 17.7154 25.0569 17.63 25.0626 17.5446C25.0718 16.9085 25.0688 16.2894 25.0595 15.6703ZM25.9788 20.0039L25.0688 20.7313V19.2935L25.9788 20.0039ZM25.9927 21.468C26.2566 21.293 26.5065 21.0979 26.7403 20.8845C26.7594 20.8593 26.784 20.8388 26.8121 20.8244C26.8403 20.81 26.8713 20.802 26.9029 20.8011C26.9345 20.8002 26.9659 20.8064 26.9948 20.8193C27.0237 20.8321 27.0494 20.8512 27.0699 20.8752C28.1667 21.7574 29.2692 22.6344 30.3773 23.5063C30.4056 23.5209 30.4305 23.5413 30.4503 23.5663C30.4701 23.5913 30.4843 23.6201 30.4921 23.651C30.4998 23.6819 30.5009 23.7141 30.4953 23.7455C30.4896 23.7768 30.4774 23.8066 30.4594 23.8328C30.1962 24.359 29.9347 24.8868 29.6855 25.4208C29.6112 25.5755 29.5122 25.5848 29.376 25.5523C28.015 25.2428 26.6536 24.9332 25.2916 24.6237C25.2548 24.6217 25.2188 24.6117 25.1863 24.5943C25.1537 24.577 25.1254 24.5527 25.1033 24.5232C25.0811 24.4936 25.0657 24.4596 25.0582 24.4235C25.0506 24.3874 25.051 24.3501 25.0595 24.3142C25.078 24.0046 25.0595 23.6812 25.0595 23.2076C24.7979 22.4415 25.2839 21.906 25.9927 21.4618V21.468ZM25.0641 25.7489L29.0881 26.6667C28.6919 27.4885 28.3143 28.2701 27.9397 29.0594C27.9108 29.1222 27.8664 29.1766 27.8106 29.2175C27.7548 29.2584 27.6895 29.2844 27.6209 29.2931C26.8656 29.4664 26.1088 29.6305 25.3566 29.8116C25.1307 29.8657 25.0579 29.8255 25.061 29.5748C25.0703 28.3041 25.0626 27.0381 25.0626 25.7427L25.0641 25.7489ZM25.0641 34.8802V32.6361C25.0641 32.1718 25.0641 31.7183 25.0641 31.2602C25.0641 31.1488 25.0548 31.0466 25.208 31.0141C25.8472 30.8779 26.4833 30.734 27.1999 30.5746C26.4864 32.0557 25.807 33.4734 25.1198 34.8926L25.0641 34.8802ZM26.228 35.4095L26.1784 35.3709C26.4214 34.8632 26.6613 34.354 26.9074 33.8479C27.4568 32.7088 28.0109 31.5728 28.5557 30.4322C28.5821 30.3679 28.6243 30.3113 28.6784 30.2678C28.7325 30.2242 28.7968 30.195 28.8652 30.183L34.1661 28.9804C34.2052 28.9808 34.2441 28.9855 34.2821 28.9944L26.228 35.4095ZM34.96 25.6808C34.0128 24.9255 33.0657 24.1702 32.1185 23.415C32.0976 23.403 32.0795 23.3868 32.0653 23.3674C32.0511 23.348 32.0411 23.3259 32.036 23.3024C32.0309 23.2789 32.0308 23.2546 32.0357 23.2311C32.0405 23.2076 32.0503 23.1853 32.0643 23.1658C32.3506 22.5823 32.6292 21.9957 32.9418 21.3457L35.0127 25.6204L34.96 25.6808ZM36.1007 25.2165C35.2587 23.4738 34.4601 21.8116 33.6584 20.1586C33.6324 20.1176 33.6174 20.0706 33.6147 20.0221C33.612 19.9736 33.6217 19.9252 33.6429 19.8816C34.4493 18.2147 35.2541 16.5479 36.1007 14.7959V25.2165Z\",\n fill: \"#43AF2A\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.6714 19.264C96.5011 17.5615 95.7706 16.2011 94.3359 15.2477C93.3624 14.6008 92.2604 14.3965 91.1151 14.4089C90.1252 14.3903 89.1501 14.651 88.3014 15.1611C87.6697 15.5573 87.1175 16.068 86.6733 16.667C86.6733 16.1531 86.6733 15.6378 86.6733 15.1193C86.6733 14.7416 86.4659 14.5559 86.0975 14.559C85.6859 14.559 85.5357 14.7494 85.5342 15.2632C85.5342 19.8031 85.5342 24.343 85.5342 28.8829C85.5342 28.9711 85.5342 29.0578 85.5419 29.1444C85.5442 29.2677 85.5936 29.3855 85.6799 29.4736C85.7662 29.5616 85.883 29.6133 86.0062 29.618C86.4349 29.683 86.6779 29.4633 86.6795 28.999C86.6795 27.2263 86.6795 25.4537 86.6795 23.6811C86.6578 23.5613 86.6729 23.4377 86.7228 23.3267C87.3499 24.3148 88.312 25.0439 89.4328 25.3805C90.3599 25.6611 91.341 25.7142 92.2929 25.5352C94.1192 25.2009 95.5121 24.2491 96.2442 22.4971C96.6558 21.4724 96.8027 20.3605 96.6714 19.264ZM94.0155 23.5418C93.1844 24.2584 92.1846 24.5308 90.9697 24.5153C88.2535 24.5447 86.3622 22.2557 86.7197 19.3692C86.9194 17.7534 87.7102 16.5261 89.2363 15.8807C91.7126 14.833 95.1175 15.8684 95.4936 19.4017C95.6623 21.0113 95.2831 22.446 94.0155 23.5418Z\",\n fill: \"currentColor\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.827 15.5927C112.156 14.3097 110.254 14.0899 108.288 14.7013C106.613 15.2213 105.46 16.3511 104.911 18.052C104.628 18.9844 104.55 19.9669 104.682 20.9323C104.837 22.3252 105.436 23.5169 106.539 24.3573C108.526 25.871 110.726 25.9716 112.994 25.0553C113.723 24.742 114.364 24.2553 114.861 23.6376C114.95 23.5392 115.004 23.4142 115.015 23.2818C115.026 23.1495 114.993 23.0172 114.921 22.9056C114.791 22.6641 114.564 22.6363 114.325 22.6579C114.087 22.6796 113.994 22.8545 113.861 23.0015C113.468 23.46 112.983 23.8311 112.438 24.0907C111.892 24.3503 111.298 24.4928 110.695 24.509C108.005 24.6328 106.24 23.2399 105.843 20.714C105.802 20.454 105.88 20.4262 106.101 20.4277C107.581 20.4277 109.06 20.4277 110.538 20.4277H114.781C114.901 20.4311 115.021 20.4259 115.141 20.4122C115.528 20.3534 115.735 20.1414 115.735 19.7529C115.739 18.0783 115.183 16.6312 113.827 15.5927ZM114.321 19.3753C112.964 19.366 111.606 19.3753 110.25 19.3753H106.206C105.83 19.3753 105.819 19.3629 105.897 18.9868C106.428 16.4471 108.491 15.2584 110.849 15.5463C112.914 15.7986 114.163 17.0398 114.587 19.0719C114.647 19.3412 114.564 19.3846 114.321 19.3753Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSimplex);\nexport default __webpack_public_path__ + \"static/media/simplex.2a0cdd74.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgRamp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 138,\n height: 32,\n viewBox: \"0 0 138 32\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.4432 18.8309L28.3844 24.912C27.8711 25.4272 27.8716 26.2647 28.3854 26.7792L33.0154 31.4158C33.8045 32.1947 35.0945 32.1947 35.8836 31.4158L50.0746 17.4093C50.8637 16.6305 50.8637 15.3571 50.0746 14.5783L35.8836 0.584122C35.0945 -0.194707 33.8045 -0.194707 33.0154 0.584122L28.3854 5.22078C27.8716 5.73535 27.8711 6.57281 28.3844 7.08795L34.4432 13.1691C36.0214 14.7267 36.0214 17.2733 34.4432 18.8309Z\",\n fill: \"#0A6E5C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.2232 18.8309L22.282 24.912C22.7953 25.4272 22.7948 26.2647 22.281 26.7792L17.651 31.4158C16.8619 32.1947 15.5719 32.1947 14.7828 31.4158L0.591812 17.4093C-0.197271 16.6305 -0.197271 15.3571 0.591812 14.5783L14.7828 0.584122C15.5719 -0.194707 16.8619 -0.194707 17.651 0.584122L22.281 5.22078C22.7948 5.73535 22.7953 6.57281 22.282 7.08795L16.2232 13.1691C14.645 14.7267 14.645 17.2733 16.2232 18.8309Z\",\n fill: \"#21BF73\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8114 17.157C17.1723 16.518 17.1723 15.482 17.8114 14.843L24.1751 8.47926C24.8141 7.84025 25.8501 7.84025 26.4891 8.47926L32.8528 14.843C33.4918 15.482 33.4918 16.518 32.8528 17.157L26.4891 23.5207C25.8501 24.1598 24.8141 24.1598 24.1751 23.5207L17.8114 17.157Z\",\n fill: \"#21BF73\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.8036 25.6003H73.2814L70.7874 19.0761C70.5864 18.5622 70.2758 18.2043 69.8555 18.0025C69.4536 17.8006 68.942 17.6996 68.3208 17.6996H65.5527V25.6003H61.332V6H70.02C72.2856 6 74.0031 6.49551 75.1725 7.48654C76.3418 8.47757 76.9265 9.89988 76.9265 11.7535C76.9265 13.0565 76.5794 14.176 75.8851 15.112C75.209 16.0479 74.2315 16.7178 72.9525 17.1215C74.1036 17.3601 74.935 18.1585 75.4466 19.5165L77.8036 25.6003ZM69.3896 14.4237C70.6138 14.4237 71.5091 14.2219 72.0755 13.8181C72.6419 13.396 72.9251 12.7445 72.9251 11.8636C72.9251 10.9827 72.6419 10.3403 72.0755 9.93659C71.5091 9.51448 70.6138 9.30343 69.3896 9.30343H65.4978V14.4237H69.3896Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.3851 11.6435V25.6004H90.3015V23.5358C89.8813 24.2515 89.2875 24.8113 88.5201 25.215C87.7527 25.6188 86.8848 25.8207 85.9164 25.8207C84.7105 25.8207 83.6416 25.527 82.7098 24.9398C81.7962 24.3525 81.0745 23.5174 80.5447 22.4347C80.0331 21.3335 79.7773 20.0672 79.7773 18.6357C79.7773 17.2042 80.0331 15.9287 80.5447 14.8092C81.0745 13.6897 81.8054 12.8272 82.7372 12.2216C83.669 11.5976 84.7288 11.2856 85.9164 11.2856C86.8848 11.2856 87.7527 11.4966 88.5201 11.9187C89.2875 12.3408 89.8813 12.9098 90.3015 13.6255V11.6435H94.3851ZM87.1223 22.6549C88.1455 22.6549 88.9312 22.3062 89.4793 21.6088C90.0274 20.9114 90.3015 19.902 90.3015 18.5807C90.3015 17.2593 90.0274 16.2499 89.4793 15.5525C88.9312 14.8368 88.1455 14.4789 87.1223 14.4789C86.0991 14.4789 85.3043 14.8459 84.7379 15.58C84.1715 16.3141 83.8883 17.3327 83.8883 18.6357C83.8883 19.9387 84.1624 20.9389 84.7105 21.6363C85.2769 22.3154 86.0809 22.6549 87.1223 22.6549Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.719 11.2854C116.309 11.2854 117.487 11.7717 118.255 12.7444C119.04 13.6987 119.433 15.1669 119.433 17.149V25.6002H115.295V17.2866C115.295 16.3139 115.139 15.6165 114.829 15.1944C114.518 14.754 114.007 14.5338 113.294 14.5338C112.454 14.5338 111.805 14.8274 111.348 15.4147C110.891 16.0019 110.663 16.8278 110.663 17.8922V25.6002H106.524V17.2866C106.524 16.3323 106.36 15.6349 106.031 15.1944C105.721 14.754 105.218 14.5338 104.524 14.5338C103.683 14.5338 103.026 14.8274 102.55 15.4147C102.094 16.0019 101.865 16.8278 101.865 17.8922V25.6002H97.7269V15.6349C97.7269 14.1484 97.6538 12.8178 97.5076 11.6433H101.399L101.646 13.7354C102.066 12.9463 102.651 12.3406 103.4 11.9185C104.167 11.4964 105.045 11.2854 106.031 11.2854C108.096 11.2854 109.466 12.1479 110.142 13.8731C110.599 13.0839 111.229 12.4599 112.033 12.0011C112.855 11.524 113.751 11.2854 114.719 11.2854Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.195 11.2856C132.383 11.2856 133.443 11.5976 134.375 12.2216C135.306 12.8272 136.028 13.6897 136.54 14.8092C137.07 15.9287 137.334 17.2042 137.334 18.6357C137.334 20.0672 137.079 21.3335 136.567 22.4347C136.056 23.5174 135.334 24.3525 134.402 24.9398C133.47 25.527 132.401 25.8207 131.195 25.8207C130.227 25.8207 129.359 25.6188 128.592 25.215C127.824 24.8113 127.24 24.2515 126.838 23.5358V32.0001H122.699V15.6351C122.699 14.1486 122.626 12.818 122.48 11.6435H126.372L126.646 13.9559C127.011 13.13 127.596 12.4785 128.4 12.0013C129.222 11.5242 130.154 11.2856 131.195 11.2856ZM130.017 22.6549C131.04 22.6549 131.826 22.3154 132.374 21.6363C132.922 20.9389 133.196 19.9387 133.196 18.6357C133.196 17.3327 132.913 16.3141 132.346 15.58C131.798 14.8459 131.022 14.4789 130.017 14.4789C128.994 14.4789 128.199 14.8368 127.632 15.5525C127.084 16.2499 126.81 17.2593 126.81 18.5807C126.81 19.902 127.084 20.9114 127.632 21.6088C128.199 22.3062 128.994 22.6549 130.017 22.6549Z\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 138,\n height: 32,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRamp);\nexport default __webpack_public_path__ + \"static/media/ramp.d24dd520.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMercuryo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 178,\n height: 34,\n viewBox: \"0 0 178 34\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.1509 32.8009C11.8331 32.8009 7.78638 31.1014 4.73324 28.0132C1.68012 24.9248 0 20.8315 0 16.464C0 12.0966 1.68012 8.00323 4.73324 4.91495C7.78638 1.82666 11.8331 0.127197 16.1509 0.127197C20.4686 0.127197 24.5154 1.82666 27.5685 4.91495C30.6216 8.00323 32.3017 12.0966 32.3017 16.464C32.3017 20.8315 30.6216 24.9248 27.5685 28.0132C24.5154 31.1014 20.4686 32.8009 16.1509 32.8009Z\",\n fill: \"black\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.586 32.8923H22.8729C22.8729 29.9867 26.0706 25.8202 26.0706 19.5523C26.0706 14.2164 25.2034 11.3291 24.6615 9.97683C24.2279 8.86212 23.722 8.22253 22.638 8.22253C21.5541 8.22253 20.5063 8.64285 20.2172 11.1098C19.3681 18.4376 16.1344 22.6772 16.586 32.8923Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.6291 32.8923H9.34217C9.34217 29.9868 6.14453 25.8203 6.14453 19.5525C6.14453 14.2165 7.01168 11.3292 7.55365 9.97693C7.98723 8.86224 8.49307 8.22266 9.57703 8.22266C10.661 8.22266 11.7088 8.64295 11.9978 11.1099C12.8289 18.4378 16.0627 22.6773 15.6291 32.8923Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.074 33.0568H16.4618V32.8923C16.1909 26.5146 17.3471 22.4578 18.4491 18.529C19.1356 16.1169 19.7859 13.8326 20.1111 11.0733C20.2556 9.90373 20.5628 9.09967 21.0687 8.60629C21.4661 8.22255 21.9901 8.03979 22.6945 8.03979C23.8869 8.03979 24.4288 8.78902 24.8624 9.90373C25.7838 12.2428 26.2716 15.5869 26.2716 19.534C26.2716 23.2984 25.1335 26.3137 24.2121 28.7258C23.5978 30.3339 23.074 31.7226 23.074 32.874V33.0568ZM16.787 32.7279H22.7488C22.803 31.5582 23.3088 30.1878 23.905 28.6344C24.8083 26.2406 25.9464 23.2619 25.9464 19.5523C25.9464 15.6417 25.4586 12.3524 24.5554 10.0499C24.0855 8.84385 23.5799 8.40528 22.6945 8.40528C21.7371 8.40528 20.7254 8.73421 20.4363 11.1463C20.1111 13.9422 19.4608 16.2265 18.7742 18.657C17.6903 22.4944 16.5522 26.4782 16.787 32.7279Z\",\n fill: \"black\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.8332 33.0568H9.22109V32.8923C9.22109 31.741 8.69718 30.3522 8.08295 28.7441C7.16158 26.332 6.02344 23.3167 6.02344 19.5523C6.02344 15.5869 6.51121 12.2611 7.43258 9.92203C7.86616 8.80733 8.40813 8.05811 9.60046 8.05811C10.305 8.05811 10.8109 8.24084 11.2264 8.62458C11.7322 9.11799 12.0574 9.92203 12.1839 11.0915C12.5091 13.8509 13.1594 16.1351 13.8459 18.5473C14.966 22.4761 16.1042 26.5146 15.8332 32.9105V33.0568ZM9.56435 32.7279H15.5261C15.779 26.4965 14.6408 22.4944 13.5388 18.6387C12.8523 16.2082 12.202 13.924 11.8768 11.1281C11.6058 8.71597 10.576 8.38704 9.61853 8.38704C8.7333 8.38704 8.22746 8.82561 7.75776 10.0317C6.85446 12.3342 6.36669 15.6235 6.36669 19.534C6.36669 23.2253 7.50483 26.2223 8.40812 28.6161C9.0043 30.1878 9.51014 31.54 9.56435 32.7279Z\",\n fill: \"black\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.1649 32.9654H16.0023C14.6293 32.9654 13.4912 32.216 12.6963 30.7907C11.9917 29.5481 11.5762 27.8305 11.4678 25.8202C11.251 21.9461 10.8355 14.5636 10.5645 11.256C10.4562 9.7941 9.98643 9.66618 9.57092 9.66618C9.08315 9.66618 8.77603 10.0682 8.48697 11.1098C8.23406 12.0418 7.34882 16.4092 7.71015 20.868C7.92694 23.5909 8.79408 25.8751 9.57092 27.8852C10.2755 29.7309 10.8717 31.3207 10.8717 32.874H10.5465C10.5465 31.3754 9.95031 29.8223 9.2638 28.0131C8.48697 25.9665 7.60175 23.6639 7.38496 20.8863C7.02364 16.391 7.92694 11.9504 8.17985 11.0185C8.41471 10.1413 8.75796 9.31897 9.57092 9.31897C10.3839 9.31897 10.7813 9.88546 10.8897 11.2012C11.1426 14.5087 11.5762 21.9097 11.793 25.7837C11.9014 27.7391 12.3169 29.402 12.9854 30.6081C13.7261 31.942 14.7558 32.6182 16.0023 32.6182H16.1649C16.8153 32.6182 17.4115 32.4354 17.9354 32.0882C18.4413 31.7593 18.8747 31.2476 19.2542 30.6081C19.9587 29.402 20.3923 27.7025 20.5008 25.7837C20.7175 21.9097 21.133 14.5087 21.404 11.2012C21.5125 9.86719 21.9099 9.31897 22.7228 9.31897C23.5357 9.31897 23.879 10.123 24.1138 11.0185C24.3667 11.9504 25.2702 16.391 24.9088 20.8863C24.6921 23.6456 23.8068 25.9846 23.03 28.0314C22.3435 29.8587 21.7473 31.4304 21.7473 32.9288H21.4221C21.4221 31.3754 22.0363 29.7675 22.7228 27.9217C23.4816 25.8934 24.3667 23.5909 24.5836 20.868C24.945 16.4275 24.0597 12.0418 23.8068 11.1098C23.5178 10.0682 23.2106 9.66618 22.7228 9.66618C22.3073 9.66618 21.8557 9.7941 21.7292 11.256C21.4763 14.5636 21.0426 21.9461 20.8259 25.8202C20.7175 27.8122 20.2659 29.5298 19.5432 30.7907C18.6942 32.1979 17.5379 32.9654 16.1649 32.9654Z\",\n fill: \"black\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.6273 8.25912V8.49668C17.1459 8.82561 16.5678 9.3921 16.2426 10.9454H15.9535C15.6283 9.37383 15.1044 8.82561 13.5508 8.49668V8.25912C15.0864 7.93018 15.6103 7.36371 15.9535 5.81042H16.2426C16.5858 7.38199 17.1639 7.93018 18.6273 8.25912Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.1509 32.8009C11.8331 32.8009 7.78638 31.1014 4.73324 28.0132C1.68012 24.9248 0 20.8315 0 16.464C0 12.0966 1.68012 8.00323 4.73324 4.91495C7.78638 1.82666 11.8331 0.127197 16.1509 0.127197C20.4686 0.127197 24.5154 1.82666 27.5685 4.91495C30.6216 8.00323 32.3017 12.0966 32.3017 16.464C32.3017 20.8315 30.6216 24.9248 27.5685 28.0132C24.5154 31.1014 20.4686 32.8009 16.1509 32.8009ZM16.1509 0.529225C7.46119 0.529225 0.397447 7.67429 0.397447 16.464C0.397447 25.2537 7.46119 32.3987 16.1509 32.3987C24.8406 32.3987 31.9043 25.2537 31.9043 16.464C31.9043 7.69257 24.8406 0.529225 16.1509 0.529225Z\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M171.013 11.3336C167.192 11.3336 164.094 14.4674 164.094 18.3324C164.094 22.1974 167.192 25.3311 171.013 25.3311C174.834 25.3311 177.932 22.1974 177.932 18.3324C177.932 14.4674 174.834 11.3336 171.013 11.3336ZM171.013 23.4178C168.235 23.4178 165.985 21.1399 165.985 18.3324C165.985 15.523 168.237 13.2469 171.013 13.2469C173.79 13.2469 176.04 15.5248 176.04 18.3324C176.04 21.1418 173.788 23.4178 171.013 23.4178Z\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M93.2699 11.3336C91.3188 11.3336 89.8421 12.8968 89.4145 14.1705V11.8816H83.675V13.8003H87.534V22.9506L83.6641 22.956V24.8583L94.1922 24.8528V22.9506H89.4145V17.1485C89.4145 16.278 90.1574 13.1259 92.73 13.1259C93.5164 13.1259 94.2356 13.3367 94.7031 13.8883C94.5201 14.1375 94.4114 14.4454 94.4114 14.7789C94.4114 15.6091 95.0763 16.2799 95.8951 16.2799C96.7774 16.2799 97.35 15.5523 97.35 14.6708C97.3537 13.2212 95.7322 11.3336 93.2699 11.3336Z\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.274 11.3281C140.323 11.3281 138.846 12.884 138.418 14.1577V11.8852L132.679 11.8816V13.8021H136.538V22.9377L132.668 22.9431V24.8455L143.196 24.8399V22.9377H138.418V17.1375C138.418 16.267 139.161 13.1149 141.734 13.1149C142.52 13.1149 143.24 13.3257 143.707 13.8773C143.524 14.1265 143.415 14.4344 143.415 14.7679C143.415 15.5981 144.08 16.2688 144.899 16.2688C145.781 16.2688 146.354 15.5413 146.354 14.6598C146.358 13.2084 144.736 11.3281 142.274 11.3281Z\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.964 17.4563C111.785 17.4563 112.448 16.7838 112.448 15.9554C112.448 15.8913 112.442 15.8271 112.435 15.7648C112.247 14.0349 109.561 11.3629 106.145 11.3629C102.275 11.3629 99.1367 14.504 99.1367 18.3763C99.1367 22.2487 102.275 25.3897 106.145 25.3897C108.824 25.3897 111.15 23.8833 112.328 21.6714L110.813 20.6359C109.886 22.3127 108.161 23.4746 106.143 23.4746C103.331 23.4746 101.126 21.1931 101.126 18.3781C101.126 15.5633 103.331 13.2816 106.143 13.2816C107.703 13.2816 109.018 13.8846 109.891 14.9163C109.634 15.1857 109.476 15.5523 109.476 15.9573C109.48 16.7838 110.145 17.4563 110.964 17.4563Z\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M157.506 13.804H159.063L155.7 22.617L152.03 13.8058H153.624V11.8834H148.102V13.804H150.013L154.722 25.1882L152.124 32.0036H154.137L161.074 13.8058H163.029V11.8834H157.506V13.804Z\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5666 16.8424C63.5666 13.4393 61.32 11.3318 58.5696 11.3318C56.41 11.3318 54.6092 12.9097 53.8192 14.5205C53.0511 12.5211 51.281 11.3318 49.2283 11.3318C47.1755 11.3318 45.42 12.8858 44.8728 14.1613V11.8779L40.9648 11.8852V13.804H42.9922V24.84H44.8728V17.1173C44.8728 16.2285 45.9273 13.0819 48.9548 13.0819C50.3897 13.0819 52.3445 14.3941 52.3445 17.0807C52.3445 18.4369 52.3445 24.8418 52.3445 24.8418H54.225C54.225 24.8418 54.225 17.2163 54.225 17.0807C54.225 16.1919 55.1618 13.0819 58.2979 13.0819C59.7328 13.0819 61.6878 14.2658 61.6878 16.9506C61.6878 18.3067 61.6878 24.8418 61.6878 24.8418H65.592V22.9524H63.5683L63.5666 16.8424Z\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.5976 11.3263C70.7675 11.3263 67.6641 14.4124 67.6641 18.2865C67.6641 18.4149 67.6931 18.928 67.7003 19.0067C68.05 22.5529 71.0375 25.3257 74.6718 25.3257C77.3515 25.3257 79.6777 23.8193 80.8554 21.6072L79.3407 20.5718C78.4133 22.2487 76.6885 23.4106 74.6701 23.4106C72.0902 23.4106 69.9395 21.488 69.6152 18.9958L81.2322 19.0031C81.2559 18.7684 81.2684 18.5284 81.2684 18.2883C81.2702 14.4124 78.4276 11.3263 74.5976 11.3263ZM69.6841 17.0917C70.2168 14.8394 72.2187 13.1644 74.6086 13.1644C76.9982 13.1644 78.7393 14.8394 79.2719 17.0917H69.6841Z\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.786 11.8834H125.905L125.907 19.5639C125.907 21.3122 124.103 23.6708 121.813 23.6708C120.378 23.6708 118.436 22.2964 118.436 19.8004C118.436 18.4441 118.436 11.8834 118.436 11.8834L114.531 11.8871V13.7985H116.555V19.9084C116.555 23.3116 118.796 25.3239 121.546 25.3239C123.494 25.3239 125 24.1089 125.907 22.8351V24.8564L129.815 24.8492V22.947H127.788L127.786 11.8834Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMercuryo);\nexport default __webpack_public_path__ + \"static/media/mercuryo.98a506e9.svg\";\nexport { ForwardRef as ReactComponent };","import { DepositMethods, FiatBox, Operations } from 'elements/fiat/FiatBox';\nimport { ReactComponent as moonPayLogo } from 'assets/logos/moonpay.svg';\nimport { ReactComponent as banxaLogo } from 'assets/logos/banxa.svg';\nimport { ReactComponent as simplexLogo } from 'assets/logos/simplex.svg';\nimport { ReactComponent as rampLogo } from 'assets/logos/ramp.svg';\nimport { ReactComponent as mercuryoLogo } from 'assets/logos/mercuryo.svg';\nimport { ReactComponent as IconInfo } from 'assets/icons/info.svg';\n\nconst fiats = [\n {\n name: 'MoonPay',\n text: 'MoonPay is a financial technology company that builds payments infrastructure for crypto. Our on-and-off-ramp suite of products provides a seamless experience for converting between fiat currencies and cryptocurrencies using all major payment methods.',\n logo: moonPayLogo,\n operations: [Operations.fiatIn, Operations.fiatOut],\n depositMethods: [\n DepositMethods.wire,\n DepositMethods.creditCard,\n DepositMethods.debitCard,\n DepositMethods.samsungPay,\n DepositMethods.googlePay,\n DepositMethods.applePay,\n ],\n buyUrl:\n 'https://buy.moonpay.com/?apiKey=pk_live_qiJRayRj9iKRUWCfaWX5Vo6Sn0rnNsj&defaultCurrencyCode=ETH',\n sellUrl:\n 'https://sell.moonpay.com/?apiKey=pk_live_qiJRayRj9iKRUWCfaWX5Vo6Sn0rnNsj&defaultCurrencyCode=ETH',\n },\n {\n name: 'Banxa',\n text: 'Banxa is a globally operating fiat-to-crypto on-ramp providing the easiest way for anyone looking to enter the digital asset ecosystem. Banxa users can choose from a variety of the most popular and convenient payment methods.',\n logo: banxaLogo,\n operations: [Operations.fiatIn],\n depositMethods: [\n DepositMethods.creditCard,\n DepositMethods.debitCard,\n DepositMethods.applePay,\n DepositMethods.ideal,\n DepositMethods.interac,\n DepositMethods.sepa,\n ],\n buyUrl: 'https://pay.banxa.com',\n },\n {\n name: 'Simplex',\n text: 'Simplex is the industry leader, providing global on/off ramps to the entire fiat to crypto ecosystem. Working with a vast network of partners, Simplex ensures that crypto is safe and accessible to all.',\n logo: simplexLogo,\n operations: [Operations.fiatIn, Operations.fiatOut],\n depositMethods: [\n DepositMethods.wire,\n DepositMethods.creditCard,\n DepositMethods.debitCard,\n DepositMethods.applePay,\n ],\n buyUrl: 'https://b.buy-crypto-with-simplex.com/?crypto=ETH',\n sellUrl:\n 'https://www.simplex.com/account/sell?ref=b1990d7be52dfae9fa894a0d56317f28',\n },\n {\n name: 'Ramp',\n text: 'Ramp Network provides the ultimate crypto on-boarding flow. This globally accessible product focuses on excellent UX, supports multiple payment options and ensures lowest slippage and transactional fees.',\n logo: rampLogo,\n operations: [Operations.fiatIn],\n depositMethods: [\n DepositMethods.openBanking,\n DepositMethods.sepaInstant,\n DepositMethods.fasterPayments,\n DepositMethods.debitCard,\n DepositMethods.creditCard,\n DepositMethods.applePay,\n ],\n smallGap: true,\n buyUrl:\n 'https://buy.ramp.network/?hostApiKey=qg4s4spwnm7nahqdxfsjyzsjvtxbbzg8dxnxxrum&userAddress=0x5f7a009664b771e889751f4fd721adc439033ecd',\n },\n {\n name: 'Mercuryo',\n text: 'Mercuryo is a cross-border payment network providing global access to fast and cheap money transfers. Working together with industry leaders, Mercuryo offers a multi-currency widget that allows purchasing and selling crypto securely with the lowest fees.',\n logo: mercuryoLogo,\n operations: [Operations.fiatIn, Operations.fiatOut],\n depositMethods: [\n DepositMethods.creditCard,\n DepositMethods.debitCard,\n DepositMethods.applePay,\n DepositMethods.googlePay,\n ],\n buyUrl:\n 'https://exchange.mercuryo.io/?widget_id=d7702dc1-c8ee-4726-a5be-5f18e31849b6¤cy=ETH&type=buy',\n sellUrl:\n 'https://exchange.mercuryo.io/?widget_id=d7702dc1-c8ee-4726-a5be-5f18e31849b6¤cy=ETH&type=sell',\n },\n];\n\nexport const Fiat = () => {\n return (\n
\n
\n
\n Fiat Gateway Providers\n
\n
\n
Below is a list of popular fiat gateways.
\n It can be used to buy or sell crypto with a credit card, bank transfer\n & more.\n
\n
\n
\n
\n \n Fiat Services\n
\n
\n Fiat services on Bancor are provided by third-parties. Bancor is not\n associated with, responsible or liable for the performance of these\n third-party services. Any claims & questions should be addressed with\n the selected provider directly.\n
\n
\n {fiats.map((fiat) => (\n \n ))}\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { shrinkToken, expandToken } from 'utils/formulas';\nimport { web3, writeWeb3 } from 'services/web3';\nimport { ErrorCode } from '../types';\nimport { Governance__factory } from '../abis/types';\nimport dayjs from 'utils/dayjs';\nimport { getNetworkVariables } from 'services/web3/config';\n\nexport const getStakedAmount = async (\n user: string,\n govToken: Token\n): Promise => {\n const networkVars = getNetworkVariables();\n const govContract = Governance__factory.connect(\n networkVars.governanceContractAddress,\n web3.provider\n );\n const amount = await govContract.votesOf(user);\n return shrinkToken(amount.toString(), govToken.decimals);\n};\n\nexport const stakeAmount = async (\n amount: string,\n govToken: Token,\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: Function\n) => {\n try {\n const expandedAmount = expandToken(amount, govToken.decimals);\n\n const networkVars = getNetworkVariables();\n const govContract = Governance__factory.connect(\n networkVars.governanceContractAddress,\n writeWeb3.signer\n );\n\n const tx = await govContract.stake(expandedAmount);\n onHash(tx.hash);\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed();\n }\n};\n\nexport const unstakeAmount = async (\n amount: string,\n govToken: Token,\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: Function\n) => {\n try {\n const expandedAmount = expandToken(amount, govToken.decimals);\n\n const networkVars = getNetworkVariables();\n const govContract = Governance__factory.connect(\n networkVars.governanceContractAddress,\n writeWeb3.signer\n );\n\n const tx = await govContract.unstake(expandedAmount);\n onHash(tx.hash);\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed();\n }\n};\n\nexport const getUnstakeTimer = async (user: string) => {\n const now = dayjs().unix() * 1000;\n const networkVars = getNetworkVariables();\n const govContract = Governance__factory.connect(\n networkVars.governanceContractAddress,\n web3.provider\n );\n const locks = await govContract.voteLocks(user);\n const time = Number(locks) * 1000;\n if (time - now > 0) return time;\n\n return undefined;\n};\n","import { Modal } from 'components/modal/Modal';\nimport { SwapSwitch } from 'elements/swapSwitch/SwapSwitch';\nimport { useMemo, useState } from 'react';\nimport { Token, updateUserBalances } from 'services/observables/tokens';\nimport { wait } from 'utils/pureFunctions';\nimport {\n stakeAmount,\n unstakeAmount,\n} from 'services/web3/governance/governance';\nimport { useDispatch } from 'react-redux';\nimport { useEffect } from 'react';\nimport {\n rejectNotification,\n stakeFailedNotification,\n stakeNotification,\n unstakeFailedNotification,\n unstakeNotification,\n} from 'services/notifications/notifications';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { TokenInputPercentage } from 'components/tokenInputPercentage/TokenInputPercentage';\nimport { ApprovalContract } from 'services/web3/approval';\nimport { useAppSelector } from 'store';\nimport { Button, ButtonSize } from 'components/button/Button';\n\ninterface ModalVbntProps {\n setIsOpen: Function;\n isOpen: boolean;\n token: Token;\n stake: boolean;\n stakeBalance?: string;\n onCompleted?: Function;\n}\n\nexport const ModalVbnt = ({\n setIsOpen,\n isOpen,\n token,\n stake,\n stakeBalance,\n onCompleted,\n}: ModalVbntProps) => {\n const account = useAppSelector((state) => state.user.account);\n const [amount, setAmount] = useState('');\n const percentages = useMemo(() => [25, 50, 75, 100], []);\n const [, setSelPercentage] = useState(-1);\n const dispatch = useDispatch();\n\n const stakeDisabled = !account || !amount || Number(amount) === 0;\n\n const fieldBlance = stake\n ? token.balance\n ? token.balance\n : undefined\n : stakeBalance;\n\n useEffect(() => {\n if (amount && fieldBlance) {\n const percentage = (Number(amount) / Number(fieldBlance)) * 100;\n setSelPercentage(\n percentages.findIndex((x) => percentage.toFixed(10) === x.toFixed(10))\n );\n }\n }, [amount, token, percentages, fieldBlance]);\n\n const handleStakeUnstake = async () => {\n if (stakeDisabled || !account) return;\n\n if (stake)\n await stakeAmount(\n amount,\n token,\n (txHash: string) => stakeNotification(dispatch, amount, txHash),\n () => refreshBalances(),\n () => rejectNotification(dispatch),\n () => stakeFailedNotification(dispatch, amount)\n );\n else\n await unstakeAmount(\n amount,\n token,\n (txHash: string) => unstakeNotification(dispatch, amount, txHash),\n () => refreshBalances(),\n () => rejectNotification(dispatch),\n () => unstakeFailedNotification(dispatch, amount)\n );\n };\n\n const [checkApprove, ModalApprove] = useApproveModal(\n [{ amount: amount, token: token }],\n handleStakeUnstake,\n ApprovalContract.Governance\n );\n\n const refreshBalances = async () => {\n await wait(8000);\n await updateUserBalances();\n if (onCompleted) onCompleted();\n };\n\n return (\n <>\n }\n setIsOpen={setIsOpen}\n isOpen={isOpen}\n separator\n large\n >\n
\n
\n
\n \n {\n setAmount('');\n setIsOpen(false);\n if (stake) checkApprove();\n else handleStakeUnstake();\n }}\n disabled={stakeDisabled}\n className=\"mt-30 mb-20\"\n size={ButtonSize.Full}\n >\n {`${stake ? 'Stake' : 'Unstake'} vBNT`}\n \n
\n
\n \n {ModalApprove}\n \n );\n};\n","import { useWeb3React } from '@web3-react/core';\nimport { ReactComponent as IconLink } from 'assets/icons/link.svg';\nimport { CountdownTimer } from 'components/countdownTimer/CountdownTimer';\nimport { ModalVbnt } from 'elements/modalVbnt/ModalVbnt';\nimport { useCallback, useState } from 'react';\nimport { useEffect } from 'react';\nimport { useAppSelector } from 'store';\nimport { Token } from 'services/observables/tokens';\nimport { getNetworkVariables } from 'services/web3/config';\nimport {\n getStakedAmount,\n getUnstakeTimer,\n} from 'services/web3/governance/governance';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { openNewTab } from 'utils/pureFunctions';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { Page } from 'components/Page';\nimport { useWalletConnect } from 'elements/walletConnect/useWalletConnect';\n\ninterface VoteCardProps {\n title: string;\n step: number;\n content: string;\n trailingContent?: string;\n button: string;\n onClick: Function;\n footer: JSX.Element;\n variant: ButtonVariant;\n}\nconst VoteCard = ({\n title,\n step,\n content,\n trailingContent,\n button,\n onClick,\n footer,\n variant,\n}: VoteCardProps) => {\n return (\n
\n
\n
{`Step ${step}`}
\n {title}\n
\n
\n {content}\n {trailingContent &&
{trailingContent}
}\n
\n onClick()}\n >\n {button}\n \n
\n
{footer}
\n
\n );\n};\n\nexport const Vote = () => {\n const { chainId } = useWeb3React();\n const account = useAppSelector((state) => state.user.account);\n const tokens = useAppSelector((state) => state.bancor.tokens);\n const [govToken, setGovToken] = useState();\n const [stakeAmount, setStakeAmount] = useState();\n const [unstakeTime, setUnstakeTime] = useState();\n const [isUnlocked, setIsUnlocked] = useState(false);\n const [stakeModal, setStakeModal] = useState(false);\n const [isStake, setIsStake] = useState(false);\n const { handleWalletButtonClick } = useWalletConnect();\n\n useEffect(() => {\n const networkVars = getNetworkVariables();\n setGovToken(tokens.find((x) => x.address === networkVars.govToken));\n }, [tokens, chainId]);\n\n const refresh = useCallback(async () => {\n if (account && govToken) {\n const [unstakeTimer, stakedAmount] = await Promise.all([\n getUnstakeTimer(account),\n getStakedAmount(account, govToken),\n ]);\n setUnstakeTime(unstakeTimer);\n setStakeAmount(stakedAmount);\n } else {\n setUnstakeTime(undefined);\n setStakeAmount(undefined);\n }\n }, [account, govToken]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const title = 'Vote';\n const subtitle =\n 'Bancor is a DAO managed by vBNT stakers who determine the future of the protocol with their proposals.';\n const stakedVBNT = Number(stakeAmount) !== 0;\n\n return (\n \n <>\n
\n {\n if (!account) {\n handleWalletButtonClick();\n return;\n }\n\n setIsStake(true);\n setStakeModal(true);\n }}\n footer={\n
\n
\n {!account || (govToken && govToken.balance) ? (\n
\n {govToken && govToken.balance\n ? `${prettifyNumber(govToken.balance)} ${\n govToken.symbol\n }`\n : '--'}\n
\n ) : (\n
\n )}\n
Unstaked Balance
\n
\n
\n {!account || stakeAmount ? (\n
\n {stakeAmount && govToken\n ? `${prettifyNumber(stakeAmount)} ${govToken.symbol}`\n : '--'}\n
\n ) : (\n
\n )}\n
Staked Balance
\n
\n
\n }\n />\n {\n openNewTab('https://vote.bancor.network/');\n }}\n footer={\n
\n \n How to Vote \n \n
\n }\n />\n\n
\n
\n
\n Unstake from Governance\n
\n\n
\n In order to remove vBNT from governance you would need to\n unstake them first.\n
\n
\n {\n setIsStake(false);\n setStakeModal(true);\n }}\n >\n Unstake Tokens\n \n {unstakeTime && !isUnlocked && (\n
\n Unstake available in\n setIsUnlocked(true)}\n />\n
\n )}\n
\n
\n
\n
\n
\n Legacy onchain contract\n
\n\n
\n View previous votes and decisions made onchain.\n
\n\n \n View Legacy Gov \n \n
\n
\n
\n {govToken && (\n \n )}\n \n \n );\n};\n","import { Page } from 'components/Page';\n\nconst content = [\n {\n id: 1,\n subtitle: 'Eligibility; Prohibition of Use',\n html: '

By accessing or using the Site, you represent and warrant that you will not use the Site if the laws applicable to you of due to your country of residency and/or citizenship prohibit you from doing so in accordance with these Terms.Token conversions are not available to US residents and/or domiciliaries.In addition, by accessing and using the Site, you represent and warrant that you will not perform or attempt to perform Token conversions through the Site, if : (1) you are a US resident and/or domiciliary; (2) you are using the Site from one of the countries embargoed or restricted by the Swiss State Secretariat for Economic Affairs (SECO), as follows: Belarus, Burundi, Central African Republic, Congo, DPRK (North Korea), Guinea, Guinea-Bissau, Iran, Iraq, Lebanon, Libya, Mali, Myanmar(Burma), Republic of South Sudan, Somalia, Sudan, Syria, Ukraine, Venezuela, Yemen, Zimbabwe. Pursuant to applicable laws and regulations, Bancor maintains the right to select its markets and jurisdictions to operate and may restrict or deny the use of the Site, Content or any part thereof, in certain countries at its discretion.

',\n },\n {\n id: 2,\n subtitle: 'Site Content',\n html: '
  • The Site offers an online platform that allows you to gain access and interact with supported blockchains and presents options of autonomous conversion mechanisms, including between the different supported blockchains. Such conversions may be of different Smart Tokens or other supported standards tokens (applicable to the relevant supported blockchans; for example, standard ERC20 tokens on Ethereum blockchain) that are held by Relay Tokens(collectively, “Tokens”).
  • Through the Site, you can (the following shall be referred to as the “Content”):

i. View information relating different Tokens;

ii. View the information from supported electronic wallets(“Electronic Wallet” or “Wallet”);

iii. Build transactions yourself (with the assistance of the Site’s interfaces), which you may then send to the blockchain.

iv. BancorX cross-blockchain interface, assisting you to use your BNT, and convert between Tokens on the supported blockchains;

v. Interact and communicate with other Users on the Site, participate in discussions and receive information from the Site’s community;

vi. Manage your Wallet (associated with the Account), enabling you to send or receive Tokens, convert between Tokens, view historical data, and easily transact on the blockchain;

vii. Receive notifications regarding activities in your Wallet; The Services detailed in sub-sections i, ii and iii are available to all Users on the Site (without requiring an Account), while those detailed in sub-sections iv, v and vi are available by creating your own account on the Site (the “Account”).To create your Account, you must assign a display name Account (“Display Name”) and associate the Account to your designated Wallet.

',\n },\n {\n id: 3,\n subtitle: 'Create Your Account',\n html: '

The Content detailed in Sections 2.(b) i, ii and iii above, are available to all Users on the Site (without requiring an Account), while those detailed in in Sections 2.(b) iv, v and vi above are available by creating your own account on the Site (the “Account”). Create Your Account: To create your Account, you must assign a display name Account (“Display Name”) and associate the Account to your designated Wallet. Your Display Name: The Display Name can be any name of your choosing and will be displayed openly on the Site to all other Users. When choosing your Display Name, consider it will mainly be used to enable you to interact with other users on the Site. You may change your Display Name at any time.

',\n },\n {\n id: 4,\n subtitle: 'Create Your Electronic Wallet',\n html: '
  • Bancor does not control your Wallet. When using the Site or when creating an Account, you can choose to use a Wallet provided by external service providers, or the Bancor wallet provided on the Site. With your Wallet, you can store and engage in transactions using Ethereum cryptocurrency, either within the Bancor Network or with other platforms. Please note that your Wallet is under your sole responsibility and will always remain under your sole control. While your Account enables you to access your Wallet with ease – Bancor has no access to your Wallet nor any control over its use, and accordingly Bancor and/or Bancor Parties have no liability whatsoever regarding the use of your Wallet and/or any crypto-assets held in, or controlled through the Wallet. Bancor will not be able to assist you regaining access to your wallet in case you lost your Wallet Access Information.
  • Wallet Security: The access to your Wallet (and any cryptocurrency held in it) is available only with the access information and codes issued to you when establishing the Wallet (which commonly consist of a twelve (12) word mnemonic phrase, account keystore json file and/or private key) (“Wallet Access Information”). When creating an Account,your Wallet’s encrypted password file is encrypted once more before is stored in a protected file, accessible only by your password. We do not see, track, save or have access to your password which can unlock the password protected file. When choosing a password for your Wallet, remember that your Wallet may be subject to hacking attempts, the success of which may depend on the strength of the code you created. Subject to developments in general blockchain technology, You should be able to access your Wallet independently using your Wallet Access Information, even if at any time your access to the Site and Content shall be disabled for any reason whatsoever. For the protection of your interests, it is imperative you keep safe and guard the Wallet Access Information issued to you. You acknowledge and accept that you are solely responsible for the security of your Wallet and for any use of your Account as well as for any crypto-assets held or managed by them. Bancor and/or Bancor Parties will not be liable or accountable, nor shall be deemed to have any liability or accountability, for any loss or damage regarding your failure to keep your Account or Wallet information secret and protected. Furthermore, Bancor has no control over your actions or transactions made using the Content. With that in mind, Bancor and/or Bancor Parties will have no liability to you or to any third party for any claims or damages that may arise as a result of any actions or transactions that you engage in while using the Content. Bancor and/or Bancor Parties shall not be liable for the acts or omissions of any third parties, nor will they be liable for any damage that you may suffer as a result of interacting with any third parties. We reserve the right to cancel or refuse to process any digital currency transaction due to requirements of any applicable laws or regulations, and without prior notice.
  • We cannot guarantee that the Content will always function without disruptions, delay or errors. A number of factors may impact the quality of your communications on the Site and use of the Content, and may result in the failure of your communications including, without limitation, your local network, firewall, your internet service provider, the public internet and your power supply. For the avoidance of doubt and without derogating from the Terms hereunder, Bancor and/or Bancor Parties (as defined below) take no responsibility for any disruption, interruption or delay caused by any failure of or inade
',\n },\n {\n id: 5,\n subtitle: 'Fees and Payments',\n html: '

The use of the Site and Content is not subject to or conditioned upon any payment or fee to Bancor. You confirm that you are aware and agree to the following:

  • All transactions on the Ethereum blockchain are subject to a fee (Gas), which is made in ETH and transferred internally into the system. To facilitate transactions on the blockchain you must have a sufficient amount of ETH.
  • Tokens might include certain terms affecting conversion rates. Such terms are determined and affixed by the issuer of the Token at its own and exclusive discretion.
  • When using the Content, you are able to construct and determine, at your own discretion, the parameters you wish to apply to your conversion of Tokens. The actions you wish to execute will be subject to those parameters you applied. Such terms, as may be applicable in each case individually, will be reflected and expressed in the conversion ratio and other applicable formulas, affecting the final outcome of your actions. By using the Content, you confirm and accept you are aware of the intrinsic risks regarding your use of the Content, that you are capable to assess and determine the outcomes of your actions using the Content, and that you are exclusively responsible and liable for your actions and their results. Bancor and/or Bancor Parties are not responsible for any taxes, levies, charges and/or expenses of any kind you may incur, resulting from your use of the Content and/or in connection therewith, whether such may be incurred pursuant to any applicable laws, rules or regulations, by any third party service provider(s), or otherwise. Any and all such taxes, levies, charges and/or expenses of any kind shall be borne solely by you. You agree that you shall have no claim, suit or demand of any kind, and by agreeing to these Terms, hereby irrevocably and completely waive any such claim, suit or demand of any kind, to the extent such may exist or hereafter arise, towards us, our affiliated entities, and any of our directors, managers, employees or consultants, in connection with or related to any of the foregoing.
',\n },\n {\n id: 6,\n subtitle: 'Rules of Use',\n html: \"

You represent and warrant that you have full right and authority to use the Content and to be bound by these Terms. You agree that you will comply fully with these Terms and all applicable domestic and international laws, regulations, statutes, ordinances that govern your use of the Content. Without limiting the foregoing and in recognition of the global nature of the Internet, you agree to comply with all local and international rules regarding online conduct. You also agree to comply with all applicable laws affecting the transmission of content or the privacy of persons. When using the Site or Content, you may not, nor may you assist other parties to pursuit or engage in unlawful or abusive uses, or any types of activities which contradict the purpose of the Site or Content, hinder the Site’s operation or Content to other users, or which may be deemed to do so (“Restricted Uses”). For Clarity and reference, Restricted Uses include, but are not limited to, these types of activities as detailed herein, as we may amend from time to time in our sole discretion (thus, not to be regarded as an exhaustive list):

  • Unlawful Activities, such as activities which:

    i. violate any applicable law, rule or regulation; or

    ii. publish, distribute or disseminate any unlawful material or information;

  • Undermining or Abusive Activities, such as activities which:

    i. take any action that imposes an unreasonable or disproportionately large load on our infrastructure, or detrimentally interfere with, intercept, or expropriate any system, data, or information;

    ii. institute, assist or become involved in any type of attack (deliberate or other), including distribution of a virus, attacks upon the Content, the Bancor Protocol™ or the Bancor Network™, that prevent access to or use of any of the above, other attempts to disrupt any of the above, gain unauthorized access to any of the above, or disrupt any other person’s use or enjoyment of any of the above;

    iii. enter or make an attempt to enter the Site and Content (including by accessing linked platforms, networks or systems) unauthorized, including by password mining and/or by using other users information;

    iv. design or assist in designing cheats, exploits, automation software, bots, hacks, modes or any other unauthorized third-party software to modify or interfere with the Site or Content;

    v. attempt to disable or circumvent any security or access control mechanism of the Site or Content;

    vi. use any unauthorized third-party software that accesses, intercepts, 'mines', or otherwise collects information from or through the Content or the Site, or that is in transit from or to the Site;

    vii. bypass any robot exclusion headers or other measures Bancor uses to restrict access to the Content or use any software, technology, or device to send content or messages, scrape, spider, or crawl the Content, or harvest or manipulate data;

    viii. solicit another person’s password or other personal information under false pretenses;

    ix. copy, modify, or create derivative works of the Content or the Site;

  • Activities Abusive to Other Users or Their Rights, such as activities which:

    i. Interfere with other Users ability to exploit or access the Site or any of the Content;

    ii. attempt to, or harass, abuse, or harm of another person or entity, including Bancor employees and service providers;

    iii. collect, harvest or post anyone’s private information, in any media format;

    iv. impersonate another user or otherwise misrepresent yourself;

    v. violate the legal rights of others, including defaming, abuse, stalking or threatening users;

    vi. defraud any other Users or any other person, including Bancor employees and service providers, including by providing false, inaccurate, misleading, or partial information.

  • Activities Infringing Intellectual Property, such as activities which:

    i. reverse engineer, decompile, disassemble, decipher or otherwise attempt to derive the source code for any underlying software or other intellectual property used to provide the Content, or to obtain any information from the Content using any method unless you have received Bancor’s prior written approval;

    ii. infringe the intellectual property rights, privacy rights, or moral rights of any third party or Bancor;

  • Unfair or Abusive Transacting, such as activities which:

    i. create or enter a fictitious transaction or a transaction with fictitious elements of any kind;

    ii. exploit, disrupt or manipulate, or attempt to exploit, disrupt or manipulate the Site or the use of the Content, in a manner designed to create transaction conditions which are not available to other Users;

    iii. utilizes or applies technological abilities or foreknowledge not exploited or available to other Users, to perform (including off Site) transactions parallel to those performed by Users on the Site, and/or create unequal terms among Users regarding the use of Content on the Site, or influence the terms of transactions on the blockchain (including activities commonly referred to as Front-Running) and/or create an unfair or abusive advantage over other Users; Violation of any of these Restricted Uses may be cause for the taking of legal actions on the part of Bancor according to the law, in addition to any right and remedies set forth hereunder or under any applicable law. Without derogating from the above, by accepting these Terms, you acknowledge that Bancor makes no representation or warranty regarding its ability, nor assumes any liability, to detect, limit or prevent any Restricted Use.

\",\n },\n {\n id: 7,\n subtitle: 'Limitation or Termination of Access and Services',\n html: \"

WE MAY, IN OUR SOLE DISCRETION, REFUSE TO MAKE THE CONTENT AVAILABLE TO ANY PERSON OR ENTITY. WE MAY, WITHOUT NOTICE AND IN OUR SOLE DISCRETION, TERMINATE YOUR RIGHT TO USE THE CONTENT OR ANY PORTION THEREOF, AND BLOCK OR PREVENT YOUR FUTURE ACCESS TO AND USE OF THE CONTENT OR ANY PORTION THEREOF. WE MAY, AT ANY TIME AND FOR ANY REASON AND IN OUR SOLE DISCRETION, DISCONTINUE THE CONTENT IN ITS ENTIRETY, OR ANY PART HEREOF, WITHOUT PRIOR NOTICE AND/OR LIABILITY OF ANY KIND. Subject to your agreement and compliance with these Terms, you are hereby granted with a personal, revocable, non-transferable and non-exclusive right to use the Content. Use of the Content shall be solely for your own, private purposes and for no other purpose whatsoever. You hereby acknowledge that your right to use the Content is limited by these Terms, and, if you violate or if, at any point, you do not agree to any of these Terms, your right to use the Content shall immediately terminate, and you shall immediately refrain from using the Content. Without derogating from the generality of the foregoing, any use of the Content that violates these Terms is strictly prohibited and can, at Bancor's sole discretion, result in the immediate revocation of your limited rights granted by these Terms. Without limiting any other remedy, Bancor may limit, suspend, revoke, terminate, modify, or delete your Account or access to the Content at its sole discretion without prior notice or liability, if you are, or if Bancor suspects (in its sole discretion) that you are failing to comply with these Terms or for any actual or suspected Restricted Use of the Site and Content. Any of such actions, including the termination of your rights to use the Site and Content, may be applied by Bancor permanently or temporarily. In such an event, Bancor may terminate your Account and access to the Site and Content (however without affecting your Wallet, which remains exclusively yours, subject to any applicable third party terms of use or law). Upon termination of your Account, your Account log in credentials may not be reserved and it may not be possible to re-instate them. You hereby acknowledge and agree that Bancor is under no obligation to compensate you for any losses of any kind whatsoever resulting from the cease of Content as set forth hereinabove, whether such closure was voluntary or involuntary, and you hereby irrevocably waive any demand or claim regarding the above.

\",\n },\n {\n id: 8,\n subtitle: 'Privacy Policy',\n html: '

When using the Content, you may be required to provide us with certain personal information that may include your full name, e-mail address, Wallet address etc. This information will be stored and used in accordance with our Privacy Policy, and we will not release such personal information to any third party without the User’s consent, except as not prohibited by law or as set forth in our Privacy Policy, as amended from time to time. In addition, we may use aggregate statistical information about Users’ activity on the Site for marketing or any other purpose.

',\n },\n {\n id: 9,\n subtitle: 'Ownership, Copyrights',\n html: '

a. The Content and all of the content that appears in the Site, including without limitation, the use of the Site’s name, software, web technologies, source code, concepts, artwork, photos, animations, sounds, methods of operation, moral rights, documentation, and virtual items, is the exclusive property of Bancor, or is being used with permission from its licensors. Bancor (or its licensors as applicable) retain all rights, title and interest in and to the Content and all of the content that appears in the Site, and all intellectual property rights relating thereto, including without limitations all copyright, patent, trademarks, logos, design rights and any other proprietary rights connected with the Content. Notwithstanding any provision to the contrary herein, you agree that you have no right or title in or to the Content and/or to any content that appears in the Site. Bancor’s name and logo, and any other trademarks included in the Content and/or appear on the Site, are trademarks of Bancor.

b. All third party product names that may legitimately appear in the Site are trademarks of their respective owners. No transfer or grant of any rights under any names, marks or logos is made or is to be implied by any provision of these Terms or by anything on the Site, and all rights in such names, marks or logos is reserved to Bancor or their respective owners, as applicable.

c. You acknowledge and agree that any materials, including but not limited to questions, comments, feedback, suggestions, ideas, plans, notes, drawings, original or creative materials or other information or commentary you provide on our platform or one of our social media accounts, regarding Bancor or the Content (collectively, “Feedback”) that are provided by you, whether by email, posting to the Site or otherwise, are non-confidential and will become the sole property of Bancor. Bancor will own exclusive rights, including all intellectual property rights, and will be entitled to the unrestricted use and dissemination of such Feedback for any purpose, commercial or otherwise, without acknowledgment or compensation to you.

',\n },\n {\n id: 10,\n subtitle: 'Third Party Content',\n html: '

To the extent that the services contain links or any other information to third party websites, tokens or services, Bancor does not control the availability and content of those websites, tokens and services. Any concerns regarding any such third party websites, tokens and/or service, or any link thereto, should be directed to such particular website and/or services provider. Bancor makes no representation or warranty regarding any content, goods, tokens and/or services provided by any third party, even if linked to through the site or the service. The linked sites and tokens are not under the control of Bancor and may collect data or solicit personal information from you. Bancor is not responsible for their content, business practices or privacy policies, or for the collection, use or disclosure of any information those sites may collect. you agree that the services may feature advertisements from third parties. Bancor is not responsible for the actions of third parties who advertise on the site. Your interactions with advertisers or entities that issued the tokens are agreements between you and them with Bancor having no responsibility for such interactions.

',\n },\n {\n id: 11,\n subtitle: 'RISKS Statement, Representations and Warranties',\n html: '

Bancor provides an execution-only service and does not advise on the merits of any particular conversion of Tokens or its tax or legal consequences. As a general matter, Users should be aware of the following prior to utilizing our Content.

a. Assumption of Risks of Cryptographic Systems and Currencies. By using the Content and the Bancor Network in any way, you acknowledge the inherent risks associated with cryptographic systems and ecosystems; and warrant that you have an understanding of the usage and intricacies of native cryptographic tokens, like BNT, ETH, EOS, smart contract based tokens (for example, such as those that follow the Ethereum Token Standard) and blockchain-based software systems. You understand that blockchain technologies (such as Ethereum and EOS) and associated currencies or tokens are highly volatile due to many factors including but not limited to adoption, speculation, technology and security risks. You also acknowledge that the cost of transacting on such technologies (where applicable) is variable and may increase at any time causing impact to any activities taking place on the relevant blockchain (such as Ethereum). You acknowledge these risks and represent that Bancor cannot be held liable for such fluctuations or increased costs. You acknowledge that you are solely responsible for the process of converting BNT or ETH and that Bancor does not offer any such service. Bancor cannot be held liable for any losses or damages of BNT, ETH or other cryptocurrencies resulting from the use of services of any third-party provider.

b. Assumption of Risk of Regulatory Actions in One or More Jurisdictions. The Content as well as the Bancor Network and relevant blockchain (such as Ethereum or EOS) could be impacted by one or more regulatory inquiries or regulatory action, which could impede or limit the ability of Bancor to continue to develop, or which could impede or limit your ability to access or use the Content, the Bancor Network or the applicable blockchain. Bancor endeavours to comply with all applicable laws, i.e. all legal requests for information, and reserve the right to provide information, including Project Information, to law enforcement personnel and other third parties to answer inquiries, to respond to legal process, to respond to the order of a court of competent jurisdiction and those exercising the court’s authority and to protect Bancor Network and its Users.

c. Understanding Tokens requires advanced technical knowledge. Tokens are often described in exceedingly technical language that requires a comprehensive understanding of applied cryptography and computer science in order to appreciate inherent risks. Listing of a Token on the Site does not indicate approval or disapproval of the underlying technology regarding any Token, and should not be used as a substitute for your own understanding of the risks specific to each Token. In using the Content, you represent that you have been, are, and will be solely responsible for making your own independent appraisal and investigations into the risks relating to and concerning the Tokens. You represent that you have sufficient knowledge, market sophistication, professional advice and experience to make your own evaluation of the merits and risks of any conversion or any underlying Token.

d. You accept the risk of converting Tokens. You understand the conversion of Tokens may use untested code and protocols. You accept the risk of conversion failure or fault. You agree not to hold Bancor accountable for any related losses. Neither you nor we, can reverse, change or cancel a conversion of Tokens transaction marked as complete or pending. Conversion of Tokens using the Content is managed and confirmed via the relevant blockchain. You understand that your relevant blockchain (Ethereum, EOS or other) public address will be made publicly visible whenever you use the Content.

e. You are responsible for complying with applicable law. You agree that Bancor is not responsible for determining whether or which laws may apply to your conversions, including with respect to tax or money transferring regulations. You are solely responsible for reporting and paying any taxes arising from your use of the Content.

f. You are aware of and accept the risk of operational challenges. The Site and the Content may experience sophisticated cyber-attacks, unexpected surges in activity, or other operational or technical difficulties, which may hinder the use of the Content or affect or even cause faults or failures in the conversion of Tokens. You agree not to hold Bancor accountable for any related losses.

g. Bancor does not advise on converting risk. If at any point Bancor or its representatives do provide converting recommendations, market commentary, or any other information, the act of doing so is incidental to your relationship with us and imposes no obligation of truth or due diligence on behalf of Bancor or its representatives.

h. Operation of Token Protocol. We do not own or control the underlying software protocols, which govern the operation of the Tokens (other than the BNT) supported on our platform. You acknowledge and agree (i) that the underlying protocols may be subject to sudden changes in operating rules (‘forks’), and that such forks may materially affect the value, function, and even the name of the Tokens you store. In the event of a fork, you agree that we may suspend the Content (with or without advance notice to you) and that we may decide whether or not to support (or cease supporting) either branch of the forked protocol entirely. You acknowledge and agree that we assume absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol; and (ii) that we are not responsible for operation of the underlying protocols and that we make no guarantee of their functionality, security, or availability.

',\n },\n {\n id: 12,\n subtitle: 'Ownership of Tokens',\n html: '

You hereby warrant and represent that any Tokens used by you in connection with the Content are either owned by you or that you are validly authorized to carry out conversions, and to take (or refrain from taking) any other actions which you perform while using the Content, using such Tokens.

',\n },\n {\n id: 13,\n subtitle: 'Indemnification',\n html: '

You agree to indemnify, defend and hold Bancor, its affiliates and service providers, and each of their respective officers, directors, agents, employees, and representatives, harmless from any claim (including, but without limitation, third party claims) or demand (including attorneys’ fees and costs and any fines, fees or penalties imposed by any regulatory authority) arising out of or related to (i) your breach of these Terms, (ii) your use or access of the Site and/or Content, or (iii) your violation of any law, rule, or regulation, or the rights of any third party.

',\n },\n {\n id: 14,\n subtitle: 'WARRANTY DISCLAIMER',\n html: '

YOU UNDERSTAND, ACKNOWLEDGE AND ACCEPT THAT BLOCKCHAIN APPLICATIONS AND PROTOCOLS ARE GENERALLY STILL IN AN EARLY DEVELOPMENT STAGE AND THEREFORE OF EXPERIMENTAL NATURE. YOU THEREFORE UNDERSTAND THAT THE CONTENTS ARE PROVIDED TO YOU ‘AS IS’ AND WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND EITHER EXPRESSED OR IMPLIED. TO THE FULLEST EXTENT PERMISSIBLE PURSUANT TO APPLICABLE LAW, EACH OF BANCOR AND/OR BANCOR PARTIES DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF ANY KIND IN CONNECTION WITH THE TOKENS, THE CONTENT, NON-INFRINGEMENT, AND FITNESS FOR ANY PARTICULAR PURPOSE, USEFULNESS, AUTHORITY, ACCURACY, COMPLETENESS AND/OR TIMELINESS. EACH OF BANCOR AND/OR BANCOR PARTIES MAKES NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE CONTENT OF THE CONTENTS, OF THE CONTENT OF ANY SITES LINKED TO THE CONTENTS, OF ANY THIRD PARTY MATERIALS OR THE UNDERLYING SOFTWARE PROTOCOL (THE SOFTWARE) THAT GOVERNS THE CONTENT AND THE BANCOR NETWORK. WITHOUT LIMITING THE FOREGOING, NEITHER BANCOR NOR ITS AFFILIATES OR SUBSIDIARIES, OR ANY OF ITS OR THEIR DIRECTORS, EMPLOYEES, AGENTS, ATTORNEYS, THIRD-PARTY CONTENT PROVIDERS, DISTRIBUTORS, JOINT-VENTURES, LICENSEES OR LICENSORS (COLLECTIVELY, “BANCOR PARTIES”) REPRESENT OR WARRANT THAT THE SITE AND THE CONTENT WILL BE UNINTERRUPTED, ERROR-FREE, BUG-FREE OR FREE FROM VIRUSES OR OTHER HARMFUL COMPONENTS. YOU AGREE THAT USE OF THE SITE AND THE CONTENT IS AT YOUR SOLE RISK. ADDITIONALLY, IN NO EVENT SHALL BANCOR AND/OR BANCOR PARTIES BE LIABLE FOR ANY UNAUTHORIZED ACCESS TO OR USE OF THIRD PARTY MATERIALS, SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN. YOU ACKNOWLEDGE AND AGREE THAT, TO THE FULLEST EXTENT PERMITTED BY ANY APPLICABLE LAW, THE DISCLAIMERS CONTAINED HEREIN SHALL APPLY TO ANY AND ALL DAMAGES OR INJURIES WHATSOEVER CAUSED BY OR RELATED TO THE USE OF, OR INABILITY TO USE, THE CONTENTS, UNDER ANY CAUSE OR ACTION WHATSOEVER OF ANY JURISDICTION, INCLUDING, WITHOUT LIMITATION, ACTIONS FOR BREACH OF WARRANTY, BREACH OF CONTRACT OR TORT (INCLUDING NEGLIGENCE). UNDER NO CIRCUMSTANCES WHATSOEVER WILL BANCOR AND/OR ANY OF BANCOR PARTIES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, BE RESPONSIBLE OR LIABLE TO YOU OR TO ANY OTHER ENTITY FOR ANY COMPENSATORY, INDIRECT, INCIDENTAL, CONSEQUENTIAL (INCLUDING FOR LOSS OF PROFITS, LOST BUSINESS OPPORTUNITIES, LOSS OF GOODWILL OR DATA DESTRUCTION OR IMPAIRMENT) SPECIAL, EXEMPLARY, OR PUNITIVE DAMAGES THAT RESULT FROM OR RELATE IN ANY MANNER WHATSOEVER TO YOUR USE OF OR INABILITY TO USE THE CONTENTS. IF YOU ARE DISSATISFIED WITH THE CONTENTS, OR WITH THESE TERMS, OR YOU HAVE ANY DISPUTE WITH BANCOR AND/OR ANY OF BANCOR PARTIES, YOUR SOLE AND EXCLUSIVE REMEDY IS TO DISCONTINUE USING THE CONTENTS. YOU FURTHER SPECIFICALLY ACKNOWLEDGE THAT NEITHER BANCOR NOR ANY BANCOR PARTIES ARE LIABLE, AND YOU AGREE NOT TO SEEK TO HOLD BANCOR AND/OR BANCOR PARTIES LIABLE, FOR THE CONDUCT OF THIRD PARTIES, INCLUDING OTHER USERS OF THE CONTENTS, ISSUERS OF TOKEN AND OPERATORS OF EXTERNAL SITES, AND THAT THE RISK REGARDING THE FOREGOING RESTS ENTIRELY WITH YOU. Additionally, we shall not be deemed to be in breach of these Terms, nor shall we incur any liability or bear any responsibility due to a delay or failure in performance caused by Force Majeure. Force Majeure referrers to circumstances beyond our reasonable control, including but not limited to acts of God, fire, flood, war, terrorism, embargo, accident, labor disputes, or shortage of material, equipment or transport, any law, regulation, or any ruling of court, tribunal or governmental agency

',\n },\n {\n id: 15,\n subtitle: 'LIMITATION OF LIABILITY',\n html: \"

WITHOUT DEROGATING FROM THE FOREGOING, IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL BANCOR, AND/OR ANY OF BANCOR PARTIES, BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE CONTENT AND/OR THE BANCOR NETWORK / SOFTWARE (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 SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. BECAUSE SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR CERTAIN TYPES OF DAMAGES, SOME OF THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU. IN SUCH JURISDICTIONS, BANCOR'S LIABILITY IS LIMITED AND WARRANTIES ARE EXCLUDED TO THE GREATEST EXTENT PERMITTED BY THE CORRESPONDING APPLICABLE LAW. ADDITIONALLY, YOU ACKNOWLEDGE THAT NEITHER BANCOR NOR ANY BANCOR PARTIES DOES NOT ACTS OR SERVES AS YOUR BROKER, INTERMEDIARY, AGENT, OR ADVISOR WITH RESPECT TO ANY ACTION (INCLUDING REFRAINING FROM ANY ACTION), INCLUDING WITHOUT LIMITATION, ANY CONVERSION, YOU MAKE OR PROPOSE TO MAKE USING THE CONTENT AND OWES YOU NO FIDUCIARY DUTY.

\",\n },\n {\n id: 16,\n subtitle: 'Computer Viruses',\n html: '

You acknowledge and agree that neither Bancor nor any Bancor Party bears any liability, for any interruptions or damage caused by any computer viruses, worms, spyware, scareware, Trojan horses, defects, corrupted files, hoaxes, or other malware that may affect your computer or other equipment, or any phishing, spoofing or other attack. You should also be aware that SMS and email services are vulnerable to spoofing and phishing attacks and should use care in reviewing messages purporting to originate from us. We advise the regular use of a reputable and readily available virus screening and prevention software.

',\n },\n {\n id: 17,\n subtitle: 'Dispute Resolution and Governing Law',\n html: '

These Terms are governed by and construed in accordance with the laws of the Swiss Confederation. You hereby consent that any claim, cause of action or dispute arising out of or relating to these Terms, the Content or the Site shall be submitted to the exclusive jurisdiction of the Cantonal Court of Zug, Switzerland, and you agree to submit to the personal jurisdiction of such courts for the purpose of litigating all such claims.

',\n },\n {\n id: 18,\n subtitle: 'Miscellaneous',\n html: '

a. The controlling language for these terms of use is English; the meaning of terms, conditions and representations herein are subject to definitions and interpretations in the English language. Any translation is provided for your convenience and may not be deemed to represent accurately the information in the original English.

b. If any provision of these Terms is determined to be invalid or unenforceable, the provision shall be deemed to be severable from the remainder of these Terms and will not cause their invalidity or unenforceability.

c. These terms of use may be amended from time to time. It is your responsibility to check these terms of use periodically for changes. Your continued use of the Content following the posting of changes will mean that you accept and agree to the changes. If you do not agree with any such modification, you should not use the Content.

d. YOU AGREE THAT ANY CAUSE OF ACTION ARISING OUT OF OR RELATED TO THE CONTENT MUST COMMENCE WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION ACCRUES. OTHERWISE, SUCH CAUSE OF ACTION IS PERMANENTLY BARRED.

',\n },\n];\n\nexport const TermsOfUse = () => {\n const title = 'Terms of Use';\n\n return (\n \n <>\n

\n By accessing or using the Token Liquidity Network website and API\n located at{' '}\n \n https://bancor.network\n \n , and any linked or directed subdomain (such as{' '}\n \n https://app.bancor.network\n \n ) (the “Site”) and any content made available through the Site, you\n (the “User” and collectively with others using the Site - “Users”)\n agree to be bound by these Terms of Use (“Terms”). The rights in the\n Site are held by Bprotocol Foundation, a Swiss foundation, with legal\n seat in Zug, Switzerland, registered in the Swiss commercial register\n under UID CHE-181.679.849 (“Bancor”), and the terms “we,” “us,” and\n “our” refer to Bancor. Please read these Terms carefully. These Terms\n govern your access to and use of the Site and Content (as defined\n herein). By using the Content or visiting the Site, you signify your\n consent to both these Terms and our Privacy Policy, a current version\n of which is available at\n \n https://app.bancor.network/privacy-policy\n \n , which is incorporated herein by reference and which may be modified\n from time to time at our sole discretion and without prior notice.\n Changes may be made to these Terms from time to time. These changes\n will apply at that instant to all then current and subsequent uses of\n the Site. You waive any right you may have to receive specific notice\n of such changes or modifications. Your continued use of this Site acts\n as acceptance of such changes or modifications. If you do not agree to\n the Terms in effect when you access or use the Site, you must stop\n using the Site.\n

\n

\n \n IF YOU DO NOT AGREE TO ANY OF THESE TERMS, PLEASE DO NOT USE THE\n SITE OR CONTENT.\n \n

\n\n {content.map((item, index) => (\n
\n

\n {item.id}. {item.subtitle}\n

\n\n \n
\n ))}\n \n
\n );\n};\n","import { Page } from 'components/Page';\n\nconst content = [\n {\n id: 1,\n subtitle: 'About Us',\n subcontent:\n 'The Bancor Network (the “Bancor Network”, “We”, “Us” or “Our”) is a Decentralized Liquidity Network that allows you to hold any Ethereum token and convert it to any other token in the network, with no counter party, at an automatically calculated price, using a simple web wallet (the “Services”). This privacy policy has been created to inform about how we manage, collect, store and use the personal information we receive and collect in connection with the Bancor Network (the Policy).',\n },\n {\n id: 2,\n subtitle: 'Acceptance of Policy',\n subcontent:\n 'Our registration process is done by using a chatbot. As such, we create a conversation process where we ask you to agree to the terms of Our Privacy Policy, by replying “yes” you agree that you have read, understood, accept and agree to be bound by this Privacy Policy. If you don’t agree with the Privacy Policy, please do not use our Services.',\n },\n {\n id: 3,\n subtitle: 'Changes to Our Privacy Policy',\n subcontent:\n 'We may update this Privacy Policy to reflect changes to our information collection, usage and storage practices. If we make any changes that we deem as “material” (in our sole good faith discretion), we will notify you (using the notification methods set forth in the “Notices” Section prior to the change becoming effective. We encourage you to periodically review this page for the latest information on our privacy practices.',\n },\n {\n id: 4,\n subtitle: 'Information we collect and for which purposes',\n subcontent:\n 'We collect information that is necessary for the functioning of our Bancor Netwotk and the provision of Services through it. We receive the Information, such as username directly from you when you register to our Bancor Network as member of a community. You may voluntarily provide us your contact information and related data, including personal information. We use the information in order to administer our Network and for internal operations, including troubleshooting, data analysis, testing, research, statistical and survey purposes. We may also store information that your computer or mobile device provides us in connection with your use of the Service, such as your browser type, type of computer or mobile device, browser language, IP address. If you register to the Bancor Network using a third party Service like Facebook, we may receive information about you from such third party Service.',\n },\n {\n id: 5,\n subtitle: 'Disclosure of Your Information',\n subcontent:\n 'We do not rent or sell any information about you to others, or trade any such information. We may employ third party companies and individuals to facilitate the operation of the Network, and to perform services related to administration of the Network (including, but not limited to, bill and credit card payment processing, maintenance, hosting and database management services, web analytics and administration). You understand and agree that we may be required to disclose personal information if required to do so by law or in the belief that such disclosure is reasonably necessary to avoid liability, to comply with legal process, including, but not limited to a subpoena, statute, search warrant, or court order, or to protect our, or a third party, property and rights, to protect the safety of the public or any person, or to prevent or stop activity we may consider to be, or to pose a risk of being, illegal, unethical or legally actionable. In the event we will be acquired by or merged with a third party entity, or in the event of bankruptcy or a comparable event, We reserve the right to transfer or assign personal information in connection with the foregoing events.',\n },\n {\n id: 6,\n subtitle: 'Cookies Statement',\n subcontent: `We use cookies. Cookies are small text files that are placed on your computer by websites that you visit. They are widely used in order to make websites work, or work more efficiently, as well as to provide information to the owners of the site. Cookies are typically stored on your computer's hard drive. Information collected from cookies is used by us to evaluate the effectiveness of our website and API located at https://bancor.network, and any linked or directed subdomain (such as https://app.bancor.network) (the “Site”), analyze trends, and manage the platform. The information collected from cookies allows us to determine such things as which parts of our Site are most visited and difficulties our visitors may experience in accessing our Site. With this knowledge, we can improve the quality of your experience on the platform by recognizing and delivering more of the most desired features and information, as well as by resolving access difficulties. We also use cookies and/or a technology known as web bugs or clear gifs, which are typically stored in emails to help us confirm your receipt of, and response to, our emails and to provide you with a more personalized experience when using our Site. We also use third party service provider(s), to assist us in better understanding the use of our Site. Our service provider(s) will place cookies on the hard drive of your computer and will receive information that we select that will educate us on such things as how visitors navigate around our site, what pages are browsed and general transaction information. Our service provider(s) analyses this information and provides us with aggregate reports. The information and analysis provided by our service provider(s) will be used to assist us in better understanding our visitors' interests in our Site and how to better serve those interests. The information collected by our service provider(s) may be linked to and combined with information that we collect about you while you are using the platform. Our service provider(s) is/are contractually restricted from using information they receive from our Site other than to assist us. Your continued use of our Site, as well as any subsequent usage, will be interpreted as your consent to cookies being stored on your device.`,\n },\n {\n id: 7,\n subtitle: 'Security',\n subcontent:\n 'Everything We save is encrypted and We have implemented the technical and organizational measures designed to secure your information from accidental loss and from unauthorized access, use, alteration or disclosure. However, we cannot guarantee that unauthorized third parties will never be able to overcome those measures or use your information for improper purposes.',\n },\n {\n id: 8,\n subtitle: 'Processing and transferring your information',\n subcontent:\n 'The information provided will be saved and stored with the hosting and information backup providers (such as Google Cloud) in the U.S, held and operated by third parties other than Bancor and/or which are not controlled by Bancor. Upon providing the information the site visitor agrees and confirms that Bancor may transfer to and/or save the information provided thereto on servers located in the U.S.',\n },\n {\n id: 9,\n subtitle: 'Your Rights',\n subcontent:\n 'You may review, update, or delete the information collected by or through our Service by logging into your account and reviewing your account settings and profile. You have a right to access to your personal information held by us by requesting a copy in writing. We will provide you with such copy as soon as practicable after receiving a valid request. We may charge you a fee, which shall not exceed the cost for copies. We may request proof of identification to verify your access request and reject any unfair request. To exercise this right, please refer to the “Contact Us” section below.',\n },\n {\n id: 10,\n subtitle: 'Notices',\n subcontent:\n 'Notices to you may be made via our website. Bancor may also provide notices of changes to this Privacy Policy or other matters by displaying notices or links to notices to you generally on our website. You agree that all agreements, notices, disclosures and any other communications that Bancor provide as aforementioned satisfy any legal requirement that such communications be in writing.',\n },\n {\n id: 11,\n subtitle: 'Contact Us',\n subcontent:\n 'For any questions about this Privacy Policy or any other issue regarding the Bacnor Network or our Services please contact us at: privacy@bancor.network',\n },\n];\n\nexport const PrivacyPolicy = () => {\n const title = 'Privacy Policy';\n\n return (\n \n
\n {content.map((item, index) => (\n
\n

{item.subtitle}

\n

{item.subcontent}

\n
\n ))}\n
\n
\n );\n};\n","export const NotFound = () => {\n return (\n
\n
Page Not Found!
\n
\n The page you're looking for is not available.\n
\n
\n );\n};\n","import { useAppSelector } from 'store';\nimport { Token } from 'services/observables/tokens';\nimport { TokenBalance } from 'components/tokenBalance/TokenBalance';\nimport { PoolV3 } from 'services/observables/pools';\nimport { getStandardRewards } from 'store/portfolio/v3Portfolio';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { shrinkToken } from 'utils/formulas';\n\nexport const AdminTknData = () => {\n const allTokens = useAppSelector((state) => state.bancor.allTokens);\n const allV3Pools = useAppSelector((state) => state.pool.v3Pools);\n const userStandardRewardPrograms = useAppSelector(getStandardRewards);\n\n return (\n
\n
\n

All Tokens

\n {allTokens\n .filter((x) => Number(x.balance) !== 0)\n .map((token) => (\n
\n \n
Token ID: {token.address}
\n
\n ))}\n
\n\n
\n

All V3 Pools

\n {allV3Pools.map((pool) => (\n
\n
{pool.name}
\n
Pool ID: {pool.poolDltId}
\n
Pool Token ID: {pool.poolTokenDltId}
\n
Staked Balance: {prettifyNumber(pool.stakedBalance.tkn)}
\n
\n ))}\n
\n\n
\n

Your Joined Standard Reward Programs

\n {userStandardRewardPrograms.map((group) => (\n
\n
\n Reward Token: {group.groupPool.reserveToken.symbol}\n
\n Total Rewards:{' '}\n {shrinkToken(\n group.totalPendingRewards,\n group.groupPool.decimals\n )}{' '}\n {group.groupPool.reserveToken.symbol}\n
\n {group.rewards.map((item) => (\n
\n
Program ID: {item.id}
\n
Pool {item.programPool.reserveToken.symbol}
\n
\n Pending Reward:{' '}\n {shrinkToken(\n item.pendingRewardsWei,\n group.groupPool.decimals\n )}{' '}\n {group.groupPool.reserveToken.symbol}\n
\n
\n ))}\n
\n ))}\n
\n
\n );\n};\n","import { setTenderlyRpcLS } from 'utils/localStorage';\nimport { getProvider, setProvider, setSigner } from 'services/web3';\nimport { EthNetworks } from 'services/web3/types';\nimport { Web3Provider } from '@ethersproject/providers';\nimport { Button, ButtonSize } from 'components/button/Button';\n\nexport const AdminUseMainnet = () => {\n const handleUseMainnet = () => {\n setTenderlyRpcLS();\n setProvider(getProvider(EthNetworks.Mainnet, false));\n setSigner(new Web3Provider(window.ethereum).getSigner());\n };\n\n return (\n \n Use Mainnet\n \n );\n};\n","import { useAppSelector } from 'store';\nimport { useState } from 'react';\nimport {\n getTenderlyRpcLS,\n setTenderlyRpcLS,\n getV3ApiUrlLS,\n setV3ApiUrlLS,\n getV2ApiUrlLS,\n setV2ApiUrlLS,\n} from 'utils/localStorage';\nimport { setProvider, setSigner } from 'services/web3';\nimport { providers } from 'ethers';\nimport { Button, ButtonSize } from 'components/button/Button';\n\nexport interface BancorV3Contracts {\n bancorNetwork: string;\n bancorNetworkInfo: string;\n networkSettings: string;\n pendingWithdrawals: string;\n poolCollectionType1: string;\n standardRewards: string;\n bancorPortal: string;\n}\n\nexport const AdminUseFork = () => {\n const account = useAppSelector((state) => state.user.account);\n const [inputRpcUrl, setInputRpcUrl] = useState(getTenderlyRpcLS());\n const [inputV3ApiUrl, setInputV3ApiUrl] = useState(getV3ApiUrlLS());\n const [inputV2ApiUrl, setInputV2ApiUrl] = useState(getV2ApiUrlLS());\n const [saved, setSaved] = useState(false);\n\n const handleSave = () => {\n setV3ApiUrlLS(inputV3ApiUrl);\n setV2ApiUrlLS(inputV2ApiUrl);\n setTenderlyRpcLS(inputRpcUrl);\n const rpc = new providers.StaticJsonRpcProvider(inputRpcUrl);\n\n setProvider(rpc);\n if (account && inputRpcUrl) {\n setSigner(rpc.getUncheckedSigner(account));\n }\n setSaved(true);\n };\n\n return (\n
\n

Use Tenderly Fork

\n\n
\n
Step 1: RPC URL
\n setInputRpcUrl(e.target.value)}\n />\n\n
Step 2 (optional): V3 API URL
\n setInputV3ApiUrl(e.target.value)}\n />\n\n
Step 3 (optional): V2 API URL
\n setInputV2ApiUrl(e.target.value)}\n />\n
\n\n \n Save\n \n {saved && (\n
\n Successfully saved changes! Refresh to make them take effect.\n
\n )}\n
\n );\n};\n","import { Switch } from 'components/switch/Switch';\nimport { useDispatch } from 'react-redux';\nimport { useAppSelector } from 'store';\nimport { setForceV3Routing } from 'store/user/user';\n\nexport const AdminControls = () => {\n const dispatch = useDispatch();\n const forceV3Routing = useAppSelector((state) => state.user.forceV3Routing);\n return (\n
\n Force V3\n dispatch(setForceV3Routing(!forceV3Routing))}\n />\n
\n );\n};\n","import { AdminTknData } from 'elements/admin/AdminTknData';\nimport { AdminUseMainnet } from 'elements/admin/AdminUseMainnet';\nimport { AdminUseFork } from 'elements/admin/AdminUseFork';\nimport { AdminControls } from 'elements/admin/AdminControls';\n\nexport const Admin = () => {\n return (\n
\n

Bancor Network Configurator

\n\n \n\n
\n\n \n\n
\n\n \n\n
\n\n \n
\n );\n};\n","import { Page } from 'components/Page';\nimport { PageNavLink } from 'components/pageNavLink/PageNavLink';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { Outlet } from 'react-router-dom';\nimport { ReactComponent as IconProtected } from 'assets/icons/protected.svg';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\nimport { openNewTab } from 'utils/pureFunctions';\n\nexport const Pools = () => {\n const title = 'Earn';\n const subtitle =\n 'Deposit a single token and maintain 100% upside exposure while earning fees and rewards.';\n\n return (\n \n \n }\n >\n <>\n
\n All V3 tokens are eligible for Single-Sided Staking and 100%\n Instant Impermanent Loss Protection.{' '}\n
\n \n openNewTab(\n 'https://support.bancor.network/hc/en-us/articles/5478576660242-What-is-a-whitelisted-pool'\n )\n }\n className=\"hover:underline text-primary cursor-pointer\"\n >\n Read more\n
\n \n \n V3\n \n \n
V2
}\n />\n
\n
\n }\n >\n \n
\n );\n};\n","export const AddLiquiditySingleInfoBox = () => {\n return (\n
\n

\n Learn what it means to add liquidity to a pool:\n

\n
    \n
  1. \n \n 1. How do I make money by providing liquidity?\n \n
  2. \n
  3. \n \n 2. What is impermanent loss?\n \n
  4. \n
  5. \n \n 3. How does Bancor protect me from impermanent loss?\n \n
  6. \n
\n
\n );\n};\n","import { useAppSelector } from 'store';\nimport { getV2PoolsWithoutV3 } from 'store/bancor/pool';\nimport { SelectPool } from 'components/selectPool/SelectPool';\nimport { Pool } from 'services/observables/pools';\nimport { useNavigation } from 'hooks/useNavigation';\n\ninterface Props {\n pool: Pool;\n}\n\nexport const AddLiquiditySingleSelectPool = ({ pool }: Props) => {\n const { goToPage } = useNavigation();\n const pools = useAppSelector(getV2PoolsWithoutV3);\n\n const onSelect = (pool: Pool) => {\n goToPage.addLiquidityV2(pool.pool_dlt_id);\n };\n\n return (\n
\n \n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { useCallback, useEffect, useState } from 'react';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { useInterval } from 'hooks/useInterval';\nimport BigNumber from 'bignumber.js';\nimport { ReactComponent as IconBell } from 'assets/icons/bell.svg';\nimport { useAppSelector } from 'store';\nimport { getTokenById } from 'store/bancor/bancor';\nimport {\n checkPriceDeviationTooHigh,\n fetchBntNeededToOpenSpace,\n getSpaceAvailable,\n} from 'services/web3/liquidity/liquidity';\nimport { Pool } from 'services/observables/pools';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\ninterface Props {\n pool: Pool;\n token: Token;\n selectedToken: Token;\n setSelectedToken: Function;\n setAmount: Function;\n spaceAvailableBnt: string;\n setSpaceAvailableBnt: Function;\n spaceAvailableTkn: string;\n setSpaceAvailableTkn: Function;\n}\n\nexport const AddLiquiditySingleSpaceAvailable = ({\n pool,\n token,\n selectedToken,\n setSelectedToken,\n setAmount,\n spaceAvailableBnt,\n setSpaceAvailableBnt,\n spaceAvailableTkn,\n setSpaceAvailableTkn,\n}: Props) => {\n const bnt = useAppSelector((state: any) =>\n getTokenById(state, pool.reserves[1].address)\n );\n const [showPriceDeviationWarning, setShowPriceDeviationWarning] =\n useState(false);\n const [bntNeeded, setBntNeeded] = useState('');\n\n useInterval(\n async () => {\n await fetchData();\n },\n 15000,\n false\n );\n\n const fetchData = useCallback(async () => {\n try {\n const isPriceDeviationToHigh = await checkPriceDeviationTooHigh(\n pool,\n selectedToken\n );\n setShowPriceDeviationWarning(isPriceDeviationToHigh);\n if (isPriceDeviationToHigh) {\n return;\n }\n const spaceAvailable = await getSpaceAvailable(\n pool.pool_dlt_id,\n token.decimals\n );\n setSpaceAvailableBnt(spaceAvailable.bnt);\n setSpaceAvailableTkn(spaceAvailable.tkn);\n if (selectedToken.symbol !== 'BNT') {\n const isSpaceAvailable = new BigNumber(spaceAvailable.tkn).gt(1);\n if (!isSpaceAvailable) {\n const bntNeeded = await fetchBntNeededToOpenSpace(pool);\n setBntNeeded(bntNeeded);\n } else {\n setBntNeeded('');\n }\n }\n } catch (e: any) {\n console.error('failed to fetch space available with msg: ', e.message);\n }\n }, [\n pool,\n token.decimals,\n selectedToken,\n setSpaceAvailableBnt,\n setSpaceAvailableTkn,\n ]);\n\n useEffect(() => {\n void fetchData();\n }, [fetchData]);\n\n return (\n
\n {showPriceDeviationWarning ? (\n
\n Due to price volatility, protecting your tokens is currently not\n available. Please try again in a few minutes.\n
\n ) : (\n
\n
\n Space Available{' '}\n
\n {selectedToken.symbol === 'BNT' ? (\n \n ) : (\n
\n \n {new BigNumber(spaceAvailableTkn).lte(1) && (\n (\n \n \n \n )}\n />\n )}\n
\n )}\n
\n
\n {bntNeeded && (\n
\n BNT needed to open up space{' '}\n
\n {\n setSelectedToken(bnt);\n setAmount(bntNeeded, bnt);\n }}\n >\n {prettifyNumber(bntNeeded)} BNT\n \n
\n
\n )}\n
\n )}\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { TokenInputField } from 'components/tokenInputField/TokenInputField';\nimport { useEffect } from 'react';\nimport BigNumber from 'bignumber.js';\nimport { Pool } from 'services/observables/pools';\n\ninterface Props {\n pool: Pool;\n token: Token;\n setToken: Function;\n amount: string;\n setAmount: Function;\n amountUsd: string;\n setAmountUsd: Function;\n errorMsg: string;\n setErrorMsg: Function;\n isBNTSelected: boolean;\n}\nexport const AddLiquiditySingleAmount = ({\n pool,\n token,\n setToken,\n amount,\n setAmount,\n amountUsd,\n setAmountUsd,\n errorMsg,\n setErrorMsg,\n isBNTSelected,\n}: Props) => {\n useEffect(() => {\n if (new BigNumber(amount).gt(token.balance || 0)) {\n setErrorMsg('Insufficient Balance');\n } else {\n setErrorMsg('');\n }\n }, [amount, token.balance, setErrorMsg, isBNTSelected]);\n\n return (\n <>\n x.address)}\n input={amount}\n label=\"Deposit Amount\"\n token={token}\n disabled={isBNTSelected}\n amountUsd={amountUsd}\n setAmountUsd={setAmountUsd}\n setToken={(token: Token) => setToken(token)}\n />\n {errorMsg &&
{errorMsg}
}\n \n );\n};\n","import { useAppSelector } from 'store';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { useNavigation } from 'hooks/useNavigation';\nimport { useWalletConnect } from 'elements/walletConnect/useWalletConnect';\n\ninterface Props {\n onStart: Function;\n amount: string;\n errorMsg: string;\n isBNTSelected: boolean;\n}\n\nexport const AddLiquiditySingleCTA = ({\n onStart,\n amount,\n errorMsg,\n isBNTSelected,\n}: Props) => {\n const account = useAppSelector((state) => state.user.account);\n const { handleWalletButtonClick } = useWalletConnect();\n\n const { goToPage } = useNavigation();\n\n const button = () => {\n if (isBNTSelected)\n return {\n label: 'Deposits are available on V3 pool',\n disabled: false,\n variant: ButtonVariant.Secondary,\n };\n if (errorMsg) {\n return {\n label: errorMsg,\n disabled: true,\n variant: ButtonVariant.Secondary,\n };\n }\n if (!amount) {\n return {\n label: 'Enter amount',\n disabled: true,\n variant: ButtonVariant.Primary,\n };\n } else {\n return {\n label: 'Deposit and Protect',\n disabled: false,\n variant: ButtonVariant.Primary,\n };\n }\n };\n\n const onClick = () => {\n if (!account) {\n handleWalletButtonClick();\n } else {\n onStart();\n }\n };\n\n const btn = button();\n\n return (\n (isBNTSelected ? goToPage.earn() : onClick())}\n disabled={btn.disabled}\n variant={btn.variant}\n size={ButtonSize.Full}\n >\n {button().label}\n \n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { Widget } from 'components/widgets/Widget';\nimport { AddLiquiditySingleInfoBox } from './AddLiquiditySingleInfoBox';\nimport { AddLiquiditySingleSelectPool } from './AddLiquiditySingleSelectPool';\nimport { AddLiquiditySingleSpaceAvailable } from 'elements/earn/pools/addLiquidity/single/AddLiquiditySingleSpaceAvailable';\nimport { useAppSelector } from 'store';\nimport { AddLiquiditySingleAmount } from 'elements/earn/pools/addLiquidity/single/AddLiquiditySingleAmount';\nimport { useCallback, useState } from 'react';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { AddLiquiditySingleCTA } from 'elements/earn/pools/addLiquidity/single/AddLiquiditySingleCTA';\nimport { useDispatch } from 'react-redux';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport BigNumber from 'bignumber.js';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { addLiquidityV2Single } from 'services/web3/liquidity/liquidity';\nimport {\n addLiquiditySingleFailedNotification,\n addLiquiditySingleNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { ApprovalContract } from 'services/web3/approval';\nimport {\n ConversionEvents,\n sendLiquidityApprovedEvent,\n sendLiquidityEvent,\n sendLiquidityFailEvent,\n sendLiquiditySuccessEvent,\n setCurrentLiquidity,\n} from 'services/api/googleTagManager';\nimport { useWeb3React } from '@web3-react/core';\nimport { Pool } from 'services/observables/pools';\nimport { useNavigation } from 'hooks/useNavigation';\nimport { fetchProtectedPositions } from 'services/web3/protection/positions';\nimport { setProtectedPositions } from 'store/liquidity/liquidity';\n\ninterface Props {\n pool: Pool;\n}\n\nexport const AddLiquiditySingle = ({ pool }: Props) => {\n const { chainId } = useWeb3React();\n const dispatch = useDispatch();\n const tkn = useAppSelector((state: any) =>\n getTokenById(state, pool.reserves[0].address)\n );\n const bnt = useAppSelector((state: any) =>\n getTokenById(state, pool.reserves[1].address)\n );\n const { goToPage } = useNavigation();\n\n const [isBNTSelected, setIsBNTSelected] = useState(false);\n const [amount, setAmount] = useState('');\n const [amountUsd, setAmountUsd] = useState('');\n const [errorMsg, setErrorMsg] = useState('');\n const [spaceAvailableBnt, setSpaceAvailableBnt] = useState('');\n const [spaceAvailableTkn, setSpaceAvailableTkn] = useState('');\n const fiatToggle = useAppSelector((state) => state.user.usdToggle);\n const pools = useAppSelector((state) => state.pool.v2Pools);\n const account = useAppSelector((state) => state.user.account);\n\n const selectedToken = isBNTSelected ? bnt! : tkn!;\n const setSelectedToken = useCallback(\n (token: Token) => {\n const isBNT = token.address === bnt!.address;\n setIsBNTSelected(isBNT);\n },\n [bnt]\n );\n\n const handleAmountChange = (amount: string, tkn?: Token) => {\n setAmount(amount);\n const usdAmount = new BigNumber(amount)\n .times(tkn ? tkn.usdPrice! : selectedToken.usdPrice!)\n .toString();\n setAmountUsd(usdAmount);\n };\n\n const addV2Protection = async () => {\n const cleanAmount = prettifyNumber(amount);\n let transactionId: string;\n await addLiquidityV2Single(\n pool,\n selectedToken,\n amount,\n (txHash: string) => {\n transactionId = txHash;\n addLiquiditySingleNotification(\n dispatch,\n txHash,\n cleanAmount,\n selectedToken.symbol,\n pool.name\n );\n },\n async () => {\n sendLiquiditySuccessEvent(transactionId);\n const positions = await fetchProtectedPositions(pools, account!);\n dispatch(setProtectedPositions(positions));\n if (window.location.pathname.includes(pool.pool_dlt_id))\n goToPage.portfolioV2();\n },\n () => {\n sendLiquidityFailEvent('User rejected transaction');\n rejectNotification(dispatch);\n },\n (errorMsg) => {\n sendLiquidityFailEvent(errorMsg);\n addLiquiditySingleFailedNotification(\n dispatch,\n cleanAmount,\n selectedToken.symbol,\n pool.name\n );\n }\n );\n };\n\n const [onStart, ModalApprove] = useApproveModal(\n [{ amount, token: selectedToken }],\n addV2Protection,\n ApprovalContract.LiquidityProtection,\n sendLiquidityEvent,\n sendLiquidityApprovedEvent\n );\n\n const handleError = useCallback(() => {\n if (errorMsg) return errorMsg;\n if (!spaceAvailableBnt || !spaceAvailableTkn) {\n return '';\n }\n if (selectedToken.symbol === 'BNT') {\n const isSpaceAvailable = new BigNumber(spaceAvailableBnt).gte(\n amount || 0\n );\n if (isSpaceAvailable) {\n return '';\n } else {\n return 'Not enough space available';\n }\n } else {\n const isSpaceAvailable = new BigNumber(spaceAvailableTkn).gte(\n amount || 0\n );\n if (isSpaceAvailable) {\n return '';\n } else {\n return 'Not enough space available';\n }\n }\n }, [\n amount,\n errorMsg,\n selectedToken.symbol,\n spaceAvailableBnt,\n spaceAvailableTkn,\n ]);\n\n const handleCTAClick = useCallback(() => {\n setCurrentLiquidity(\n 'Deposit Single',\n chainId,\n pool.name,\n selectedToken.symbol,\n amount,\n amountUsd,\n undefined,\n undefined,\n fiatToggle\n );\n sendLiquidityEvent(ConversionEvents.click);\n onStart();\n }, [\n amount,\n amountUsd,\n chainId,\n fiatToggle,\n onStart,\n pool.name,\n selectedToken.symbol,\n ]);\n\n if (!tkn) {\n goToPage.notFound();\n return <>;\n }\n\n return (\n \n \n
\n \n \n
\n \n \n {ModalApprove}\n \n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { TokenInputField } from 'components/tokenInputField/TokenInputField';\nimport { useEffect, useState } from 'react';\nimport BigNumber from 'bignumber.js';\n\ninterface Props {\n bnt: Token;\n tkn: Token;\n tknAmount: string;\n setTknAmount: Function;\n bntAmount: string;\n setBntAmount: Function;\n bntTknRate: string;\n errorBalanceBnt: string;\n setErrorBalanceBnt: Function;\n errorBalanceTkn: string;\n setErrorBalanceTkn: Function;\n}\n\nexport const AddLiquidityDualStakeAmount = ({\n bnt,\n tkn,\n tknAmount,\n setTknAmount,\n bntAmount,\n setBntAmount,\n bntTknRate,\n errorBalanceBnt,\n setErrorBalanceBnt,\n errorBalanceTkn,\n setErrorBalanceTkn,\n}: Props) => {\n const [bntAmountUsd, setBntAmountUsd] = useState('');\n const [tknAmountUsd, setTknAmountUsd] = useState('');\n\n const onBntAmountChange = (amount: string) => {\n setBntAmount(amount);\n if (amount === '') {\n setTknAmount('');\n setTknAmountUsd('');\n return;\n }\n const tknAmount = new BigNumber(amount).times(bntTknRate).toString();\n setTknAmount(tknAmount);\n const tknAmountUsd = new BigNumber(tknAmount)\n .times(tkn.usdPrice!)\n .toString();\n setTknAmountUsd(tknAmountUsd);\n };\n\n const onTknAmountChange = (amount: string) => {\n setTknAmount(amount);\n if (amount === '') {\n setBntAmount('');\n setBntAmountUsd('');\n return;\n }\n const bntAmount = new BigNumber(amount).div(bntTknRate).toString();\n setBntAmount(bntAmount);\n const bntAmountUsd = new BigNumber(bntAmount)\n .times(bnt.usdPrice!)\n .toString();\n setBntAmountUsd(bntAmountUsd);\n };\n\n useEffect(() => {\n if (new BigNumber(bntAmount).gt(bnt.balance || 0)) {\n setErrorBalanceBnt('Insufficient Balance');\n } else {\n setErrorBalanceBnt('');\n }\n\n if (new BigNumber(tknAmount).gt(tkn.balance || 0)) {\n setErrorBalanceTkn('Insufficient Balance');\n } else {\n setErrorBalanceTkn('');\n }\n }, [\n bntAmount,\n bnt.balance,\n setErrorBalanceBnt,\n tknAmount,\n tkn.balance,\n setErrorBalanceTkn,\n ]);\n\n return (\n
\n
Enter stake amount
\n
\n onBntAmountChange(amount)}\n amountUsd={bntAmountUsd}\n setAmountUsd={setBntAmountUsd}\n token={bnt}\n selectable={false}\n border\n />\n {errorBalanceBnt && (\n
{errorBalanceBnt}
\n )}\n
\n
\n onTknAmountChange(amount)}\n amountUsd={tknAmountUsd}\n setAmountUsd={setTknAmountUsd}\n token={tkn}\n selectable={false}\n border\n />\n {errorBalanceTkn && (\n
{errorBalanceTkn}
\n )}\n
\n
\n );\n};\n","import { useDispatch } from 'react-redux';\nimport { useApproveModal } from 'hooks/useApproveModal';\nimport { Token } from 'services/observables/tokens';\nimport { addLiquidity } from 'services/web3/liquidity/liquidity';\nimport {\n addLiquidityFailedNotification,\n addLiquidityNotification,\n rejectNotification,\n} from 'services/notifications/notifications';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { useCallback } from 'react';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { useAppSelector } from 'store';\nimport { Pool } from 'services/observables/pools';\nimport { useNavigation } from 'hooks/useNavigation';\nimport { useWalletConnect } from 'elements/walletConnect/useWalletConnect';\n\ninterface Props {\n pool: Pool;\n bnt: Token;\n tkn: Token;\n amountBnt: string;\n amountTkn: string;\n errorMsg?: string;\n}\n\nexport const AddLiquidityEmptyCTA = ({\n pool,\n bnt,\n tkn,\n amountBnt,\n amountTkn,\n errorMsg,\n}: Props) => {\n const dispatch = useDispatch();\n const account = useAppSelector((state) => state.user.account);\n const { handleWalletButtonClick } = useWalletConnect();\n const { goToPage } = useNavigation();\n\n const handleAddLiquidity = useCallback(async () => {\n const cleanTkn = prettifyNumber(amountTkn);\n const cleanBnt = prettifyNumber(amountBnt);\n await addLiquidity(\n amountBnt,\n bnt,\n amountTkn,\n tkn,\n pool.converter_dlt_id,\n (txHash: string) =>\n addLiquidityNotification(\n dispatch,\n txHash,\n cleanTkn,\n tkn.symbol,\n cleanBnt,\n bnt.symbol,\n pool.name\n ),\n () => {\n if (window.location.pathname.includes(pool.pool_dlt_id))\n goToPage.portfolioV2();\n },\n () => rejectNotification(dispatch),\n () =>\n addLiquidityFailedNotification(\n dispatch,\n cleanTkn,\n tkn.symbol,\n cleanBnt,\n bnt.symbol,\n pool.name\n )\n );\n }, [\n amountTkn,\n amountBnt,\n bnt,\n tkn,\n pool.converter_dlt_id,\n pool.name,\n pool.pool_dlt_id,\n dispatch,\n goToPage,\n ]);\n\n const [onStart, ModalApprove] = useApproveModal(\n [\n { amount: amountBnt, token: bnt },\n { amount: amountTkn, token: tkn },\n ],\n handleAddLiquidity,\n pool.converter_dlt_id\n );\n\n const button = () => {\n if (errorMsg) {\n return {\n label: errorMsg,\n disabled: true,\n variant: ButtonVariant.Secondary,\n };\n }\n if (!amountBnt || !amountTkn) {\n return {\n label: 'Enter amount',\n disabled: true,\n variant: ButtonVariant.Primary,\n };\n } else {\n return {\n label: 'Supply',\n disabled: false,\n variant: ButtonVariant.Primary,\n };\n }\n };\n\n const btn = button();\n\n const onClick = () => {\n if (!account) {\n handleWalletButtonClick();\n } else {\n onStart();\n }\n };\n\n return (\n <>\n onClick()}\n variant={btn.variant}\n disabled={btn.disabled}\n size={ButtonSize.Full}\n className=\"mt-20 disabled:bg-silver dark:disabled:bg-charcoal\"\n >\n {btn.label}\n \n {ModalApprove}\n \n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport BigNumber from 'bignumber.js';\n\ninterface Props {\n bnt: Token;\n tkn: Token;\n bntTknRate: string;\n}\n\nexport const AddLiquidityDualTokenPrices = ({\n bnt,\n tkn,\n bntTknRate,\n}: Props) => {\n const bntTknRateUsd = () => {\n return new BigNumber(tkn.usdPrice!).times(bntTknRate);\n };\n\n const rateString = () => {\n return `${prettifyNumber(bntTknRate)} ${tkn.symbol} (${prettifyNumber(\n bntTknRateUsd(),\n true\n )})`;\n };\n return (\n
\n
Tokens prices
\n {[bnt, tkn].map((t) => (\n
\n
1 {t.symbol} =
\n
\n {prettifyNumber(t.usdPrice!, true)}\n
\n
\n ))}\n
\n
1 BNT ({prettifyNumber(bnt.usdPrice!, true)}) =
\n
{rateString()}
\n
\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { Widget } from 'components/widgets/Widget';\nimport { AddLiquidityDualStakeAmount } from 'elements/earn/pools/addLiquidity/dual/AddLiquidityDualStakeAmount';\nimport { useAppSelector } from 'store';\nimport { getTokenById } from 'store/bancor/bancor';\nimport { useState } from 'react';\n\nimport { AddLiquidityEmptyCTA } from 'elements/earn/pools/addLiquidity/empty/AddLiquidityEmptyCTA';\nimport { AddLiquidityDualTokenPrices } from 'elements/earn/pools/addLiquidity/dual/AddLiquidityDualTokenPrices';\nimport BigNumber from 'bignumber.js';\nimport { Pool } from 'services/observables/pools';\nimport { useNavigation } from 'hooks/useNavigation';\n\ninterface Props {\n pool: Pool;\n reserveBalances: { tknBalance: string; bntBalance: string };\n}\n\nexport const AddLiquidityDual = ({ pool, reserveBalances }: Props) => {\n const [tknReserve, bntReserve] = pool.reserves;\n const tkn = useAppSelector((state: any) =>\n getTokenById(state, tknReserve.address)\n );\n const bnt = useAppSelector((state: any) =>\n getTokenById(state, bntReserve.address)\n );\n\n const { goToPage } = useNavigation();\n const [tknAmount, setTknAmount] = useState('');\n const [bntAmount, setBntAmount] = useState('');\n const [errorBalanceBnt, setErrorBalanceBnt] = useState('');\n const [errorBalanceTkn, setErrorBalanceTkn] = useState('');\n\n const bntTknRate = () => {\n const rate = new BigNumber(reserveBalances.tknBalance).div(\n reserveBalances.bntBalance\n );\n return rate.toString();\n };\n\n const tknWithUsd = (): Token => {\n const tknWithUsd = { ...tkn };\n if (bnt && tknWithUsd && new BigNumber(tknWithUsd.usdPrice ?? 0).eq(0)) {\n tknWithUsd.usdPrice = new BigNumber(bntTknRate())\n .div(bnt.usdPrice!)\n .toString();\n }\n return tknWithUsd as Token;\n };\n\n if (!tkn || !bnt) {\n goToPage.notFound();\n return <>;\n }\n\n return (\n \n \n
\n \n \n
\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport BigNumber from 'bignumber.js';\nimport { sanitizeNumberInput } from 'utils/pureFunctions';\n\ninterface Props {\n bnt: Token;\n tkn: Token;\n bntTknRate: string;\n tknUsdPrice: string;\n setTknUsdPrice: Function;\n}\n\nexport const AddLiquidityEmptyStep1 = ({\n bnt,\n tkn,\n tknUsdPrice,\n setTknUsdPrice,\n bntTknRate,\n}: Props) => {\n return (\n
\n
\n
\n 1\n
\n
Please enter the token prices
\n
\n
\n
\n
1 BNT =
\n \n
\n
\n
1 {tkn.symbol} =
\n \n setTknUsdPrice(sanitizeNumberInput(e.target.value))\n }\n />\n
\n
\n
\n 1 BNT ({prettifyNumber(bnt.usdPrice!, true)}) ={' '}\n {new BigNumber(tknUsdPrice).gt(0) ? prettifyNumber(bntTknRate) : 0}{' '}\n {tkn.symbol} (\n {prettifyNumber(new BigNumber(bntTknRate).times(tknUsdPrice), true)})\n
\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { TokenInputField } from 'components/tokenInputField/TokenInputField';\nimport { useEffect, useState } from 'react';\nimport BigNumber from 'bignumber.js';\n\ninterface Props {\n bnt: Token;\n tkn: Token;\n tknAmount: string;\n setTknAmount: Function;\n bntAmount: string;\n setBntAmount: Function;\n bntTknRate: string;\n tknUsdPrice: string;\n errorBalanceBnt: string;\n setErrorBalanceBnt: Function;\n errorBalanceTkn: string;\n setErrorBalanceTkn: Function;\n}\n\nexport const AddLiquidityEmptyStep2 = ({\n bnt,\n tkn,\n tknAmount,\n setTknAmount,\n bntAmount,\n setBntAmount,\n bntTknRate,\n tknUsdPrice,\n errorBalanceBnt,\n setErrorBalanceBnt,\n errorBalanceTkn,\n setErrorBalanceTkn,\n}: Props) => {\n const [bntAmountUsd, setBntAmountUsd] = useState('');\n const [tknAmountUsd, setTknAmountUsd] = useState('');\n\n useEffect(() => {\n setBntAmountUsd('');\n setTknAmountUsd('');\n }, [tknUsdPrice]);\n\n const tknWithPrice: Token = { ...tkn, usdPrice: tknUsdPrice };\n\n const onBntAmountChange = (amount: string) => {\n setBntAmount(amount);\n if (amount === '') {\n setTknAmount('');\n setTknAmountUsd('');\n return;\n }\n const tknAmount = new BigNumber(amount).times(bntTknRate).toString();\n setTknAmount(tknAmount);\n const tknAmountUsd = new BigNumber(tknAmount).times(tknUsdPrice).toString();\n setTknAmountUsd(tknAmountUsd);\n };\n\n const onTknAmountChange = (amount: string) => {\n setTknAmount(amount);\n if (amount === '') {\n setBntAmount('');\n setBntAmountUsd('');\n return;\n }\n const bntAmount = new BigNumber(amount).div(bntTknRate).toString();\n setBntAmount(bntAmount);\n const bntAmountUsd = new BigNumber(bntAmount)\n .times(bnt.usdPrice!)\n .toString();\n setBntAmountUsd(bntAmountUsd);\n };\n\n useEffect(() => {\n if (new BigNumber(bntAmount).gt(bnt.balance || 0)) {\n setErrorBalanceBnt('Insufficient Balance');\n } else {\n setErrorBalanceBnt('');\n }\n\n if (new BigNumber(tknAmount).gt(tkn.balance || 0)) {\n setErrorBalanceTkn('Insufficient Balance');\n } else {\n setErrorBalanceTkn('');\n }\n }, [\n bntAmount,\n bnt.balance,\n setErrorBalanceBnt,\n tknAmount,\n tkn.balance,\n setErrorBalanceTkn,\n ]);\n\n return (\n
\n
\n \n 2\n
\n \n Enter deposit amount\n
\n \n
\n onBntAmountChange(amount)}\n amountUsd={bntAmountUsd}\n setAmountUsd={setBntAmountUsd}\n token={bnt}\n selectable={false}\n disabled={!tknUsdPrice}\n />\n {errorBalanceBnt && (\n
{errorBalanceBnt}
\n )}\n
\n
\n onTknAmountChange(amount)}\n amountUsd={tknAmountUsd}\n setAmountUsd={setTknAmountUsd}\n token={tknWithPrice}\n selectable={false}\n disabled={!tknUsdPrice}\n />\n {errorBalanceTkn && (\n
{errorBalanceTkn}
\n )}\n
\n \n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { Widget } from 'components/widgets/Widget';\nimport { AddLiquidityEmptyStep1 } from 'elements/earn/pools/addLiquidity/empty/AddLiquidityEmptyStep1';\nimport { useEffect, useState } from 'react';\nimport { AddLiquidityEmptyStep2 } from 'elements/earn/pools/addLiquidity/empty/AddLiquidityEmptyStep2';\nimport { useAppSelector } from 'store';\nimport { getTokenById } from 'store/bancor/bancor';\nimport BigNumber from 'bignumber.js';\n\nimport { AddLiquidityEmptyCTA } from 'elements/earn/pools/addLiquidity/empty/AddLiquidityEmptyCTA';\nimport { Pool } from 'services/observables/pools';\nimport { useNavigation } from 'hooks/useNavigation';\n\ninterface Props {\n pool: Pool;\n}\n\nexport const AddLiquidityEmpty = ({ pool }: Props) => {\n const [tknReserve, bntReserve] = pool.reserves;\n const tkn = useAppSelector((state: any) =>\n getTokenById(state, tknReserve.address)\n );\n const bnt = useAppSelector((state: any) =>\n getTokenById(state, bntReserve.address)\n );\n const [tknAmount, setTknAmount] = useState('');\n const [bntAmount, setBntAmount] = useState('');\n const [errorBalanceBnt, setErrorBalanceBnt] = useState('');\n const [errorBalanceTkn, setErrorBalanceTkn] = useState('');\n const [tknUsdPrice, setTknUsdPrice] = useState('');\n useEffect(() => {\n setBntAmount('');\n setTknAmount('');\n }, [tknUsdPrice]);\n\n const { goToPage } = useNavigation();\n\n if (!tkn || !bnt) {\n goToPage.notFound();\n return <>;\n }\n\n const bntTknRate = () => {\n return new BigNumber(bnt.usdPrice!).div(tknUsdPrice).toString();\n };\n return (\n \n \n
\n \n \n
\n
\n );\n};\n","import { getPoolByIdWithoutV3, SelectedPool } from 'store/bancor/pool';\nimport { AddLiquiditySingle } from 'elements/earn/pools/addLiquidity/single/AddLiquiditySingle';\nimport { AddLiquidityDual } from 'elements/earn/pools/addLiquidity/dual/AddLiquidityDual';\nimport { AddLiquidityEmpty } from 'elements/earn/pools/addLiquidity/empty/AddLiquidityEmpty';\nimport { useAppSelector } from 'store';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport BigNumber from 'bignumber.js';\nimport { WidgetLoading } from 'components/widgets/WidgetLoading';\nimport { WidgetError } from 'components/widgets/WidgetError';\nimport { fetchReserveBalances } from 'services/web3/liquidity/liquidity';\nimport { useParams } from 'react-router-dom';\n\nexport const AddLiquidity = React.memo(() => {\n const { id } = useParams();\n const { status, pool } = useAppSelector(\n getPoolByIdWithoutV3(id || '')\n );\n const [isCheckingType, setIsCheckingType] = useState(false);\n const [type, setType] = useState('');\n const [reserveBalances, setReserveBalances] = useState({\n tknBalance: '0',\n bntBalance: '0',\n });\n\n const checkType = useCallback(async () => {\n if (!pool) {\n return;\n }\n setIsCheckingType(true);\n if (pool.isProtected) {\n setType('single');\n } else {\n const { tknBalance, bntBalance } = await fetchReserveBalances(pool);\n setReserveBalances({ tknBalance, bntBalance });\n const isPoolEmpty = [tknBalance, bntBalance].some((b) =>\n new BigNumber(b).eq(0)\n );\n\n if (isPoolEmpty) {\n setType('empty');\n } else {\n setType('dual');\n }\n }\n setIsCheckingType(false);\n }, [pool]);\n\n useEffect(() => {\n void checkType();\n }, [id, checkType]);\n\n const isLoading = () => {\n return status === 'loading' || isCheckingType;\n };\n\n return (\n
\n {isLoading() ? (\n \n ) : (\n
\n {!pool ? (\n \n ) : (\n
\n {type === 'single' && }\n {type === 'dual' && (\n \n )}\n {type === 'empty' && }\n
\n )}\n
\n )}\n
\n );\n});\n","import { Popover } from '@headlessui/react';\nimport { DropdownTransition } from 'components/transitions/DropdownTransition';\nimport { ReactComponent as IconChevronDown } from 'assets/icons/chevronDown.svg';\nimport { Switch } from 'components/switch/Switch';\n\nexport const PoolsTableSort = ({\n rewards,\n setRewards,\n lowVolume,\n setLowVolume,\n lowLiquidity,\n setLowLiquidity,\n lowEarnRate,\n setLowEarnRate,\n}: {\n rewards?: boolean;\n setRewards?: Function;\n lowVolume: boolean;\n setLowVolume: Function;\n lowLiquidity: boolean;\n setLowLiquidity: Function;\n lowEarnRate: boolean;\n setLowEarnRate: Function;\n}) => {\n return (\n \n \n Filter\n \n \n \n \n
\n
\n {setRewards && (\n
\n Rewards only\n setRewards(!rewards)}\n />\n
\n )}\n
\n Show Low Volume\n setLowVolume(!lowVolume)}\n />\n
\n
\n Show Low Liquidity\n setLowLiquidity(!lowLiquidity)}\n />\n
\n
\n Low Earn Rate\n setLowEarnRate(!lowEarnRate)}\n />\n
\n
\n
\n
\n
\n
\n );\n};\n","import { useAppSelector } from 'store';\nimport './Statistics.css';\n\nexport const Statistics = () => {\n const stats = useAppSelector((state) => state.bancor.statistics);\n const first = stats[0];\n\n return (\n
\n {!stats.length ? (\n [...Array(4)].map((_, i) => (\n
\n
\n
\n
\n ))\n ) : (\n
\n
\n
\n
{first.label}
\n
\n {first.value}\n
\n
\n
\n
\n
\n {stats.slice(1).map((item, i) => (\n
\n
\n
\n
{item.label}
\n
\n {item.value}\n
\n
\n
\n
\n ))}\n
\n
\n )}\n
\n );\n};\n","import { Ticker } from 'components/ticker/Ticker';\nimport { useAppSelector } from 'store';\nimport { getTopPoolsV3 } from 'store/bancor/pool';\nimport { ReactComponent as IconGift } from 'assets/icons/gift.svg';\nimport { Image } from 'components/image/Image';\nimport { DepositV3Modal } from './poolsTable/v3/DepositV3Modal';\n\nexport const TopPools = () => {\n const pools = useAppSelector(getTopPoolsV3);\n\n return (\n
\n

Top Performing

\n \n
\n {pools.length\n ? pools.map((pool, index) => {\n return (\n (\n \n \n
\n
\n {pool.reserveToken.symbol}\n
\n
\n {pool.apr.total.toFixed(2)}%\n {pool.latestProgram?.isActive && (\n \n )}\n
\n
\n \n )}\n />\n );\n })\n : [...Array(20)].map((_, index) => (\n
\n ))}\n \n
\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { useCallback, useMemo, useState } from 'react';\nimport { SortingRule } from 'react-table';\nimport { DataTable, TableColumn } from 'components/table/DataTable';\nimport { useAppSelector } from 'store';\nimport { SearchInput } from 'components/searchInput/SearchInput';\nimport { ReactComponent as IconGift } from 'assets/icons/gift.svg';\nimport { PoolsTableSort } from './PoolsTableFilter';\nimport { PoolV3 } from 'services/observables/pools';\nimport { DepositV3Modal } from 'elements/earn/pools/poolsTable/v3/DepositV3Modal';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { Statistics } from 'elements/earn/pools/Statistics';\nimport { TopPools } from 'elements/earn/pools/TopPools';\nimport { sortNumbersByKey } from 'utils/pureFunctions';\nimport { Navigate } from 'components/navigate/Navigate';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\nimport { Image } from 'components/image/Image';\n\nexport const PoolsTable = ({\n rewards,\n setRewards,\n lowVolume,\n setLowVolume,\n lowLiquidity,\n setLowLiquidity,\n lowEarnRate,\n setLowEarnRate,\n}: {\n rewards: boolean;\n setRewards: Function;\n lowVolume: boolean;\n setLowVolume: Function;\n lowLiquidity: boolean;\n setLowLiquidity: Function;\n lowEarnRate: boolean;\n setLowEarnRate: Function;\n}) => {\n const pools = useAppSelector((state) => state.pool.v3Pools);\n\n const [search, setSearch] = useState('');\n\n const data = useMemo(() => {\n return pools.filter(\n (p) =>\n p.name &&\n p.name.toLowerCase().includes(search.toLowerCase()) &&\n (lowVolume || Number(p.volume24h.usd) > 5000) &&\n (lowLiquidity || Number(p.tradingLiquidityTKN.usd) > 50000) &&\n (lowEarnRate || p.apr.total > 0.15)\n );\n }, [pools, search, lowVolume, lowLiquidity, lowEarnRate]);\n\n const toolTip = useCallback(\n (row: PoolV3) => (\n
\n
\n Liquidity\n
{prettifyNumber(row.stakedBalance.usd, true)}
\n
\n
\n Volume 24h\n
{prettifyNumber(row.volume24h.usd, true)}
\n
\n
\n Fees 24h\n
{prettifyNumber(row.fees24h.usd, true)}
\n
\n
\n ),\n []\n );\n\n const columns = useMemo[]>(\n () => [\n {\n id: 'name',\n Header: 'Name',\n accessor: 'name',\n Cell: (cellData) => (\n (\n
\n \n {cellData.value}\n
\n )}\n />\n ),\n minWidth: 100,\n sortDescFirst: true,\n },\n {\n id: 'apr',\n Header: 'Earn',\n accessor: 'apr',\n Cell: (cellData) => (\n
\n {cellData.value.total.toFixed(2)}%\n {cellData.row.original.latestProgram?.isActive && (\n <>\n }\n >\n
\n Rewards enabled on this token.{' '}\n \n Read about the rewards here\n \n
\n \n \n )}\n
\n ),\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, ['apr', 'total']),\n tooltip: 'Rewards enabled on this token. Read about the rewards here',\n minWidth: 130,\n sortDescFirst: true,\n },\n {\n id: 'actions',\n Header: '',\n accessor: 'poolDltId',\n Cell: (cellData) => (\n (\n \n Deposit\n \n )}\n />\n ),\n width: 50,\n minWidth: 50,\n disableSortBy: true,\n },\n ],\n [toolTip]\n );\n\n const defaultSort: SortingRule = {\n id: 'apr',\n desc: true,\n };\n\n return (\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n \n data={data}\n columns={columns}\n defaultSort={defaultSort}\n isLoading={!pools.length}\n search={search}\n />\n
\n
\n
\n \n \n
\n
\n );\n};\n","import { Token } from 'services/observables/tokens';\nimport { ReactComponent as IconProtected } from 'assets/icons/protected.svg';\nimport { useMemo, useState } from 'react';\nimport { SortingRule } from 'react-table';\nimport { DataTable, TableColumn } from 'components/table/DataTable';\nimport { useAppSelector } from 'store';\nimport { PoolsTableCellName } from 'elements/earn/pools/poolsTable/PoolsTableCellName';\nimport { PoolsTableCellApr } from 'elements/earn/pools/poolsTable/PoolsTableCellApr';\nimport { SearchInput } from 'components/searchInput/SearchInput';\nimport { PoolsTableCellActions } from './PoolsTableCellActions';\nimport { PoolsTableSort } from './PoolsTableFilter';\nimport { Pool } from 'services/observables/pools';\nimport { prettifyNumber } from 'utils/helperFunctions';\nimport { sortNumbersByKey } from 'utils/pureFunctions';\nimport { getV2PoolsWithoutV3 } from 'store/bancor/pool';\n\nexport const EarnTableV2 = ({\n lowVolume,\n setLowVolume,\n lowLiquidity,\n setLowLiquidity,\n lowEarnRate,\n setLowEarnRate,\n}: {\n lowVolume: boolean;\n setLowVolume: Function;\n lowLiquidity: boolean;\n setLowLiquidity: Function;\n lowEarnRate: boolean;\n setLowEarnRate: Function;\n}) => {\n const pools = useAppSelector(getV2PoolsWithoutV3);\n\n const [search, setSearch] = useState('');\n\n const data = useMemo(() => {\n return pools\n .filter((p) => p.version >= 28)\n .filter(\n (p) =>\n p.name &&\n p.name.toLowerCase().includes(search.toLowerCase()) &&\n (lowVolume || p.volume_24h > 5000) &&\n (lowLiquidity || p.liquidity > 50000) &&\n (lowEarnRate || p.apr > 0.15)\n );\n }, [pools, search, lowVolume, lowLiquidity, lowEarnRate]);\n\n const columns = useMemo[]>(\n () => [\n {\n id: 'name',\n Header: 'Name',\n accessor: 'name',\n Cell: (cellData) => PoolsTableCellName(cellData.row.original),\n minWidth: 200,\n sortDescFirst: true,\n },\n {\n id: 'isProtected',\n Header: 'Protected',\n accessor: 'isProtected',\n headerClassName: 'justify-center',\n Cell: (cellData) =>\n cellData.value ? (\n
\n \n
\n ) : (\n
\n ),\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, ['isProtected']),\n minWidth: 140,\n width: 140,\n sortDescFirst: true,\n },\n {\n id: 'liquidity',\n Header: 'Liquidity',\n accessor: 'liquidity',\n Cell: (cellData) => prettifyNumber(cellData.value, true),\n sortType: (a, b) =>\n sortNumbersByKey(a.original, b.original, ['liquidity']),\n tooltip: 'The value of tokens staked in the pool.',\n minWidth: 130,\n sortDescFirst: true,\n },\n {\n id: 'apr',\n Header: 'APR',\n accessor: 'apr',\n Cell: (cellData) => PoolsTableCellApr(cellData.row.original),\n minWidth: 180,\n disableSortBy: true,\n tooltip:\n 'Estimated APR based on the maximum (2x multiplier) weekly BNT Liquidity Mining rewards. Counter indicates time until 12-week rewards cycle concludes.',\n },\n {\n id: 'actions',\n Header: '',\n accessor: 'pool_dlt_id',\n Cell: (cellData) => PoolsTableCellActions(cellData.value),\n width: 50,\n minWidth: 50,\n disableSortBy: true,\n },\n ],\n []\n );\n\n const defaultSort: SortingRule = { id: 'liquidity', desc: true };\n\n return (\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n \n data={data}\n columns={columns}\n defaultSort={defaultSort}\n isLoading={!pools.length}\n search={search}\n stickyColumn\n />\n
\n
\n );\n};\n","import { Pool } from 'services/observables/pools';\nimport { Image } from 'components/image/Image';\n\nexport const PoolsTableCellName = (pool: Pool) => {\n return (\n
\n \n

\n {pool.isProtected ? pool.name.replace('/BNT', '') : pool.name}\n

\n
\n );\n};\n","import { Pool } from 'services/observables/pools';\n\nexport const PoolsTableCellApr = (pool: Pool) => {\n const aprOne = pool.reserves[0].rewardApr || 0;\n const aprTwo = pool.reserves[1].rewardApr || 0;\n const symbolOne = pool.reserves[0].symbol;\n const symbolTwo = pool.reserves[1].symbol;\n const formatApr = (rewardApr: number) => (rewardApr + pool.apr).toFixed(2);\n return (\n
\n {`${symbolOne} ${formatApr(aprOne)}%`}\n |\n {`${symbolTwo} ${formatApr(aprTwo)}%`}\n
\n );\n};\n","import { Navigate } from 'components/navigate/Navigate';\nimport { Button, ButtonSize, ButtonVariant } from 'components/button/Button';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { PopoverV3 } from 'components/popover/PopoverV3';\n\nexport const PoolsTableCellActions = (id: string) => {\n return (\n \n (\n \n )}\n >\n Deposit & Earn\n \n \n );\n};\n","import { RouteObject, useRoutes } from 'react-router-dom';\nimport { useRoutesTrade } from 'router/useRoutesTrade';\nimport { useRoutesPortfolio } from 'router/useRoutesPortfolio';\nimport { useRoutesMain } from 'router/useRoutesMain';\nimport { useRoutesEarn } from 'router/useRoutesEarn';\nimport { useRoutesRedirect } from 'router/useRoutesRedirect';\n\nexport const BancorRouter = () => {\n const routes: RouteObject[] = [\n ...useRoutesTrade(),\n ...useRoutesEarn(),\n ...useRoutesPortfolio(),\n ...useRoutesMain(),\n ...useRoutesRedirect(),\n ];\n\n const element = useRoutes(routes);\n return <>{element};\n};\n","import { RouteObject } from 'react-router-dom';\nimport { Swap } from 'pages/Swap';\nimport { BancorURL } from 'router/bancorURL.service';\n\nexport interface PageTradeQuery {\n from?: string | null;\n to?: string | null;\n limit?: boolean | null;\n}\n\nexport const useRoutesTrade = (): RouteObject[] => {\n return [\n {\n path: BancorURL.trade(),\n element: ,\n },\n ];\n};\n","import { RouteObject } from 'react-router-dom';\nimport { Pools } from 'pages/earn/pools/Pools';\nimport { AddLiquidity } from 'pages/earn/pools/AddLiquidity';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { PoolsTable } from 'elements/earn/pools/poolsTable/PoolsTable';\nimport { EarnTableV2 } from 'elements/earn/pools/poolsTable/EarnTableV2';\nimport { useState } from 'react';\n\nexport const useRoutesEarn = (): RouteObject[] => {\n const [rewards, setRewards] = useState(false);\n const [lowVolume, setLowVolume] = useState(true);\n const [lowLiquidity, setLowLiquidity] = useState(true);\n const [lowEarnRate, setLowEarnRate] = useState(true);\n return [\n {\n path: BancorURL.earn,\n element: ,\n children: [\n {\n path: BancorURL.earn,\n element: (\n \n ),\n },\n {\n path: BancorURL.earnV2,\n element: (\n \n ),\n },\n ],\n },\n {\n path: BancorURL.addLiquidityV2(':id'),\n element: ,\n },\n ];\n};\n","import { Navigate, RouteObject } from 'react-router-dom';\nimport { Portfolio } from 'pages/earn/portfolio/Portfolio';\nimport V3Portfolio from 'elements/earn/portfolio/v3/V3Portfolio';\nimport { LiquidityProtection } from 'elements/earn/portfolio/liquidityProtection/LiquidityProtection';\nimport { PoolTokens } from 'elements/earn/portfolio/poolTokens/PoolTokens';\nimport { RewardsStake } from 'pages/earn/portfolio/rewards/RewardsStake';\nimport { RewardsClaim } from 'pages/earn/portfolio/rewards/RewardsClaim';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { PortfolioWelcome } from 'pages/earn/portfolio/PortfolioWelcome';\n\nexport const useRoutesPortfolio = (): RouteObject[] => {\n const redirectToWelcome = false;\n\n const welcomeElement = redirectToWelcome ? (\n \n ) : (\n \n );\n\n const portfolioElement = redirectToWelcome ? (\n \n ) : (\n \n );\n\n return [\n {\n path: BancorURL.welcome,\n element: welcomeElement,\n },\n {\n path: BancorURL.portfolio,\n element: portfolioElement,\n children: [\n {\n index: true,\n element: ,\n },\n {\n path: BancorURL.portfolioV2,\n element: ,\n },\n {\n path: BancorURL.portfolioV1,\n element: ,\n },\n ],\n },\n {\n path: BancorURL.portfolioV2RewardsStake(':id'),\n element: ,\n },\n {\n path: BancorURL.portfolioV2RewardsClaim,\n element: ,\n },\n ];\n};\n","import { Navigate, RouteObject } from 'react-router-dom';\nimport { Tokens } from 'pages/Tokens';\nimport { Fiat } from 'pages/Fiat';\nimport { Vote } from 'pages/Vote';\nimport { TermsOfUse } from 'pages/TermsOfUse';\nimport { PrivacyPolicy } from 'pages/PrivacyPolicy';\nimport { NotFound } from 'pages/NotFound';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { Admin } from 'pages/Admin';\n\nexport const useRoutesMain = (): RouteObject[] => {\n return [\n {\n path: BancorURL.index,\n element: ,\n },\n {\n path: BancorURL.tokens,\n element: ,\n },\n {\n path: BancorURL.fiat,\n element: ,\n },\n {\n path: BancorURL.vote,\n element: ,\n },\n {\n path: BancorURL.termsOfUse,\n element: ,\n },\n {\n path: BancorURL.privacyPolicy,\n element: ,\n },\n {\n path: BancorURL.admin,\n element: ,\n },\n {\n path: '*',\n element: ,\n },\n ];\n};\n","import { Navigate, RouteObject, useLocation } from 'react-router-dom';\nimport { BancorURL } from 'router/bancorURL.service';\nimport { PageTradeQuery } from 'router/useRoutesTrade';\n\nexport const useRoutesRedirect = (): RouteObject[] => {\n const pathSplit = useLocation().pathname.split('/');\n const id = pathSplit[pathSplit.length - 1];\n const searchParams = new URLSearchParams(useLocation().search);\n const tradeSearchParams: PageTradeQuery = {\n from: searchParams.get('from'),\n to: searchParams.get('to'),\n limit: !!searchParams.get('limit'),\n };\n\n return [\n // Legacy routes trade\n {\n path: '/swap',\n element: ,\n },\n {\n path: '/eth/swap',\n element: ,\n },\n // Legacy routes Earn\n {\n path: '/pools',\n element: ,\n },\n {\n path: '/eth/data',\n element: ,\n },\n {\n path: '/pools/add-liquidity/:id',\n element: ,\n },\n {\n path: '/eth/portfolio/stake/add/single/:id',\n element: ,\n },\n {\n path: '/eth/pool/add/:id',\n element: (\n \n ),\n },\n // Legacy routes portfolio\n {\n path: '/eth/portfolio',\n element: ,\n },\n {\n path: '/eth/portfolio/stake/rewards/withdraw',\n element: ,\n },\n {\n path: '/eth/portfolio/stake/rewards/restake/:id',\n element: (\n \n ),\n },\n // Legacy routes main\n {\n path: '/eth/vote',\n element: ,\n },\n {\n path: '/eth/fiat',\n element: ,\n },\n ];\n};\n","import { useEffect } from 'react';\nimport { BrowserRouter } from 'react-router-dom';\nimport { UnsupportedNetwork } from 'pages/UnsupportedNetwork';\nimport { LayoutHeader } from 'elements/layoutHeader/LayoutHeader';\nimport { NotificationAlerts } from 'elements/notifications/NotificationAlerts';\nimport { useDispatch } from 'react-redux';\nimport {\n setDarkMode,\n setSlippageTolerance,\n setUsdToggle,\n} from 'store/user/user';\nimport {\n Notification,\n setNotifications,\n} from 'store/notification/notification';\nimport { useAppSelector } from 'store';\nimport { googleTagManager } from 'services/api/googleTagManager';\nimport {\n getDarkModeLS,\n getNotificationsLS,\n getSlippageToleranceLS,\n getUsdToggleLS,\n setNotificationsLS,\n} from 'utils/localStorage';\nimport { subscribeToObservables } from 'services/observables/triggers';\nimport { isUnsupportedNetwork } from 'utils/helperFunctions';\nimport { keepWSOpen } from 'services/web3';\nimport { MobileBottomNav } from 'elements/layoutHeader/MobileBottomNav';\nimport { useWeb3React } from '@web3-react/core';\nimport { useAutoConnect } from 'services/web3/wallet/hooks';\nimport { setUser } from 'services/observables/user';\nimport { BancorRouter } from 'router/BancorRouter';\n\nexport const App = () => {\n const dispatch = useDispatch();\n const { chainId, account } = useWeb3React();\n useAutoConnect();\n const unsupportedNetwork = isUnsupportedNetwork(chainId);\n const notifications = useAppSelector(\n (state) => state.notification.notifications\n );\n\n useEffect(() => {\n const usd = getUsdToggleLS();\n if (usd) dispatch(setUsdToggle(usd));\n\n const notify = getNotificationsLS();\n if (notify) dispatch(setNotifications(notify));\n\n const slippage = getSlippageToleranceLS();\n if (slippage) dispatch(setSlippageTolerance(slippage));\n\n subscribeToObservables(dispatch);\n keepWSOpen();\n\n const dark = getDarkModeLS();\n if (dark) dispatch(setDarkMode(dark));\n }, [dispatch]);\n\n useEffect(() => {\n setNotificationsLS(notifications);\n }, [notifications]);\n\n useEffect(() => {\n setUser(account, dispatch);\n googleTagManager();\n }, [account, dispatch]);\n\n return (\n \n \n {unsupportedNetwork ? (\n \n ) : (\n
\n \n
\n )}\n \n \n
\n );\n};\n","import { useState, useEffect } from 'react';\nimport { useWeb3React } from '@web3-react/core';\nimport { gnosisSafe, injected } from 'services/web3/wallet/connectors';\nimport { getAutoLoginLS, setAutoLoginLS } from 'utils/localStorage';\nimport { IS_IN_IFRAME } from 'utils/helperFunctions';\n\nexport const useAutoConnect = () => {\n const { activate, active } = useWeb3React();\n\n const [triedAutoLogin, setTriedAutoLogin] = useState(false);\n\n useEffect(() => {\n if (IS_IN_IFRAME)\n gnosisSafe.isSafeApp().then((loadedInSafe) => {\n if (loadedInSafe) {\n activate(gnosisSafe, undefined, true).catch(() => {\n setTriedAutoLogin(true);\n });\n }\n });\n else if (getAutoLoginLS())\n injected.isAuthorized().then((isAuthorized: boolean) => {\n if (isAuthorized) {\n activate(injected, undefined, true)\n .then(async () => {\n setAutoLoginLS(true);\n setTriedAutoLogin(true);\n })\n .catch(() => console.error('Failed to auto login'));\n }\n });\n\n setTriedAutoLogin(true);\n }, [activate]);\n\n useEffect(() => {\n if (!triedAutoLogin && active) {\n setTriedAutoLogin(true);\n }\n }, [triedAutoLogin, active]);\n\n return triedAutoLogin;\n};\n","import {\n allTokensNew$,\n keeperDaoTokens$,\n tokensV2$,\n} from 'services/observables/tokens';\nimport {\n setAllTokenListTokens,\n setAllTokens,\n setKeeperDaoTokens,\n setStatisticsV3,\n setTokens,\n setTokenLists,\n} from 'store/bancor/bancor';\nimport { getTokenListLS, setTokenListLS } from 'utils/localStorage';\nimport { loadingLockedBnt$, loadingPositions$, loadingRewards$ } from './user';\nimport { statisticsV3$ } from 'services/observables/statistics';\nimport { setv2Pools, setv3Pools } from 'store/bancor/pool';\nimport {\n setLoadingLockedBnt,\n setLoadingPositions,\n setLoadingRewards,\n setLockedAvailableBNT,\n setPoolTokens,\n setProtectedPositions,\n setProtocolBnBNTAmount,\n setRewards,\n setSnapshots,\n} from 'store/liquidity/liquidity';\nimport {\n lockedAvailableBnt$,\n protectedPositions$,\n protocolBnBNTAmount$,\n rewards$,\n snapshots$,\n} from './liquidity';\nimport {\n setHoldingsRaw,\n setStandardRewards,\n setWithdrawalRequestsRaw,\n setWithdrawalSettings,\n} from 'store/portfolio/v3Portfolio';\nimport {\n portfolioHoldings$,\n portfolioStandardRewards$,\n portfolioWithdrawals$,\n portfolioWithdrawalSettings$,\n} from 'services/observables/portfolio';\nimport {\n listOfLists,\n tokenListsNew$,\n tokenListTokens$,\n userPreferredListIds$,\n} from 'services/observables/tokenLists';\nimport { poolsNew$, poolsV3$ } from 'services/observables/pools';\nimport { poolTokens$ } from 'services/observables/poolTokensV1';\n\nexport const subscribeToObservables = (dispatch: any) => {\n poolsV3$.subscribe((pools) => {\n dispatch(setv3Pools(pools));\n });\n\n allTokensNew$.subscribe((tokens) => {\n dispatch(setAllTokens(tokens));\n });\n\n tokensV2$.subscribe((tokens) => {\n dispatch(setTokens(tokens));\n });\n\n const userListIds = getTokenListLS();\n\n tokenListsNew$.subscribe((tokenLists) => {\n dispatch(setTokenLists(tokenLists));\n });\n\n if (userListIds.length === 0) {\n const twoLists = [listOfLists[0].name, listOfLists[1].name];\n setTokenListLS(twoLists);\n userPreferredListIds$.next(twoLists);\n } else userPreferredListIds$.next(userListIds);\n\n tokenListTokens$.subscribe(({ allTokenListTokens }) => {\n dispatch(setAllTokenListTokens(allTokenListTokens));\n });\n\n keeperDaoTokens$.subscribe((keeperDaoTokens) => {\n dispatch(setKeeperDaoTokens(keeperDaoTokens));\n });\n\n poolsNew$.subscribe((pools) => {\n dispatch(setv2Pools(pools));\n });\n\n statisticsV3$.subscribe((stats) => {\n dispatch(setStatisticsV3(stats));\n });\n\n protectedPositions$.subscribe((protectedPositions) => {\n dispatch(setProtectedPositions(protectedPositions));\n });\n\n rewards$.subscribe((rewards) => {\n dispatch(setRewards(rewards));\n });\n\n snapshots$.subscribe((snapshots) => dispatch(setSnapshots(snapshots)));\n\n poolTokens$.subscribe((poolTokens) => dispatch(setPoolTokens(poolTokens)));\n\n lockedAvailableBnt$.subscribe((lockedAvailableBnt) => {\n if (lockedAvailableBnt) {\n dispatch(setLockedAvailableBNT(lockedAvailableBnt));\n }\n });\n\n loadingPositions$.subscribe((loadingPositions) =>\n dispatch(setLoadingPositions(loadingPositions))\n );\n loadingRewards$.subscribe((loadingRewards) =>\n dispatch(setLoadingRewards(loadingRewards))\n );\n loadingLockedBnt$.subscribe((loadingLockedBnt) =>\n dispatch(setLoadingLockedBnt(loadingLockedBnt))\n );\n\n portfolioHoldings$.subscribe((holdingsRaw) => {\n dispatch(setHoldingsRaw(holdingsRaw));\n });\n\n portfolioStandardRewards$.subscribe((rewards) => {\n dispatch(setStandardRewards(rewards));\n });\n\n portfolioWithdrawals$.subscribe((withdrawalRequests) => {\n dispatch(setWithdrawalRequestsRaw(withdrawalRequests));\n });\n\n portfolioWithdrawalSettings$.subscribe((withdrawalSettings) => {\n dispatch(setWithdrawalSettings(withdrawalSettings));\n });\n\n protocolBnBNTAmount$.subscribe((protocolBnBNTAmount) => {\n dispatch(setProtocolBnBNTAmount(protocolBnBNTAmount));\n });\n};\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import en from 'i18n/en.json';\nimport he from 'i18n/he.json';\n\nexport type LocaleType = 'en' | 'he';\n\nexport const locales = {\n en,\n he,\n};\n\n//To add a new locale check this list https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes in the 639-1 coulmn\nexport const getLanguageByLocale = (locale: string): string => {\n switch (locale) {\n case 'en':\n return 'English';\n case 'he':\n return 'עברית';\n default:\n return 'English';\n }\n};\n","import { IntlProvider } from 'react-intl';\nimport { useAppSelector } from 'store';\nimport { locales } from 'i18n';\n\nexport const I18nProvider = ({ children }: { children: JSX.Element }) => {\n const locale = useAppSelector((state) => state.user.locale);\n const messages = locales[locale];\n\n return (\n \n {children}\n \n );\n};\n","import { StrictMode } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { App } from 'App';\nimport { store } from 'store';\nimport reportWebVitals from 'reportWebVitals';\nimport { I18nProvider } from 'i18n/i18nProvider';\nimport { getLibrary } from 'services/web3/wallet/utils';\nimport { Web3ReactProvider } from '@web3-react/core';\nimport 'styles/index.css';\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\nreportWebVitals();\n","import { FrameConnector } from '@web3-react/frame-connector';\nimport { PortisConnector } from '@web3-react/portis-connector';\nimport { InjectedConnector } from '@web3-react/injected-connector';\nimport { FortmaticConnector } from '@web3-react/fortmatic-connector';\nimport { WalletLinkConnector } from '@web3-react/walletlink-connector';\nimport { WalletConnectConnector } from '@web3-react/walletconnect-connector';\nimport { TorusConnector } from '@web3-react/torus-connector';\nimport { SafeAppConnector } from '@gnosis.pm/safe-apps-web3-react';\nimport { EthNetworks } from 'services/web3/types';\n\nexport const buildAlchemyUrl = (network: EthNetworks, wss: boolean = true) => {\n const net = EthNetworks.Mainnet === network ? 'mainnet' : 'ropsten';\n const id =\n network === EthNetworks.Mainnet\n ? (process.env.REACT_APP_ALCHEMY_MAINNET as string)\n : (process.env.REACT_APP_ALCHEMY_ROPSTEN as string);\n return `${wss ? 'wss' : 'https'}://eth-${net}.alchemyapi.io/v2/${id}`;\n};\n\nconst RPC_URLS: { [chainId: number]: string } = {\n 1: buildAlchemyUrl(EthNetworks.Mainnet, false),\n 3: buildAlchemyUrl(EthNetworks.Ropsten, false),\n};\n\nconst appName = 'bancor';\n\nexport const injected = new InjectedConnector({\n supportedChainIds: [1, 3, 4, 5, 42],\n});\n\nexport const gnosisSafe = new SafeAppConnector();\n\nexport const walletconnect = new WalletConnectConnector({\n rpc: { 1: RPC_URLS[1], 3: RPC_URLS[3] },\n qrcode: true,\n});\n\nexport const walletlink = new WalletLinkConnector({\n url: RPC_URLS[1],\n appName: appName,\n});\n\nexport const frame = new FrameConnector({ supportedChainIds: [1] });\n\nexport const fortmatic = new FortmaticConnector({\n apiKey: process.env.REACT_APP_FORTMATIC_API_KEY as string,\n chainId: 1,\n});\n\nexport const portis = new PortisConnector({\n dAppId: process.env.REACT_APP_PORTIS_DAPP_ID as string,\n networks: [1, 100],\n});\n\nexport const torus = new TorusConnector({\n chainId: 1,\n});\n","import dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\ndayjs.extend(duration);\n\nexport default dayjs;\n","import { stakingRewards$ } from 'services/observables/contracts';\nimport { take } from 'rxjs/operators';\nimport { expandToken, shrinkToken } from 'utils/formulas';\nimport {\n StakingRewards,\n StakingRewards__factory,\n} from 'services/web3/abis/types';\nimport { web3, writeWeb3 } from 'services/web3';\nimport { ProtectedLiquidity } from 'services/web3/protection/positions';\nimport { multicall, MultiCall } from 'services/web3/multicall/multicall';\nimport { Dictionary, ErrorCode } from 'services/web3/types';\nimport { changeGas } from 'services/web3/config';\nimport axios from 'axios';\nimport { SnapshotRewards } from 'services/observables/liquidity';\nimport { ContractsApi } from 'services/web3/v3/contractsApi';\nimport { getAddress, solidityKeccak256 } from 'ethers/lib/utils';\n\nexport const stakeRewards = async ({\n amount,\n poolId,\n onHash,\n onCompleted,\n rejected,\n failed,\n}: {\n amount: string;\n poolId: string;\n onHash: (txHash: string) => void;\n onCompleted: Function;\n rejected: Function;\n failed: (error: string) => void;\n}) => {\n try {\n const contractAddress = await stakingRewards$.pipe(take(1)).toPromise();\n\n const contract = StakingRewards__factory.connect(\n contractAddress,\n writeWeb3.signer\n );\n\n const estimate = await contract.estimateGas.stakeRewards(\n expandToken(amount, 18),\n poolId\n );\n const gasLimit = changeGas(estimate.toString());\n\n const tx = await contract.stakeRewards(expandToken(amount, 18), poolId, {\n gasLimit,\n });\n onHash(tx.hash);\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n console.error(e);\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed(e.message);\n }\n};\n\nexport const stakePoolLevelRewards = async ({\n amount,\n poolId,\n reserveId,\n newPoolId,\n onHash,\n onCompleted,\n rejected,\n failed,\n}: {\n amount: string;\n poolId: string;\n reserveId: string;\n newPoolId: string;\n onHash: (txHash: string) => void;\n onCompleted: Function;\n rejected: Function;\n failed: (error: string) => void;\n}) => {\n try {\n const contractAddress = await stakingRewards$.pipe(take(1)).toPromise();\n const contract = StakingRewards__factory.connect(\n contractAddress,\n writeWeb3.signer\n );\n\n const tx = await contract.stakeReserveRewards(\n poolId,\n reserveId,\n expandToken(amount, 18),\n newPoolId\n );\n onHash(tx.hash);\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n console.error(e);\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed(e.message);\n }\n};\n\nexport const claimRewards = async (): Promise => {\n const contractAddress = await stakingRewards$.pipe(take(1)).toPromise();\n const contract = StakingRewards__factory.connect(\n contractAddress,\n writeWeb3.signer\n );\n\n const estimate = await contract.estimateGas.claimRewards();\n const gasLimit = changeGas(estimate.toString());\n\n return (await contract.claimRewards({ gasLimit })).hash;\n};\n\nexport const fetchTotalClaimedRewards = async (\n currentUser: string\n): Promise => {\n const contractAddress = await stakingRewards$.pipe(take(1)).toPromise();\n const contract = StakingRewards__factory.connect(\n contractAddress,\n web3.provider\n );\n const result = await contract.totalClaimedRewards(currentUser);\n\n return shrinkToken(result.toString(), 18);\n};\n\nexport const fetchPendingRewards = async (\n currentUser: string\n): Promise => {\n const contractAddress = await stakingRewards$.pipe(take(1)).toPromise();\n const contract = StakingRewards__factory.connect(\n contractAddress,\n web3.provider\n );\n const result = await contract.pendingRewards(currentUser);\n\n return shrinkToken(result.toString(), 18);\n};\n\nexport const fetchedRewardsMultiplier = async (\n user: string,\n positions: ProtectedLiquidity[]\n) => {\n const contractAddress = await stakingRewards$.pipe(take(1)).toPromise();\n const contract = StakingRewards__factory.connect(\n contractAddress,\n web3.provider\n );\n const calls = positions.map((position) =>\n buildRewardsMultiplierCall(contract, user, position)\n );\n const res = await multicall(calls);\n if (res)\n return res.map((x, i) => ({\n id: positions[i].id,\n rewardsMultiplier: shrinkToken(x.toString(), 6),\n }));\n\n return [];\n};\n\nconst buildRewardsMultiplierCall = (\n contract: StakingRewards,\n user: string,\n position: ProtectedLiquidity\n): MultiCall => {\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'rewardsMultiplier',\n methodParameters: [user, position.poolToken, position.reserveToken.address],\n };\n};\n\nexport const fetchedPendingRewards = async (\n user: string,\n positions: ProtectedLiquidity[]\n) => {\n const contractAddress = await stakingRewards$.pipe(take(1)).toPromise();\n const contract = StakingRewards__factory.connect(\n contractAddress,\n web3.provider\n );\n\n const calls = positions.map((position) =>\n buildPendingRewardsCall(contract, user, position)\n );\n const res = await multicall(calls);\n if (res)\n return res.map((x, i) => ({\n id: positions[i].id,\n rewardsAmount: shrinkToken(x.toString(), 18),\n }));\n\n return [];\n};\n\nconst buildPendingRewardsCall = (\n contract: StakingRewards,\n user: string,\n position: ProtectedLiquidity\n): MultiCall => {\n return {\n contractAddress: contract.address,\n interface: contract.interface,\n methodName: 'pendingReserveRewards',\n methodParameters: [user, position.poolToken, position.reserveToken.address],\n };\n};\n\nexport const fetchSnapshotRewards = async () => {\n try {\n const res = await axios.get>(\n '/rewards-snapshot.2022-05-13T16.25.43.632Z.min.json',\n {\n timeout: 10000,\n }\n );\n return res.data;\n } catch (e) {\n console.error('failed to fetch rewards snapshots', e);\n }\n};\n\nconst _handleSnapshotRewards = async (\n account: string,\n amount: string,\n proof: string[],\n method: 'claim' | 'stake',\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: Function\n) => {\n try {\n const tx =\n method === 'stake'\n ? await ContractsApi.StakingRewardsClaim.write.stakeRewards(\n account,\n amount,\n proof\n )\n : await ContractsApi.StakingRewardsClaim.write.claimRewards(\n account,\n amount,\n proof\n );\n onHash(tx.hash);\n await tx.wait();\n onCompleted();\n } catch (e: any) {\n console.error(e);\n if (e.code === ErrorCode.DeniedTx) rejected();\n else failed();\n }\n};\n\nexport const stakeSnapshotRewards = async (\n account: string,\n amount: string,\n proof: string[],\n onHash: (txHash: string) => void,\n onCompleted: (txHash: string) => void,\n rejected: Function,\n failed: Function\n) => {\n _handleSnapshotRewards(\n account,\n amount,\n proof,\n 'stake',\n onHash,\n onCompleted,\n rejected,\n failed\n );\n};\n\nexport const claimSnapshotRewards = async (\n account: string,\n amount: string,\n proof: string[],\n onHash: (txHash: string) => void,\n onCompleted: Function,\n rejected: Function,\n failed: Function\n) => {\n _handleSnapshotRewards(\n account,\n amount,\n proof,\n 'claim',\n onHash,\n onCompleted,\n rejected,\n failed\n );\n};\n\nexport const generateLeaf = (address: string, value: string): Buffer => {\n return Buffer.from(\n solidityKeccak256(\n ['address', 'uint256'],\n [getAddress(address), value]\n ).slice(2),\n 'hex'\n );\n};\n"],"sourceRoot":""}