@ref-finance/ref-sdk 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ref-sdk.esm.js","sources":["../src/constant.ts","../src/stable-swap.ts","../src/swap-widget/constant.ts","../src/metaIcons.ts","../src/indexer.ts","../src/v1-swap/parallelSwapLogic.ts","../src/v1-swap/smartRoutingLogic.js","../src/v1-swap/swap.ts","../src/utils.ts","../src/near.ts","../src/ref.ts","../src/dcl-swap/dcl-pool.ts","../src/error.ts","../src/v1-swap/instantSwap.ts","../src/v1-swap/pool.ts","../src/swap-widget/state.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/swap-widget/components.tsx","../src/swap-widget/index.tsx","../src/swap-widget/defaultTokenList.ts","../src/dcl-swap/swap.ts","../src/dcl-swap/limit-order.ts"],"sourcesContent":["import { TokenMetadata } from './types';\n\nexport const FEE_DIVISOR = 10000;\n\nexport const STABLE_LP_TOKEN_DECIMALS = 18;\nexport const RATED_POOL_LP_TOKEN_DECIMALS = 24;\n\nexport function getConfig(\n env: string | undefined = process.env.NEAR_ENV ||\n process.env.REACT_APP_REF_SDK_ENV\n) {\n switch (env) {\n case 'mainnet':\n return {\n networkId: 'mainnet',\n nodeUrl: 'https://rpc.mainnet.near.org',\n walletUrl: 'https://wallet.near.org',\n WRAP_NEAR_CONTRACT_ID: 'wrap.near',\n REF_FI_CONTRACT_ID: 'v2.ref-finance.near',\n REF_TOKEN_ID: 'token.v2.ref-finance.near',\n indexerUrl: 'https://indexer.ref.finance',\n explorerUrl: 'https://testnet.nearblocks.io',\n REF_DCL_SWAP_CONTRACT_ID: '',\n };\n case 'testnet':\n return {\n networkId: 'testnet',\n nodeUrl:\n 'https://near-testnet.infura.io/v3/388c72223585424086eea3872bb0ba2c',\n walletUrl: 'https://wallet.testnet.near.org',\n indexerUrl: 'https://testnet-indexer.ref-finance.com',\n WRAP_NEAR_CONTRACT_ID: 'wrap.testnet',\n REF_FI_CONTRACT_ID: 'ref-finance-101.testnet',\n REF_TOKEN_ID: 'ref.fakes.testnet',\n explorerUrl: 'https://testnet.nearblocks.io',\n REF_DCL_SWAP_CONTRACT_ID: 'dcl.ref-dev.testnet',\n };\n default:\n return {\n networkId: 'mainnet',\n nodeUrl: 'https://rpc.mainnet.near.org',\n walletUrl: 'https://wallet.near.org',\n REF_FI_CONTRACT_ID: 'v2.ref-finance.near',\n WRAP_NEAR_CONTRACT_ID: 'wrap.near',\n REF_TOKEN_ID: 'token.v2.ref-finance.near',\n indexerUrl: 'https://indexer.ref.finance',\n explorerUrl: 'https://nearblocks.io',\n REF_DCL_SWAP_CONTRACT_ID: '',\n };\n }\n}\n\nexport const config = getConfig();\n\nexport const REF_FI_CONTRACT_ID = config.REF_FI_CONTRACT_ID;\n\nexport const WRAP_NEAR_CONTRACT_ID = config.WRAP_NEAR_CONTRACT_ID;\n\nexport const REF_TOKEN_ID = config.REF_TOKEN_ID;\n\nexport const STORAGE_TO_REGISTER_WITH_MFT = '0.1';\n\nexport const ONE_YOCTO_NEAR = '0.000000000000000000000001';\n\nexport const WNEAR_META_DATA: TokenMetadata = {\n id: WRAP_NEAR_CONTRACT_ID,\n name: 'wNEAR',\n symbol: 'wNEAR',\n decimals: 24,\n icon: 'https://assets.ref.finance/images/w-NEAR-no-border.png',\n};\n\nexport const REF_META_DATA = {\n decimals: 18,\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A\",\n id: REF_TOKEN_ID,\n name: 'Ref Finance Token',\n symbol: 'REF',\n};\n\nexport const NEAR_META_DATA: TokenMetadata = {\n id: 'NEAR',\n name: 'NEAR',\n symbol: 'NEAR',\n decimals: 24,\n icon:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2AAAANgCAIAAADF8JzzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAgAElEQVR4nO3d7VXb2rqw4eQd57/cgZ0KLCqwVwWIChAVYCrAqQBTgUUFERVEVBBTwTYdmArWO/by3uzMfBA+bHlK87r+nTP2WBFSjO/o8SN//Pvvvz8AAMB//T9nAgCA7wlEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAAC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ICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAID/+fDhw/8H0I0VimXUJpsAAAAASUVORK5CYII=',\n};\n\nexport const TokenLinks = {\n NEAR: 'https://awesomenear.com/near-protocol',\n wNEAR: 'https://awesomenear.com/near-protocol',\n REF: 'https://awesomenear.com/ref-finance',\n OCT: 'https://awesomenear.com/octopus-network',\n PARAS: 'https://awesomenear.com/paras',\n SKYWARD: 'https://awesomenear.com/skyward-finance',\n FLX: 'https://awesomenear.com/flux',\n PULSE: 'https://awesomenear.com/pulse',\n DBIO: 'https://awesomenear.com/debio-network',\n MYRIA: 'https://awesomenear.com/myriad-social',\n PXT: 'https://awesomenear.com/cryptoheroes',\n HAPI: 'https://awesomenear.com/hapi',\n OIN: 'https://awesomenear.com/oin-finance',\n ABR: 'https://awesomenear.com/allbridge',\n '1MIL': 'https://awesomenear.com/1millionnfts',\n MARMAJ: 'https://awesomenear.com/marmaj-foundation',\n marmaj: 'https://awesomenear.com/marmaj-foundation',\n USN: 'https://awesomenear.com/decentral-bank',\n '1INCH': 'https://awesomenear.com/1inch-network',\n GRT: 'https://awesomenear.com/the-graph',\n LINK: 'https://awesomenear.com/chainlink',\n Cheddar: 'https://awesomenear.com/cheddar-farm',\n AURORA: 'https://awesomenear.com/aurora-dev',\n $META: 'https://awesomenear.com/meta-pool',\n UMINT: 'https://awesomenear.com/youminter',\n UTO: 'https://awesomenear.com/secret-skellies-society',\n DEIP: 'https://awesomenear.com/deip',\n WOO: 'https://awesomenear.com/woo-dex',\n LINEAR: 'https://awesomenear.com/linear-protocol',\n PEM: 'https://awesomenear.com/pembrock-finance',\n ATO: 'https://awesomenear.com/atocha-protocol',\n SEAT: 'https://awesomenear.com/seatlab-nft',\n FAR: 'https://awesomenear.com/few-and-far',\n BSTN: 'https://awesomenear.com/bastion',\n BRRR: 'https://awesomenear.com/burrow',\n XNL: 'https://awesomenear.com/chronicle',\n KSW: 'https://awesomenear.com/killswitch-finance',\n STNEAR: 'https://awesomenear.com/meta-pool',\n NearX: 'https://awesomenear.com/stader',\n SD: 'https://awesomenear.com/stader',\n DISC: 'https://awesomenear.com/discovol',\n} as Record<string, string>;\n\nexport const CONSTANT_D = 1.0001;\n\nexport const POINTLEFTRANGE = -800000;\nexport const POINTRIGHTRANGE = 800000;\n","import { StablePool } from './types';\nimport { FEE_DIVISOR } from './constant';\n\nimport {\n toReadableNumber,\n toNonDivisibleNumber,\n scientificNotationToString,\n} from './utils';\n\nimport Big from 'big.js';\n\nimport _ from 'lodash';\n\nconst tradeFee = (amount: number, trade_fee: number) => {\n return (amount * trade_fee) / FEE_DIVISOR;\n};\n\nexport const calc_d = (amp: number, c_amounts: number[]) => {\n const token_num = c_amounts.length;\n const sum_amounts = _.sum(c_amounts);\n let d_prev = 0;\n let d = sum_amounts;\n for (let i = 0; i < 256; i++) {\n let d_prod = d;\n for (let c_amount of c_amounts) {\n d_prod = (d_prod * d) / (c_amount * token_num);\n }\n d_prev = d;\n const ann = amp * token_num ** token_num;\n const numerator = d_prev * (d_prod * token_num + ann * sum_amounts);\n const denominator = d_prev * (ann - 1) + d_prod * (token_num + 1);\n d = numerator / denominator;\n if (Math.abs(d - d_prev) <= 1) break;\n }\n return d;\n};\n\nexport const calc_y = (\n amp: number,\n x_c_amount: number,\n current_c_amounts: number[],\n index_x: number,\n index_y: number\n) => {\n const token_num = current_c_amounts.length;\n const ann = amp * token_num ** token_num;\n const d = calc_d(amp, current_c_amounts);\n let s = x_c_amount;\n let c = (d * d) / x_c_amount;\n for (let i = 0; i < token_num; i++) {\n if (i != index_x && i != index_y) {\n s += current_c_amounts[i];\n c = (c * d) / current_c_amounts[i];\n }\n }\n c = (c * d) / (ann * token_num ** token_num);\n const b = d / ann + s;\n let y_prev = 0;\n let y = d;\n for (let i = 0; i < 256; i++) {\n y_prev = y;\n const y_numerator = y ** 2 + c;\n const y_denominator = 2 * y + b - d;\n y = y_numerator / y_denominator;\n if (Math.abs(y - y_prev) <= 1) break;\n }\n\n return y;\n};\n\nexport const calc_swap = (\n amp: number,\n in_token_idx: number,\n in_c_amount: number,\n out_token_idx: number,\n old_c_amounts: number[],\n trade_fee: number\n) => {\n const y = calc_y(\n amp,\n in_c_amount + old_c_amounts[in_token_idx],\n old_c_amounts,\n in_token_idx,\n out_token_idx\n );\n const dy = old_c_amounts[out_token_idx] - y;\n const fee = tradeFee(dy, trade_fee);\n const amount_swapped = dy - fee;\n return [amount_swapped, fee, dy];\n};\n\nexport const getSwappedAmount = (\n tokenInId: string,\n tokenOutId: string,\n amountIn: string,\n stablePool: StablePool,\n STABLE_LP_TOKEN_DECIMALS: number\n) => {\n const amp = stablePool.amp;\n const trade_fee = stablePool.total_fee;\n\n // depended on pools\n const in_token_idx = stablePool.token_account_ids.findIndex(\n id => id === tokenInId\n );\n const out_token_idx = stablePool.token_account_ids.findIndex(\n id => id === tokenOutId\n );\n\n const rates = stablePool.rates.map(r =>\n toReadableNumber(STABLE_LP_TOKEN_DECIMALS, r)\n );\n\n const base_old_c_amounts = stablePool.c_amounts.map(amount =>\n toReadableNumber(STABLE_LP_TOKEN_DECIMALS, amount)\n );\n\n const old_c_amounts = base_old_c_amounts\n .map((amount, i) =>\n toNonDivisibleNumber(\n STABLE_LP_TOKEN_DECIMALS,\n scientificNotationToString(\n new Big(amount || 0).times(new Big(rates[i])).toString()\n )\n )\n )\n .map(amount => Number(amount));\n\n const in_c_amount = Number(\n toNonDivisibleNumber(\n STABLE_LP_TOKEN_DECIMALS,\n scientificNotationToString(\n new Big(amountIn).times(new Big(rates[in_token_idx])).toString()\n )\n )\n );\n\n const [amount_swapped, fee, dy] = calc_swap(\n amp,\n in_token_idx,\n in_c_amount,\n out_token_idx,\n old_c_amounts,\n trade_fee\n );\n\n return [\n amount_swapped / Number(rates[out_token_idx]),\n fee,\n dy / Number(rates[out_token_idx]),\n ];\n};\n","import { getConfig } from '../constant';\nexport const REF_WIDGET_STAR_TOKEN_LIST_KEY =\n 'REF_WIDGET_STAR_TOKEN_LIST_VALUE';\n\nexport const REF_WIDGET_ALL_TOKENS_LIST_KEY =\n 'REF_WIDGET_ALL_TOKENS_LIST_VALUE';\n\nexport const REF_WIDGET_SWAP_IN_KEY = 'REF_WIDGET_SWAP_IN_VALUE';\n\nexport const REF_WIDGET_SWAP_OUT_KEY = 'REF_WIDGET_SWAP_OUT_VALUE';\n\nexport const REF_WIDGET_SWAP_DETAIL_KEY = 'REF_WIDGET_SWAP_DETAIL_VALUE';\n\nexport const DEFAULT_START_TOKEN_LIST_TESTNET = [\n 'wrap.testnet',\n 'usdtt.fakes.testnet',\n 'usdt.fakes.testnet',\n 'ref.fakes.testnet',\n 'usdn.testnet',\n 'eth.fakes.testnet',\n];\n\nexport const DEFAULT_START_TOKEN_LIST_MAINNET = [\n 'wrap.near',\n 'usdt.tether-token.near',\n 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near',\n 'token.v2.ref-finance.near',\n 'usn',\n 'aurora',\n 'token.sweat',\n];\n\nexport const DEFAULT_START_TOKEN_LIST =\n getConfig().networkId === 'testnet'\n ? DEFAULT_START_TOKEN_LIST_TESTNET\n : DEFAULT_START_TOKEN_LIST_MAINNET;\n\nexport interface Theme {\n container: string; // container background\n buttonBg: string; // button background\n primary: string; // primary theme color\n secondary: string; // secondary theme color\n borderRadius: string; // border radius\n fontFamily: string; // font family\n hover: string; // hovering color\n active: string; // active color\n secondaryBg: string; // secondary background color\n borderColor: string; // border color\n iconDefault: string; // default icon color\n iconHover: string; // icon hovering color\n refIcon?: string; // ref icon color\n}\n\nexport const defaultTheme: Theme = {\n container: '#FFFFFF',\n buttonBg: '#00C6A2',\n primary: '#000000',\n secondary: '#7E8A93',\n borderRadius: '4px',\n fontFamily: 'sans-serif',\n hover: 'rgba(126, 138, 147, 0.2)',\n active: 'rgba(126, 138, 147, 0.2)',\n secondaryBg: '#F7F7F7',\n borderColor: 'rgba(126, 138, 147, 0.2)',\n iconDefault: 'rgba(126, 138, 147, 1)',\n iconHover: 'rgba(62, 62, 62, 1)',\n};\n\nexport const defaultDarkModeTheme: Theme = {\n container: '#26343E',\n buttonBg: '#00C6A2',\n primary: '#FFFFFF',\n secondary: '#7E8A93',\n borderRadius: '4px',\n fontFamily: 'sans-serif',\n hover: 'rgba(126, 138, 147, 0.2)',\n active: 'rgba(126, 138, 147, 0.2)',\n secondaryBg: 'rgba(0, 0, 0, 0.2)',\n borderColor: 'rgba(126, 138, 147, 0.2)',\n iconDefault: 'rgba(126, 138, 147, 1)',\n iconHover: 'rgba(183, 201, 214, 1)',\n refIcon: 'white',\n};\n","const icons: { [tokenId: string]: string } = {\n '4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near':\n 'https://ref-finance-images.s3.amazonaws.com/images/woo-wtrue.png',\n 'wrap.near':\n 'data:image/png;base64,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',\n 'wrap.testnet':\n 'data:image/png;base64,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',\n '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near':\n 'https://assets.ref.finance/images/4943.png',\n 'berryclub.ek.near': 'https://assets.ref.finance/images/banana.png',\n 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near':\n 'https://assets.ref.finance/images/825.png',\n '1f9840a85d5af5bf1d1762f925bdaddc4201f984.factory.bridge.near':\n 'https://assets.ref.finance/images/7083.png',\n '514910771af9ca656af840dff83e8264ecf986ca.factory.bridge.near':\n 'https://assets.ref.finance/images/1975.png',\n 'a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near':\n 'https://assets.ref.finance/images/3408.png',\n '2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near':\n 'https://assets.ref.finance/images/3717.png',\n '7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.factory.bridge.near':\n 'https://assets.ref.finance/images/7278.png',\n 'a0b73e1ff0b80914ab6fe0444e65848c4c34450b.factory.bridge.near':\n 'https://assets.ref.finance/images/3635.png',\n '50d1c9771902476076ecfc8b2a83ad6b9355a4c9.factory.bridge.near':\n 'https://assets.ref.finance/images/4195.png',\n '4fabb145d64652a948d72533023f6e7a623c7c53.factory.bridge.near':\n 'https://assets.ref.finance/images/4687.png',\n '6f259637dcd74c767781e37bc6133cd6a68aa161.factory.bridge.near':\n 'https://assets.ref.finance/images/2502.png',\n '6b3595068778dd592e39a122f4f5a5cf09c90fe2.factory.bridge.near':\n 'https://assets.ref.finance/images/6758.png',\n 'c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.factory.bridge.near':\n 'https://assets.ref.finance/images/2586.png',\n 'c944e90c64b2c07662a292be6244bdf05cda44a7.factory.bridge.near':\n 'https://assets.ref.finance/images/6719.png',\n '9f8f72aa9304c8b593d555f12ef6589cc3a579a2.factory.bridge.near':\n 'https://assets.ref.finance/images/1518.png',\n '0bc529c00c6401aef6d220be8c6ea1667f6ad93e.factory.bridge.near':\n 'https://assets.ref.finance/images/5864.png',\n 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.factory.bridge.near':\n 'https://assets.ref.finance/images/2396.png',\n '0316eb71485b0ab14103307bf65a021042c6d380.factory.bridge.near':\n 'https://assets.ref.finance/images/6941.png',\n '111111111117dc0aa78b770fa6a738034120c302.factory.bridge.near':\n 'https://assets.ref.finance/images/8104.png',\n 'f5cfbc74057c610c8ef151a439252680ac68c6dc.factory.bridge.near':\n 'https://assets.ref.finance/images/55sGoBm.png',\n 'de30da39c46104798bb5aa3fe8b9e0e1f348163f.factory.bridge.near':\n 'https://assets.ref.finance/images/10052.png',\n 'a4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016.factory.bridge.near':\n 'https://assets.ref.finance/images/4222.png',\n 'token.cheddar.near': 'https://assets.ref.finance/images/cheddar.png',\n 'farm.berryclub.ek.near': 'https://assets.ref.finance/images/cucumber.png',\n 'd9c2d319cd7e6177336b0a9c93c21cb48d84fb54.factory.bridge.near':\n 'https://assets.ref.finance/images/HAPI.png',\n};\n\nexport default icons;\n","import { config, WRAP_NEAR_CONTRACT_ID, NEAR_META_DATA } from './constant';\nimport { REF_WIDGET_ALL_TOKENS_LIST_KEY } from './swap-widget/constant';\nimport { REPLACE_TOKENS } from './ref';\nimport metaIconDefaults from './metaIcons';\n\nexport const getTokenPriceList = async (): Promise<any> => {\n return await fetch(config.indexerUrl + '/list-token-price', {\n method: 'GET',\n headers: { 'Content-type': 'application/json; charset=UTF-8' },\n })\n .then(res => res.json())\n .then(list => {\n return list;\n });\n};\n\nexport const getTokens = async (reload?: boolean) => {\n const storagedTokens =\n typeof window !== 'undefined' && !reload\n ? localStorage.getItem(REF_WIDGET_ALL_TOKENS_LIST_KEY)\n : null;\n\n return storagedTokens\n ? JSON.parse(storagedTokens)\n : await fetch(config.indexerUrl + '/list-token', {\n method: 'GET',\n headers: { 'Content-type': 'application/json; charset=UTF-8' },\n })\n .then(res => res.json())\n .then(tokens => {\n const newTokens = Object.values(tokens).reduce(\n (acc: any, cur: any, i) => {\n const id = Object.keys(tokens)[i];\n return {\n ...acc,\n [id]: {\n ...cur,\n id,\n icon:\n !cur.icon || REPLACE_TOKENS.includes(id)\n ? metaIconDefaults[id]\n : cur.icon,\n },\n };\n },\n {}\n );\n\n return newTokens;\n })\n .then(res => {\n typeof window !== 'undefined' &&\n !reload &&\n localStorage.setItem(\n REF_WIDGET_ALL_TOKENS_LIST_KEY,\n JSON.stringify(res)\n );\n return res;\n });\n};\n\nexport const getWhiteListTokensIndexer = async (whiteListIds: string[]) => {\n return await fetch(config.indexerUrl + '/list-token', {\n method: 'GET',\n headers: { 'Content-type': 'application/json; charset=UTF-8' },\n })\n .then(res => res.json())\n .then(res => {\n return whiteListIds.reduce((acc, cur, i) => {\n if (\n !res[cur] ||\n !Object.values(res[cur]) ||\n Object.values(res[cur]).length === 0\n )\n return acc;\n\n return {\n ...acc,\n [cur]: { ...res[cur], id: cur },\n };\n }, {});\n })\n .then(res => {\n return Object.values(res);\n });\n};\n","//@ts-nocheck\nimport Big from 'big.js';\n\nimport { Pool } from '../types';\n\nBig.RM = 0;\nBig.DP = 40;\nBig.NE = -40;\nBig.PE = 40;\n\ninterface FormatedPool extends Pool {\n x?: string;\n y?: string;\n gamma_bps?: Big;\n}\n\n///////////////////////////////\n// Parallel Swap Logic Below //\n///////////////////////////////\n\n/** formatPoolNew\n * This function appends to the existing standard Pool struct and adds attributes that simplify the parallel swap algorithms.\n * Adds attributes \"x\" (for input token reserves in pool), \"y\" (for output token reserves in pool), and \"gamma_bps\" (for 1- fee in bps)\n * Our convention for our algorithm has been to use \"x\" as the input token and \"y\" as the output token.\n * @param pool AMM structure containing reserves of inputToken and outputToken\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns newFormatPool\n */\nexport function formatPoolNew(\n pool: Pool,\n inputToken: string,\n outputToken: string\n) {\n let p: FormatedPool = pool;\n let x = p.supplies[inputToken];\n let y = p.supplies[outputToken];\n p['gamma_bps'] = new Big(10000).minus(p.fee);\n p['x'] = x;\n p['y'] = y;\n return p;\n}\n\n/** solveForMuFloat\n * This function takes the set of token pools, the total input of inputToken, and the names of inputToken and outputToken and\n * solves for the Lagrange Multiplier \"mu\". Note that mu must be allowed to be aritrary precision floating point number. Mu will\n * be used in subsequent function calls to determine the best allocations of intputToken to be made per pool.\n * For more detailed math on how this function was derived, please see the white paper:\n * https://github.com/giddyphysicist/ParallelSwapForRefFinance/blob/main/ParallelSwapWhitePaper.pdf\n * @param pools list of pools that contain inputToken and outputToken\n * @param totalDeltaX total allocation (among all pools) being input of inputToken\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns mu the lagrange multiplier value calculated for a set of pools and inputToken amount.\n */\nexport function solveForMuFloat(\n pools: Pool[],\n totalDeltaX: string,\n inputToken: string,\n outputToken: string\n) {\n if (pools.length > 0) {\n let numerator = new Big(totalDeltaX);\n let denominator = new Big(0);\n\n for (var i = 0; i < pools.length; i++) {\n let p = formatPoolNew(pools[i], inputToken, outputToken);\n let numAdd = new Big(p.x).times(10000).div(p.gamma_bps);\n numerator = numerator.plus(numAdd);\n let denomAdd = new Big(p.x)\n .times(p.y)\n .div(p.gamma_bps)\n .sqrt()\n .times(100);\n denominator = denominator.plus(denomAdd);\n }\n\n const mu = new Big(numerator).div(denominator);\n return mu;\n } else {\n // console.log('ERROR - could not find pools that satisfy token pair');\n const mu = NaN;\n return mu;\n }\n}\n\n/** calculate_dx_float\n * Once mu has been calculated for a set of pools and total input amount, the next step is\n * determining the total allocation per pool. This function evaluates the amount of input Token to be\n * allocated to the given pool. Note, in our original algorithmic convention, the 'x' variable was for the input token,\n * and the 'y' variable was for the output token. Here, the value dx is the part of the full amount of input token X.\n * Again, the detailed formulae for these operations can be found in the white paper referenced above.\n * @param mu the lagrange multiplier value calculated for a set of pools and inputToken amount.\n * @param pool AMM structure containing reserves of inputToken and outputToken\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns dxFloat the allocation amount determined for the given pool\n */\nexport function calculate_dx_float(\n mu: number | Big,\n pool: FormatedPool,\n inputToken: string,\n outputToken: string\n) {\n let p = formatPoolNew(pool, inputToken, outputToken);\n let radical = new Big(p.x).times(p.y).div(p.gamma_bps);\n let dxFloat = new Big(mu)\n .times(100)\n .times(radical.sqrt())\n .minus(new Big(p.x).times(10000).div(p.gamma_bps));\n return dxFloat;\n}\n\n/** calculate_dy_float\n * Once you have an allocation amount for a given pool, you can use the AMM constant-product formula to determine\n * the expected output amount of output Token.\n * Note, here, as earlier, our algorithmic convention uses \"y\" as the output token, and so \"dy\" is the fraction of\n * the total output of output Token, assuming there could be dy contributions from other parallel pools as well.\n * @param dx_float input allocation amount of inputToken for the given pool\n * @param pool a structure representing the reserves and fees for a given pool.\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns dyFloat the expected trade out amount out of outputToken\n */\nexport function calculate_dy_float(\n dx_float: number,\n pool: FormatedPool,\n inputToken: string,\n outputToken: string\n) {\n if (dx_float <= 0) {\n return new Big(0);\n }\n let p = formatPoolNew(pool, inputToken, outputToken);\n let dx = new Big(dx_float);\n let denom = new Big(10000).times(p.x).plus(new Big(p.gamma_bps).times(dx));\n let numerator = new Big(p.y).times(dx).times(p.gamma_bps);\n let dyFloat = numerator.div(denom).round();\n return dyFloat;\n}\n\n/** calculateOptimalOutput\n * This is the main function, which calculates optimal values of inputToken to swap into each pool.\n * @param pools list of relevant AMM pools containing inputToken and outputToken\n * @param inputAmount the numeric total amount of inputToken to be traded into the group of swap pools.\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns normalizedDxArray an array containing the amount allocations of inputToken per pool in the list of pools.\n */\nexport function calculateOptimalOutput(\n pools: Pool[],\n inputAmount: string,\n inputToken: string,\n outputToken: string\n) {\n let mu = solveForMuFloat(pools, inputAmount, inputToken, outputToken);\n let dxArray: Big[] = [];\n let negativeDxValsFlag = false;\n for (var i = 0; i < pools.length; i++) {\n let pool = formatPoolNew(pools[i], inputToken, outputToken);\n let dx = calculate_dx_float(mu, pool, inputToken, outputToken);\n if (dx.lt(0)) {\n negativeDxValsFlag = true;\n }\n let dxInt = new Big(dx).round();\n dxArray.push(dxInt);\n }\n if (negativeDxValsFlag) {\n dxArray = reducePools(pools, dxArray, inputAmount, inputToken, outputToken);\n }\n let dxArraySum = new Big(0);\n for (var i = 0; i < dxArray.length; i++) {\n dxArraySum = dxArraySum.plus(dxArray[i]);\n }\n let tempAllocationsArray = [];\n for (var i = 0; i < dxArray.length; i++) {\n let ndx = new Big(dxArray[i])\n .times(inputAmount)\n .div(dxArraySum)\n .round();\n tempAllocationsArray.push(ndx);\n }\n let allocationsArray = checkIntegerSumOfAllocations(\n tempAllocationsArray,\n inputAmount\n );\n let normalizedDxArray = [];\n for (var i = 0; i < allocationsArray.length; i++) {\n let ndx = allocationsArray[i];\n normalizedDxArray.push(BigInt(ndx));\n pools[i]['partialAmountIn'] = ndx.toString();\n }\n return normalizedDxArray;\n}\n\n/** reducePools\n * This function is used to implement part of the non-linear slack variables in the lagrange - multiplier\n * solution for parallel swap. Part of what comes out of the math is that sometimes, the optimal allocation for a pool\n * can be negative, which makes no physical sense. When this occurs, that particular pool needs to be flagged and the\n * lagrange constraint applied to force the allocation to be zero.\n * This function takes an already-solved set of pools, input allocation per pool, the total input amount, and the\n * inputToken name and outputToken name, and determines which, if any, allocations need to be set to zero.\n * However, when this occurs, and a pool is essentially ignored from the list, then the calculation for mu must be re-done.\n * So the calculateOptimalOutput function is then called on the reduced set of pools, and if no negative allocation values remain,\n * then the allocations on the reduced set is determined, and values of zero are put in for the 'failed' pools.\n * @param pools list of pools that contain inputToken and outputToken\n * @param dxArray list of input allocation per pool\n * @param inputAmount total amount of inputToken to be traded among the pools\n * @param inputToken the name of the inputToken\n * @param outputToken the name of the outputToken\n * @returns newFullDxVec the new full list of input allocations the same length as dxArray, containing zeros for failed pools.\n */\nexport function reducePools(\n pools: Pool[],\n dxArray: Big[],\n inputAmount: string,\n inputToken: string,\n outputToken: string\n) {\n let goodIndices = [];\n for (var i = 0; i < dxArray.length; i++) {\n let dx = dxArray[i];\n if (dx.gte(0)) {\n goodIndices.push(i);\n }\n }\n if (goodIndices.length < 1) {\n // console.log(\"ERROR OCCURRED -- ALL DX VALUES WERE NEGATIVE\")\n return dxArray;\n }\n let newPools = [];\n for (var j = 0; j < dxArray.length; j++) {\n if (goodIndices.includes(j)) {\n newPools.push(pools[j]);\n }\n }\n let newDxVec = calculateOptimalOutput(\n newPools,\n inputAmount,\n inputToken,\n outputToken\n );\n let goodInd2newdx = {};\n for (var k = 0; k < newDxVec.length; k++) {\n goodInd2newdx[goodIndices[k]] = newDxVec[k];\n }\n let newFullDxVec = [];\n for (var ii = 0; ii < pools.length; ii++) {\n if (goodIndices.includes(ii)) {\n newFullDxVec.push(goodInd2newdx[ii]);\n } else {\n newFullDxVec.push(0);\n }\n }\n return newFullDxVec;\n}\n\nexport function checkIntegerSumOfAllocations(\n allocations: Big[] | string[] | BigInt[],\n totalInput: Big | string | BigInt\n) {\n var totalInput = new Big(totalInput);\n var allocations:\n | Big[]\n | string[]\n | BigInt[] = allocations.map((item: Big | string | BigInt) =>\n new Big(item).round()\n );\n let alloSum = allocations\n .map(item => new Big(item))\n .reduce((a, b) => a.plus(b), new Big(0));\n let offset = totalInput.minus(alloSum);\n //get largest allocation.\n let currMax = new Big(0);\n let currMaxInd = 0;\n for (var i = 0; i < allocations.length; i++) {\n if (allocations[i].gt(currMax)) {\n currMaxInd = i;\n currMax = allocations[i];\n }\n }\n let newAllocations = [];\n for (var j = 0; j < allocations.length; j++) {\n if (j === currMaxInd) {\n newAllocations.push(allocations[j].plus(offset).toString());\n } else {\n newAllocations.push(allocations[j].toString());\n }\n }\n return newAllocations;\n}\n","/* eslint-disable no-undef */\n////////////////////////////////////////////////////////////////////////////\n// SMART ROUTE SWAP LOGIC\n////////////////////////////////////////////////////////////////////////////\nimport Big from 'big.js';\nimport { checkIntegerSumOfAllocations } from './parallelSwapLogic';\n\nimport { TokenMetadata } from '../types';\n\nimport { ftGetTokenMetadata } from '../ref';\n\nimport { percentLess, toNonDivisibleNumber } from '../utils';\nBig.RM = 0;\nBig.DP = 40;\nBig.NE = -40;\nBig.PE = 40;\n\nfunction bisqrt(value) {\n // For some ridiculous reason, the .sqrt() method for Big decimals is extremely slow (~10-20ms),\n // which isn't so bad until you need to use it a bunch of times.\n // Since we're dealing with super large numbers anyway, we can convert the Big decimal number into a BigInt,\n // then run this BigInt Newton iteration square root function instead, and then convert back into a\n // Big number. And it speeds up the operation by a crazy factor, ~10x faster.\n if (value < BigInt(0)) {\n throw 'square root of negative numbers is not supported';\n }\n\n if (value < BigInt(2)) {\n return value;\n }\n\n function newtonIteration(n, x0) {\n const x1 = (n / x0 + x0) >> BigInt(1);\n if (x0 === x1 || x0 === x1 - BigInt(1)) {\n return x0;\n }\n return newtonIteration(n, x1);\n }\n\n return newtonIteration(value, BigInt(1));\n}\n\nfunction getBetaForRoute(route, path) {\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n let p = route[0];\n var beta = new Big(p.reserves[path[0]]);\n } else if (route.length == 2) {\n let p1 = route[0];\n let p2 = route[1];\n var beta = new Big(p1.reserves[path[0]]).times(\n new Big(p2.reserves[path[1]])\n );\n }\n return beta;\n}\n\nfunction getEpsilonForRoute(route, path) {\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n // Single Hop case\n let p = route[0];\n let gamma = new Big(10000).minus(new Big(p.fee)).div(new Big(10000));\n var epsilon = Big(gamma);\n } else if (route.length == 2) {\n //Double Hop Case\n let p1 = route[0];\n let p2 = route[1];\n let gamma1 = new Big(10000).minus(new Big(p1.fee)).div(new Big(10000));\n let gamma2 = new Big(10000).minus(new Big(p2.fee)).div(Big(10000));\n var epsilon = new Big(p2.reserves[path[1]])\n .times(new Big(gamma1))\n .plus(new Big(p1.reserves[path[1]]).times(gamma1).times(gamma2));\n }\n return epsilon;\n}\n\nfunction getAlphaForRoute(route, path) {\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n //console.log('single hop')\n let p = route[0];\n let inputToken = path[0];\n let outputToken = path[1];\n let gamma = new Big(10000).minus(new Big(p.fee)).div(new Big(10000));\n let key1 = p.token1Id;\n let key2 = p.token2Id;\n let val1 = p.token1Supply;\n let val2 = p.token2Supply;\n p['reserves'] = { [key1]: val1, [key2]: val2 };\n var alpha = new Big(p.reserves[inputToken]).times(\n new Big(p.reserves[outputToken]).times(new Big(gamma))\n );\n } else if (route.length == 2) {\n //console.log('double hop')\n let p1 = route[0];\n let p2 = route[1];\n let key11 = p1.token1Id;\n let key12 = p1.token2Id;\n let val11 = p1.token1Supply;\n let val12 = p1.token2Supply;\n p1['reserves'] = { [key11]: val11, [key12]: val12 };\n let key21 = p2.token1Id;\n let key22 = p2.token2Id;\n let val21 = p2.token1Supply;\n let val22 = p2.token2Supply;\n p2['reserves'] = { [key21]: val21, [key22]: val22 };\n let inputToken = path[0];\n let middleToken = path[1];\n let outputToken = path[2];\n let gamma1 = new Big(10000).minus(Big(p1.fee)).div(new Big(10000));\n let gamma2 = new Big(10000).minus(new Big(p2.fee)).div(new Big(10000));\n let alpha1 = new Big(p1.reserves[inputToken])\n .times(new Big(p1.reserves[middleToken]))\n .times(gamma1);\n let alpha2 = new Big(p2.reserves[middleToken])\n .times(new Big(p2.reserves[outputToken]))\n .times(gamma2);\n var alpha = alpha1.times(alpha2);\n }\n return alpha;\n}\n\nfunction getAlphaSumFromRoutes(routes, nodeRoutes) {\n let alphaSum = new Big(0);\n for (var i in routes) {\n let route = routes[i];\n let nodeRoute = nodeRoutes[i];\n let alpha = getAlphaForRoute(route, nodeRoute);\n // console.log('alpha is...');\n // console.log(alpha.toString());\n // below, we are replacing the built-in Big sqrt() method with a\n // newton-iteration BigInt sqrt function, to speed it up by 10x.\n let radical = new Big(bisqrt(BigInt(new Big(alpha).round().toFixed())));\n // let radical = new Big(alpha).sqrt();\n let epsilon = getEpsilonForRoute(route, nodeRoute);\n let denom = new Big(epsilon);\n alphaSum = alphaSum.plus(radical.div(denom));\n }\n return alphaSum;\n}\n\nfunction getBetaSumFromRoutes(routes, nodeRoutes) {\n let betaSum = new Big(0);\n for (var i in routes) {\n let route = routes[i];\n let nodeRoute = nodeRoutes[i];\n let num = new Big(getBetaForRoute(route, nodeRoute));\n let denom = new Big(getEpsilonForRoute(route, nodeRoute));\n betaSum = betaSum.plus(num.div(denom));\n }\n return betaSum;\n}\n\nfunction getPhiFromRoutes(routes, nodeRoutes, totalInput) {\n let alphaSum = getAlphaSumFromRoutes(routes, nodeRoutes);\n let betaSum = getBetaSumFromRoutes(routes, nodeRoutes);\n let phi = new Big(totalInput).plus(betaSum).div(alphaSum);\n return phi;\n}\n\nfunction getAllocationForRoute(phi, route, path) {\n let alpha = getAlphaForRoute(route, path);\n let beta = getBetaForRoute(route, path);\n let epsilon = getEpsilonForRoute(route, path);\n // below, we are replacing the built-in Big sqrt() method with a\n // newton-iteration BigInt sqrt function, to speed it up by 10x.\n let allocation = new Big(phi)\n .abs()\n .times(new Big(bisqrt(BigInt(new Big(alpha).round().toFixed()))))\n .minus(beta)\n .div(epsilon);\n return allocation;\n}\n\nfunction getAllocationVectorForRoutes(phi, routes, nodeRoutes) {\n let allocationVec = [];\n for (var i in routes) {\n allocationVec.push(getAllocationForRoute(phi, routes[i], nodeRoutes[i]));\n }\n return allocationVec;\n}\n\nfunction getOptimalAllocationForRoutes(routes, nodeRoutes, totalInput) {\n // console.log(\"CALLING GET OPTIMAL ALLOCATION FOR ROUTES:\")\n // console.log(routes)\n var totalInput = new Big(totalInput);\n let phi = getPhiFromRoutes(routes, nodeRoutes, totalInput);\n // console.log('PHI CALCULATED TO BE...')\n // console.log(phi.toString())\n let allocations = getAllocationVectorForRoutes(phi, routes, nodeRoutes);\n if (allocations.every(item => item.lt(new Big(0)))) {\n allocations = allocations.map(item => item.times(new Big(-1.0)));\n }\n if (allocations.some(item => item.lt(new Big(0)))) {\n allocations = reduceRoutes(routes, nodeRoutes, allocations, totalInput);\n }\n let sumAllocations = allocations.reduce((a, b) => a.plus(b), new Big(0));\n let normalizedAllocations = allocations.map(a =>\n a.div(sumAllocations).times(new Big(totalInput))\n );\n return normalizedAllocations;\n}\n\nfunction reduceRoutes(routes, nodeRoutes, allocationVec, totalInput) {\n // console.log(\"RUNNING REDUCE ROUTES\")\n var totalInput = new Big(totalInput);\n let goodIndices = [];\n for (var i in allocationVec) {\n let dx = allocationVec[i];\n // console.log('DX IS...')\n // console.log(dx.toString())\n if (dx.gt(new Big(0))) {\n goodIndices.push(i);\n }\n }\n // console.log('GOOD INDICES ARE...');\n // console.log(goodIndices);\n let newRoutes = [];\n let newNodeRoutes = [];\n for (var i in goodIndices) {\n let goodIndex = goodIndices[i];\n newRoutes.push(routes[goodIndex]);\n newNodeRoutes.push(nodeRoutes[goodIndex]);\n }\n allocationVec = getOptimalAllocationForRoutes(\n newRoutes,\n newNodeRoutes,\n totalInput\n );\n let allocationDict = {};\n for (var i in goodIndices) {\n allocationDict[goodIndices[i]] = allocationVec[i];\n }\n var allocationVecNew = [];\n for (var i in routes) {\n if (goodIndices.includes(i)) {\n allocationVecNew.push(allocationDict[i]);\n } else {\n let zeroAllocation = new Big(0);\n allocationVecNew.push(zeroAllocation);\n }\n }\n return allocationVecNew;\n}\n\nfunction getNodeRoutesFromPathsAndPoolChains(paths, poolChains) {\n let multiplicity = [];\n for (var i in poolChains) {\n let pc = poolChains[i];\n let mul = pc\n .map(item => item.length)\n .reduce((elem1, elem2) => elem1 * elem2, 1);\n multiplicity.push(mul);\n }\n let nodeRoutes = [];\n for (var j in paths) {\n let path = paths[j];\n let m = multiplicity[j];\n for (var k = 0; k < m; k++) {\n nodeRoutes.push(path);\n }\n }\n return nodeRoutes;\n}\n\nfunction getPoolChainFromPaths(paths, pools, threshold = 0.001) {\n let poolChains = [];\n for (var pathInd in paths) {\n let path = paths[pathInd];\n let chain = [];\n let pairs = [];\n for (var i = 0; i < path.length - 1; i++) {\n pairs.push([path[i], path[i + 1]]);\n }\n for (var pairInd in pairs) {\n let pair = pairs[pairInd];\n // console.log(pair);\n let tokenPools = getPoolsByToken1ANDToken2(pools, pair[0], pair[1]);\n chain.push(tokenPools);\n }\n poolChains.push(chain);\n }\n // return poolChains;\n let culledPoolChains = getCulledPoolChains(poolChains, threshold);\n\n return culledPoolChains;\n}\n\nfunction getCulledPoolChains(poolChains, threshold = 0.001) {\n let newChains = [];\n for (var pathInd in poolChains) {\n let path = poolChains[pathInd];\n let newPath = [];\n for (var legInd in path) {\n let leg = path[legInd];\n let culledPath = cullPoolsWithInsufficientLiquidity(leg, threshold);\n newPath.push(culledPath);\n }\n newChains.push(newPath);\n }\n return newChains;\n}\n\nfunction getRoutesFromPoolChain(poolChains) {\n let routes = [];\n for (var pci in poolChains) {\n let poolChain = poolChains[pci];\n //get cartesian product of each pool chain to get the list of routes.\n let newRoutes = cartesianProduct(poolChain);\n routes.push(...newRoutes);\n }\n for (var i in routes) {\n if (!routes[i].length) {\n routes[i] = [routes[i]];\n }\n }\n return routes;\n}\n\nfunction getOutputSingleHop(pool, inputToken, outputToken, totalInput) {\n var totalInput = new Big(totalInput);\n // check if pool is forward or backward for inputToken/outputToken cf. token1Id/token2Id\n if (inputToken === pool.token1Id && outputToken === pool.token2Id) {\n // forward Pool\n var reserves = {\n [inputToken]: new Big(pool.token1Supply),\n [outputToken]: new Big(pool.token2Supply),\n };\n } else if (inputToken === pool.token2Id && outputToken === pool.token1Id) {\n // reverse pool\n var reserves = {\n [outputToken]: new Big(pool.token1Supply),\n [inputToken]: new Big(pool.token2Supply),\n };\n } else {\n return new Big(0);\n }\n let gamma = new Big(10000).minus(new Big(pool.fee)).div(new Big(10000));\n // console.log(totalInput)\n // console.log(gamma)\n // console.log(reserves)\n let num = totalInput.times(gamma).times(reserves[outputToken]);\n let denom = reserves[inputToken].plus(gamma.times(totalInput));\n return num.div(denom);\n}\n\nfunction getOutputDoubleHop(\n pools,\n inputToken,\n middleToken,\n outputToken,\n totalInput\n) {\n var totalInput = new Big(totalInput);\n for (var poolIndex in pools) {\n let p = pools[poolIndex];\n p['gamma'] = new Big(10000).minus(new Big(p.fee)).div(new Big(10000));\n }\n let p1 = pools[0];\n let p2 = pools[1];\n\n if (inputToken === p1.token1Id && middleToken === p1.token2Id) {\n // forward Pool\n p1['reserves'] = {\n [inputToken]: new Big(p1.token1Supply),\n [middleToken]: new Big(p1.token2Supply),\n };\n } else if (middleToken === p1.token1Id && inputToken === p1.token2Id) {\n //reverse pool\n p1['reserves'] = {\n [middleToken]: new Big(p1.token1Supply),\n [inputToken]: new Big(p1.token2Supply),\n };\n }\n\n if (middleToken === p2.token1Id && outputToken === p2.token2Id) {\n // forward Pool\n p2['reserves'] = {\n [middleToken]: new Big(p2.token1Supply),\n [outputToken]: new Big(p2.token2Supply),\n };\n } else if (outputToken === p2.token1Id && middleToken === p2.token2Id) {\n //reverse pool\n p2['reserves'] = {\n [outputToken]: new Big(p2.token1Supply),\n [middleToken]: new Big(p2.token2Supply),\n };\n }\n\n let c1 = new Big(p1.reserves[middleToken]);\n let a1 = new Big(p1.reserves[inputToken]);\n let c2 = new Big(p2.reserves[middleToken]);\n let b2 = new Big(p2.reserves[outputToken]);\n let gamma1 = p1.gamma;\n let gamma2 = p2.gamma;\n let num = totalInput\n .times(c1)\n .times(b2)\n .times(gamma1)\n .times(gamma2);\n let denom = c2\n .times(a1)\n .plus(\n totalInput.times(c2.times(gamma1).plus(c1.times(gamma1).times(gamma2)))\n );\n // denom = c2*a1 + totalInput * (c2*gamma1 + c1*gamma1*gamma2)\n\n return num.div(denom);\n}\n\nfunction getOutputFromRoute(route, nodeRoute, allocation) {\n if (new Big(allocation).eq(new Big(0))) {\n return new Big(0);\n } else {\n var allocation = new Big(allocation);\n }\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n // single hop\n let inputToken = nodeRoute[0];\n let outputToken = nodeRoute[1];\n let pool = route[0];\n var output = getOutputSingleHop(pool, inputToken, outputToken, allocation);\n } else if (route.length == 2) {\n // DOUBLE HOP\n let inputToken = nodeRoute[0];\n let middleToken = nodeRoute[1];\n let outputToken = nodeRoute[2];\n let pools = route;\n var output = getOutputDoubleHop(\n pools,\n inputToken,\n middleToken,\n outputToken,\n allocation\n );\n }\n return output;\n}\n\nfunction getOptOutputVec(routes, nodeRoutes, totalInput) {\n let allocations = getOptimalAllocationForRoutes(\n routes,\n nodeRoutes,\n totalInput\n );\n let result = [];\n for (var i in routes) {\n let route = routes[i];\n let nodeRoute = nodeRoutes[i];\n let allocation = allocations[i];\n let output = getOutputFromRoute(route, nodeRoute, allocation);\n result.push(output);\n }\n return {\n result: result,\n allocations: allocations,\n };\n //NOTE -- I made this return an object instead of the tuple returned in python. need to check the places it is called, and specify\n // result field instead of tuple 0 position, and allocations field instead of tuple 1 position.\n}\n\nfunction getBestOptInputAndOutputSlower(routes, nodeRoutes, totalInput) {\n let refDict = getOptOutputVecRefined(routes, nodeRoutes, totalInput);\n let outputRefined = refDict.result;\n let inputRefined = refDict.allocations;\n inputRefined = checkIntegerSumOfAllocations(inputRefined, totalInput);\n let rawDict = getOptOutputVec(routes, nodeRoutes, totalInput);\n let outputRaw = rawDict.result;\n let inputRaw = rawDict.allocations;\n inputRaw = checkIntegerSumOfAllocations(inputRaw, totalInput);\n let res1 = new Big(0);\n let res2 = new Big(0);\n\n for (var n in outputRefined) {\n res1 = res1.plus(outputRefined[n]);\n }\n for (var nn in outputRaw) {\n res2 = res2.plus(outputRaw[nn]);\n }\n // console.log('COMPARING SINGLE HOPS VS DOUBLE')\n // console.log(res1.toString())\n // console.log(res2.toString())\n if (res1.gt(res2)) {\n return { input: inputRefined, output: res1 };\n } else {\n return { input: inputRaw, output: res2 };\n }\n}\n\nfunction getBestOptInputAndOutput(routes, nodeRoutes, totalInput) {\n // let refDict = getOptOutputVecRefined(routes, nodeRoutes, totalInput);\n // let outputRefined = refDict.result;\n // let inputRefined = refDict.allocations;\n // inputRefined = checkIntegerSumOfAllocations(inputRefined, totalInput);\n let rawDict = getOptOutputVec(routes, nodeRoutes, totalInput);\n let outputRaw = rawDict.result;\n let inputRaw = rawDict.allocations;\n inputRaw = checkIntegerSumOfAllocations(inputRaw, totalInput);\n let res1 = new Big(0);\n let res2 = new Big(0);\n\n let res = outputRaw\n .map(v => new Big(v))\n .reduce((bv1, bv2) => bv1.plus(bv2), new Big(0));\n\n return {\n input: inputRaw,\n output: res,\n };\n}\n\nfunction getBestOptOutput(routes, nodeRoutes, totalInput) {\n let outputRefined = getOptOutputVecRefined(routes, nodeRoutes, totalInput)\n .result;\n let outputRaw = getOptOutputVec(routes, nodeRoutes, totalInput).result;\n let res1 = new Big(0);\n let res2 = new Big(0);\n\n for (var n in outputRefined) {\n res1 = res1.plus(outputRefined[n]);\n }\n for (var nn in outputRaw) {\n res2 = res2.plus(outputRaw[nn]);\n }\n if (res1.gt(res2)) {\n return res1;\n } else {\n return res2;\n }\n}\n\nfunction getBestOptInput(routes, nodeRoutes, totalInput) {\n let refDict = getOptOutputVecRefined(routes, nodeRoutes, totalInput);\n let outputRefined = refDict.result;\n let inputRefined = refDict.allocations;\n inputRefined = checkIntegerSumOfAllocations(inputRefined, totalInput);\n let rawDict = getOptOutputVec(routes, nodeRoutes, totalInput);\n let outputRaw = rawDict.result;\n let inputRaw = rawDict.allocations;\n inputRaw = checkIntegerSumOfAllocations(inputRaw, totalInput);\n let res1 = new Big(0);\n let res2 = new Big(0);\n\n for (var n in outputRefined) {\n res1 = res1.plus(outputRefined[n]);\n }\n for (var nn in outputRaw) {\n res2 = res2.plus(outputRaw[nn]);\n }\n // console.log('COMPARING SINGLE HOPS VS DOUBLE')\n // console.log(res1.toString())\n // console.log(res2.toString())\n if (res1.gt(res2)) {\n return inputRefined;\n } else {\n return inputRaw;\n }\n}\n\nfunction getOptOutputVecRefined(routes, nodeRoutes, totalInput) {\n // need to calculate full result.\n // if direct pools exist, need to calculate parallel result. if not, this portion is set to zero output.\n\n // need to compare between outputs of the two results above.\n\n let initLengthRoutes = routes.length;\n let directRouteInds = [];\n for (var routeInd in routes) {\n let route = routes[routeInd];\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n directRouteInds.push(routeInd);\n }\n }\n // console.log('DIRECT ROUTE INDS ARE')\n // console.log(directRouteInds)\n // if (directRouteInds.length < 1) {\n var fullResultAllocations = getOptimalAllocationForRoutes(\n routes,\n nodeRoutes,\n totalInput\n );\n var fullResult = [];\n for (var i in routes) {\n let r = routes[i];\n let nr = nodeRoutes[i];\n let a = fullResultAllocations[i];\n let output = getOutputFromRoute(r, nr, a);\n fullResult.push(output);\n }\n var fullResultTotal = fullResult.reduce((a, b) => a.plus(b), new Big(0));\n\n // } else {\n if (directRouteInds.length > 0) {\n // console.log('DOING SINGLE HOP ONLY')\n let droutes = [];\n let dnodeRoutes = [];\n for (var dri in directRouteInds) {\n let ind = directRouteInds[dri];\n droutes.push(routes[ind]);\n dnodeRoutes.push(nodeRoutes[ind]);\n }\n let dallocations = getOptimalAllocationForRoutes(\n droutes,\n dnodeRoutes,\n totalInput\n );\n let dallocDict = {};\n for (var dd in dallocations) {\n dallocDict[directRouteInds[dd]] = dallocations[dd];\n }\n var pallocations = [];\n\n for (var ii = 0; ii < initLengthRoutes; ii++) {\n if (directRouteInds.includes(ii.toString())) {\n //console.log('ADDING ALLOCATION FOR SINGLE ROUTE')\n pallocations.push(dallocDict[ii]);\n } else {\n pallocations.push(new Big(0));\n }\n }\n var presult = [];\n for (var j in routes) {\n let route = routes[j];\n let nodeRoute = nodeRoutes[j];\n let allocation = pallocations[j];\n let output = getOutputFromRoute(route, nodeRoute, allocation);\n presult.push(output);\n }\n var presultTotal = presult.reduce((a, b) => a.plus(b), new Big(0));\n } else {\n var presultTotal = new Big(0);\n }\n if (presultTotal.gt(fullResultTotal)) {\n var result = presult;\n var allocations = pallocations;\n } else {\n var result = fullResult;\n var allocations = fullResultAllocations;\n }\n // NEED TO COMPARE BETWEEEN DIRECT AND MULTI HOP TO GET BEST OUTPUT\n return {\n result: result,\n allocations: allocations,\n };\n}\n\nasync function getBestOptimalAllocationsAndOutputs(\n pools,\n inputToken,\n outputToken,\n totalInput,\n maxPathLength = 3,\n threshold = 0.001\n) {\n var totalInput = new Big(totalInput);\n let paths = await getPathsFromPools(\n pools,\n inputToken,\n outputToken,\n maxPathLength\n );\n if (!paths.length) {\n return {\n allocations: [],\n outputs: new Big(0),\n routes: [],\n nodeRoutes: [],\n };\n }\n let poolChains = await getPoolChainFromPaths(paths, pools, threshold);\n\n let routes = await getRoutesFromPoolChain(poolChains);\n let nodeRoutes = await getNodeRoutesFromPathsAndPoolChains(paths, poolChains);\n // let allocations = await getBestOptInput(routes, nodeRoutes, totalInput);\n // // fix integer rounding for allocations:\n // allocations = checkIntegerSumOfAllocations(allocations, totalInput);\n // let outputs = getBestOptOutput(routes, nodeRoutes, totalInput);\n let inputOutput = await getBestOptInputAndOutput(\n routes,\n nodeRoutes,\n totalInput\n );\n let allocations = inputOutput.input;\n let outputs = inputOutput.output;\n\n return {\n allocations: allocations,\n outputs: outputs,\n routes: routes,\n nodeRoutes: nodeRoutes,\n };\n}\n\nfunction getHopsFromRoutes(routes, nodeRoutes, allocations) {\n let hops = [];\n for (var i in routes) {\n var route = routes[i];\n var nodeRoute = nodeRoutes[i];\n var allocation = allocations[i];\n if (!route.length) {\n route = [route];\n }\n if (!route[0]) {\n continue;\n }\n let hop = {\n pool: route[0],\n allocation: allocation,\n inputToken: nodeRoute[0],\n outputToken: nodeRoute[1],\n };\n hops.push(hop);\n }\n return hops;\n}\n\nfunction distillHopsByPool(hops) {\n // console.log('some HOPS =');\n // console.log(hops);\n let distilledHops = [];\n let poolIds = [];\n let poolId2allocation = {};\n for (var i in hops) {\n let hop = hops[i];\n if (hop.allocation === '0') {\n continue;\n }\n // console.log(`HOP ${i} IS...`);\n // console.log(hop);\n let poolId = hop.pool['id'];\n if (poolIds.includes(poolId)) {\n poolId2allocation[poolId] = new Big(poolId2allocation[poolId])\n .plus(new Big(hop.allocation))\n .toString();\n } else {\n poolId2allocation[poolId] = new Big(hop.allocation).toString();\n poolIds.push(poolId);\n }\n }\n // let poolsWithOrder = [...new Set(...hops.map((item) => item.pool))]\n let keys = Object.keys(poolId2allocation);\n for (var j in keys) {\n var poolId = keys[j];\n let hop = hops.filter(\n item => item.pool.id.toString() === poolId.toString()\n )[0];\n let distilledHop = {\n pool: hop.pool,\n allocation: poolId2allocation[poolId],\n inputToken: hop.inputToken,\n outputToken: hop.outputToken,\n };\n distilledHops.push(distilledHop);\n }\n return distilledHops;\n}\n\nfunction getDistilledHopActions(distilledHops, slippageTolerance) {\n let actions = [];\n for (var i in distilledHops) {\n let hop = distilledHops[i];\n let expectedAmountOut = getOutputSingleHop(\n hop.pool,\n hop.inputToken,\n hop.outputToken,\n hop.allocation\n );\n let minimumAmountOut = new Big(expectedAmountOut)\n .times(new Big(1).minus(new Big(slippageTolerance).div(100)))\n .round()\n .toString(); //Here, assume slippage tolerance is a percentage. So 1% would be 1.0\n let action = {\n pool_id: hop.pool.id,\n token_in: hop.inputToken,\n token_out: hop.outputToken,\n amount_in: hop.allocation,\n min_amount_out: minimumAmountOut,\n };\n actions.push(action);\n }\n return actions;\n}\nfunction getMiddleTokenTotalsFromFirstHopActions(firstHopActions) {\n let middleTokens = [...new Set(firstHopActions.map(item => item.token_out))];\n let middleTokenTotals = {};\n for (var i in middleTokens) {\n let middleToken = middleTokens[i];\n let mtActions = firstHopActions.filter(\n item => item.token_out === middleToken\n );\n let mtTotal = mtActions\n .map(item => new Big(item.min_amount_out))\n .reduce((a, b) => a.plus(b), new Big(0))\n .toString();\n middleTokenTotals[middleToken] = mtTotal;\n }\n return middleTokenTotals;\n}\nfunction getRoutesAndAllocationsForMiddleToken(\n routes,\n nodeRoutes,\n allocations,\n middleToken,\n middleTokenTotal\n) {\n // get routes that use middle token.\n // (input route alloction) /sum(input allocations of routes with middle token) * (total_middleToken)\n let mask = [];\n for (var i in nodeRoutes) {\n if (nodeRoutes[i][1] === middleToken) {\n mask.push(true);\n } else {\n mask.push(false);\n }\n }\n let froutes = [];\n let fallocations = [];\n let fnoderoutes = [];\n for (var i in routes) {\n if (mask[i]) {\n froutes.push(routes[i]);\n fallocations.push(allocations[i]);\n fnoderoutes.push(nodeRoutes[i]);\n }\n }\n let sumfallocations = fallocations.reduce(\n (a, b) => new Big(a).plus(new Big(b)),\n new Big(0)\n );\n let middleAllocations = fallocations.map(item =>\n new Big(item).div(sumfallocations).times(new Big(middleTokenTotal))\n );\n let secondHopRoutes = froutes.map(item => [item[1]]);\n let secondHopNodeRoutes = fnoderoutes.map(item => [item[1], item[2]]);\n middleAllocations = checkIntegerSumOfAllocations(\n middleAllocations,\n middleTokenTotal\n );\n return {\n routes: secondHopRoutes,\n nodeRoutes: secondHopNodeRoutes,\n allocations: middleAllocations,\n };\n}\n\nfunction getHopActionsFromRoutes(routes, nodeRoutes, allocations) {\n // console.log('INSIDE GET HOP ACTIONS FROM ROUTES');\n // console.log('ROUTES ARE...');\n // console.log(routes);\n // console.log('NODE ROUTES ARE...');\n // console.log(nodeRoutes);\n // console.log('ALLOCATIONS ARE...');\n // console.log(allocations);\n let totalInput = allocations\n .map(a => new Big(a))\n .reduce((a, b) => a.plus(b), new Big(0))\n .toString();\n let hops = [];\n for (var i in routes) {\n var route = routes[i];\n var nodeRoute = nodeRoutes[i];\n var allocation = allocations[i];\n if (new Big(allocation).eq(new Big(0))) {\n continue;\n }\n if (!route.length) {\n route = [route];\n }\n if (!route[0]) {\n continue;\n }\n for (var j in route) {\n let pool = route[j];\n // console.log('J IS...');\n // console.log(j);\n // console.log('NODE ROUTE IS...');\n // console.log(nodeRoute);\n if (j == 0) {\n //first hop.\n // console.log(nodeRoute[0]);\n // console.log(nodeRoute[1]);\n var hop = {\n pool: pool,\n allocation: allocation.toString(),\n inputToken: nodeRoute[0],\n outputToken: nodeRoute[1],\n nodeRoute: nodeRoute,\n route: route,\n allRoutes: routes,\n allNodeRoutes: nodeRoutes,\n totalInputAmount: totalInput,\n allAllocations: allocations,\n };\n // console.log('FIRST HOP IS...');\n // console.log(hop);\n hops.push(hop);\n if (nodeRoute.length > 2) {\n var middleTokenAllocation = getOutputSingleHop(\n pool,\n nodeRoute[0],\n nodeRoute[1],\n allocation\n );\n }\n } else {\n // second hop\n var hop = {\n pool: pool,\n allocation: middleTokenAllocation.toString(),\n inputToken: nodeRoute[1],\n outputToken: nodeRoute[2],\n nodeRoute: nodeRoute,\n route: route,\n allRoutes: routes,\n allNodeRoutes: nodeRoutes,\n totalInputAmount: totalInput,\n allAllocations: allocations,\n };\n // console.log('SECOND HOP IS...');\n // console.log(hop);\n hops.push(hop);\n }\n }\n }\n // console.log('HOP ACTIONS FOUND TO BE');\n // console.log(hops);\n return hops;\n}\n\n// TODO: Clean this function. I don't need all the \"actions\" just the hops.\n// TODO: re-order actions to ensure each route is complete with zero input for second hop before starting next route.\nfunction getActionListFromRoutesAndAllocations(\n routes,\n nodeRoutes,\n allocations\n) {\n // REPLACE THE CODE BELOW WITH THE FUNCTION HERE.\n return getHopActionsFromRoutes(routes, nodeRoutes, allocations);\n var actions = [];\n var all_hops = [];\n let firstHops = getHopsFromRoutes(routes, nodeRoutes, allocations);\n\n firstHops = firstHops.filter(hop => new Big(hop.allocation).gt(new Big(0)));\n all_hops.push(...firstHops);\n let distilledFirstHops = distillHopsByPool(firstHops);\n let firstHopActions = getDistilledHopActions(\n distilledFirstHops,\n slippageTolerance\n );\n actions.push(...firstHopActions);\n let middleTokenTotals = getMiddleTokenTotalsFromFirstHopActions(\n firstHopActions\n );\n // console.log('first hop actions are...');\n // console.log(firstHopActions);\n let middleTokens = Object.keys(middleTokenTotals);\n // console.log('middle token totals are...');\n // console.log(middleTokenTotals);\n // console.log('middle tokens are...');\n // console.log(middleTokens);\n for (var tokenIndex in middleTokens) {\n var secondHops = [];\n let middleToken = middleTokens[tokenIndex];\n // console.log('current middle token is ');\n // console.log(middleToken);\n let middleTokenTotal = middleTokenTotals[middleToken];\n // console.log('current middle token total is...');\n // console.log(middleTokenTotal);\n let middleTokenRoutesWithAllocations = getRoutesAndAllocationsForMiddleToken(\n routes,\n nodeRoutes,\n allocations,\n middleToken,\n middleTokenTotal\n );\n // console.log('current middle tokens routes with allocations are...');\n // console.log(middleTokenRoutesWithAllocations);\n let middleTokenRoutes = middleTokenRoutesWithAllocations.routes;\n let middleTokenAllocations = middleTokenRoutesWithAllocations.allocations;\n let middleTokenNodeRoutes = middleTokenRoutesWithAllocations.nodeRoutes;\n // console.log('middle token routes are...');\n // console.log(middleTokenRoutes);\n // console.log('middle token allocations are...');\n // console.log(middleTokenAllocations);\n // console.log('middle token node routes are...');\n // console.log(middleTokenNodeRoutes);\n secondHops.push(\n ...getHopsFromRoutes(\n middleTokenRoutes,\n middleTokenNodeRoutes,\n middleTokenAllocations\n )\n );\n // console.log('CURRENT SECOND HOPS', secondHops);\n // console.log(secondHops.length);\n // console.log(secondHops.map((hop) => hop.allocation));\n // console.log('filter out zero allocation 2nd hops:');\n secondHops = secondHops.filter(hop =>\n new Big(hop.allocation).gt(new Big(0))\n );\n // console.log(secondHops);\n all_hops.push(...secondHops);\n // console.log('second hops are currently...');\n // console.log(secondHops);\n let distilledSecondHopsForToken = distillHopsByPool(secondHops);\n // console.log('distilled second hops are...');\n let secondHopActionsForToken = getDistilledHopActions(\n distilledSecondHopsForToken,\n slippageTolerance\n );\n // console.log(secondHopActionsForToken);\n actions.push(...secondHopActionsForToken);\n }\n\n //TODO: NEED TO RUN INTEGER ROUNDING FUNCTION ON MIDDLE TOKEN ALLOCATIONS\n\n // TODO: check the node routes. for double-hop cases, find the hop action for each hop.\n // For now, we are assuming no parallel swaps if there is a double-hop.\n\n // Possible cases:\n // (1) 1 single-hop.\n // (2) Parallel single-hop ?\n // (3) 1 double-hop\n // (4) 2 double-hops\n\n // We only have to worry about re-ordering the actions for cases (3) and (4).\n\n let orderedHops = orderHops(all_hops, routes, nodeRoutes, allocations);\n\n // console.log('ALL HOPS', all_hops);\n return orderedHops;\n // return actions;\n}\n\nfunction orderHops(hops, routes, nodeRoutes, allocations) {\n // first get rid of zero allocation routes\n // console.log('NODE ROUTES ARE...');\n // console.log(nodeRoutes);\n let filteredRoutes = [];\n let filteredNodeRoutes = [];\n let filteredAllocations = [];\n for (var i in routes) {\n // remove zero-allocation routes.\n let allocation = new Big(allocations[i]);\n if (allocation.gt(new Big(0))) {\n filteredAllocations.push(allocation);\n filteredRoutes.push(routes[i]);\n filteredNodeRoutes.push(nodeRoutes[i]);\n }\n // console.log('FILTERED NODE ROUTES ARE...');\n // console.log(filteredNodeRoutes);\n }\n // next check node routes to see if it is case 1, 2, 3, or 4.\n // Possible cases:\n // (1) 1 single-hop.\n // (2) Parallel single-hop ?\n // (3) 1 double-hop\n // (4) 2 double-hops\n\n if (filteredNodeRoutes.length === 1) {\n // only one route.\n let currentNodeRoute = filteredNodeRoutes[0];\n if (currentNodeRoute.length === 2) {\n // case 1.\n return hops;\n } else {\n // case 3. assume there are only 3 nodes (double-hop)\n //make sure order of hops is such that input token precedes output token.\n //make sure the amount_in for second hop is zero (which will grab all of output of first hop to use.)\n let firstHop = hops.filter(\n hop => hop.inputToken === currentNodeRoute[0]\n )[0];\n let secondHop = hops.filter(\n hop => hop.inputToken === currentNodeRoute[1]\n )[0];\n // set second hop amount in to 0 so that it will use whatever was generated by hop 1.\n secondHop.pool.partialAmountIn = '0';\n\n let orderedHops = [firstHop, secondHop];\n return orderedHops;\n }\n } else if (filteredNodeRoutes.length === 2) {\n // two routes.\n let lengthNodeRoutes = filteredNodeRoutes.map(nr => nr.length);\n // sub cases:\n // [2,2] -- parallel swap. (direct) -- case 2\n // [2,3] -- direct swap in parallel with double hop.\n // [3,2] -- double hop in parallel with direct swap.\n // [3,3] -- double hop in parallel with double hop. -- case 4\n let orderedHops = [];\n if (arrayEquals(lengthNodeRoutes, [2, 2])) {\n return hops;\n } else if (arrayEquals(lengthNodeRoutes, [2, 3])) {\n directNodeRoute = filteredNodeRoutes[0];\n doubleNodeRoute = filteredNodeRoutes[1];\n let firstHop = hops.filter(\n hop =>\n hop.inputToken === directNodeRoute[0] &&\n hop.outputToken === directNodeRoute[1]\n )[0];\n let secondHop = hops.filter(\n hop => hop.inputToken === doubleNodeRoute[0]\n )[0];\n let thirdHop = hops.filter(\n hop => hop.outputToken === doubleNodeRoute[2]\n )[0];\n // set third hop amount in to 0 so that it will use whatever was generated by hop 2.\n thirdHop.pool.partialAmountIn = '0';\n orderedHops = [firstHop, secondHop, thirdHop];\n return orderedHops;\n } else if (arrayEquals(lengthNodeRoutes, [3, 2])) {\n directNodeRoute = filteredNodeRoutes[1];\n doubleNodeRoute = filteredNodeRoutes[0];\n let firstHop = hops.filter(\n hop =>\n hop.inputToken === directNodeRoute[0] &&\n hop.outputToken === directNodeRoute[1]\n )[0];\n let secondHop = hops.filter(\n hop => hop.inputToken === doubleNodeRoute[0]\n )[0];\n let thirdHop = hops.filter(\n hop => hop.outputToken === doubleNodeRoute[2]\n )[0];\n // set third hop amount in to 0 so that it will use whatever was generated by hop 2.\n thirdHop.pool.partialAmountIn = '0';\n orderedHops = [firstHop, secondHop, thirdHop];\n return orderedHops;\n } else if (arrayEquals(lengthNodeRoutes, [3, 3])) {\n orderedHops = [];\n\n for (var i in filteredNodeRoutes) {\n let doubleNodeRoute = filteredNodeRoutes[i];\n let doubleHopMiddleToken = doubleNodeRoute[1];\n let firstHop = hops.filter(\n hop =>\n hop.inputToken === doubleNodeRoute[0] &&\n hop.outputToken === doubleHopMiddleToken\n )[0];\n let secondHop = hops.filter(\n hop =>\n hop.inputToken === doubleHopMiddleToken &&\n hop.outputToken === doubleNodeRoute[2]\n )[0];\n // set second hop amount in to 0 so that it will use whatever was generated by hop 1.\n secondHop.pool.partialAmountIn = '0';\n orderedHops.push(firstHop);\n orderedHops.push(secondHop);\n }\n return orderedHops;\n } else {\n return hops;\n }\n for (var i in filteredNodeRoutes) {\n let currentNodeRoute = filteredNodeRoutes[i];\n if (currentNodeRoute.length === 2) {\n }\n }\n }\n\n return hops;\n}\n\n// function getActionListFromRoutesAndAllocationsORIG(\n// routes,\n// nodeRoutes,\n// allocations,\n// slippageTolerance\n// ) {\n// let actions = [];\n// for (var i in routes) {\n// let route = routes[i];\n// let nodeRoute = nodeRoutes[i];\n// let allocation = new Big(allocations[i]);\n// if (allocation.eq(new Big(0))) {\n// continue;\n// }\n// if (!route.length) {\n// route = [route];\n// }\n// if (route.length === 1) {\n// //single hop. only one action.\n// let pool = route[0];\n// let poolId = pool.id;\n// let inputToken = nodeRoute[0];\n// let outputToken = nodeRoute[1];\n// let expectedAmountOut = getOutputSingleHop(\n// pool,\n// inputToken,\n// outputToken,\n// allocation\n// );\n// let minimumAmountOut = expectedAmountOut\n// .times(new Big(1).minus(new Big(slippageTolerance).div(100)))\n// .round()\n// .toString(); //Here, assume slippage tolerance is a percentage. So 1% would be 1.0\n// let action = {\n// pool_id: poolId,\n// token_in: inputToken,\n// token_out: outputToken,\n// amount_in: allocation.round().toString(),\n// min_amount_out: minimumAmountOut.toString(),\n// };\n// actions.push(action);\n// } else if (route.length === 2) {\n// // double hop. two actions.\n// let pool1 = route[0];\n// let pool2 = route[1];\n// let pool1Id = pool1.id;\n// let pool2Id = pool2.id;\n// let inputToken = nodeRoute[0];\n// let middleToken = nodeRoute[1];\n// let outputToken = nodeRoute[2];\n// let expectedAmountOutFirstHop = getOutputSingleHop(\n// pool1,\n// inputToken,\n// middleToken,\n// allocation\n// );\n// let minimumAmountOutFirstHop = expectedAmountOutFirstHop\n// .times(new Big(1).minus(new Big(slippageTolerance).div(100)))\n// .round()\n// .toString(); //Here, assume slippage tolerance is a percentage. So 1% would be 1.0\n\n// let action1 = {\n// pool_id: pool1Id,\n// token_in: inputToken,\n// token_out: middleToken,\n// amount_in: allocation.round().toString(),\n// min_amount_out: minimumAmountOutFirstHop,\n// };\n// let expectedFinalAmountOut = getOutputSingleHop(\n// pool2,\n// middleToken,\n// outputToken,\n// minimumAmountOutFirstHop\n// );\n// let minimumAMountOutSecondHop = expectedFinalAmountOut\n// .times(new Big(1).minus(new Big(slippageTolerance).div(100)))\n// .round()\n// .toString();\n// let action2 = {\n// pool_id: pool2Id,\n// token_in: middleToken,\n// token_out: outputToken,\n// amount_in: minimumAmountOutFirstHop,\n// min_amount_out: minimumAMountOutSecondHop,\n// };\n// actions.push(action1);\n// actions.push(action2);\n// }\n// }\n// return actions;\n// }\n\nfunction* range(start, end) {\n for (; start <= end; ++start) {\n yield start;\n }\n}\n\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n\nfunction* numericCombinations(n, r, loc = []) {\n var idx = loc.length;\n if (idx === r) {\n yield loc;\n return;\n }\n for (let next of range(idx ? last(loc) + 1 : 0, n - r + idx)) {\n yield* numericCombinations(n, r, loc.concat(next));\n }\n}\n\nfunction* combinations(arr, r) {\n for (let idxs of numericCombinations(arr.length, r)) {\n yield idxs.map(i => arr[i]);\n }\n}\n\n// #middleTokenTotals = getMiddleTokenTotals(routes,nodeRoutes,allocations)\n// #TODO: complete this function with middle token checks.\n\n// #consider all routes of length 2 with non-zero allocation. (double-hops)\n// # among these, check for parallel swaps. That is, check for common node routes\n// # for first hop. Then check for common node routes on second hop.\n// # when common node routes occur for the first hop:\n// # 1. Calculate the total expected output of intermediate token.\n// # 2.\n// # when common node routes occur for the second hop:\n// # 1. get a ratio of the input allocations of the full routes associated with\n// # these common node routes. allocate the total intermediate token output\n// # toward these 2nd hop routes in the same ratio as their route input allocations.\n\nexport async function getSmartRouteSwapActions(\n pools,\n inputToken,\n outputToken,\n totalInput,\n allTokens,\n maxPathLength = 3,\n threshold = 0.001,\n numberOfRoutesLimit = 2,\n MAX_NUMBER_PARALLEL_POOLS = 4,\n decimalsCulledPoolIds = []\n) {\n if (!totalInput) {\n return [];\n }\n var totalInput = new Big(totalInput);\n\n // remove pools that have an id from the decimalCulledPoolIds\n pools = pools.filter(p => !decimalsCulledPoolIds.includes(p.id));\n\n let resDict = await getBestOptimalAllocationsAndOutputs(\n pools,\n inputToken,\n outputToken,\n totalInput,\n maxPathLength,\n threshold\n );\n\n let allocations = resDict.allocations;\n\n // let outputs = resDict.outputs;\n let routes = resDict.routes;\n let nodeRoutes = resDict.nodeRoutes;\n\n let sortedIndexValues = argsort(allocations);\n let topIndices = sortedIndexValues.slice(0, 10);\n var reducedRoutes = [];\n var reducedNodeRoutes = [];\n for (var ind of topIndices) {\n reducedRoutes.push(routes[ind]);\n reducedNodeRoutes.push(nodeRoutes[ind]);\n }\n routes = reducedRoutes;\n nodeRoutes = reducedNodeRoutes;\n\n // TODO: compare pairs of routes to get the best allocation pair-wise.\n var currentBestOutput = new Big(0);\n var bestResDict = { routes: [] };\n var bestAllocations = resDict.allocations;\n var bestNodeRoutes = resDict.nodeRoutes;\n var bestRoutes = resDict.routes;\n // first check parallel swap with 4 actions. store result.\n var parallelNodeRoutes = [];\n var parallelRoutes = [];\n for (var n in bestRoutes) {\n let currentNodeRoute = bestNodeRoutes[n];\n if (currentNodeRoute.length == 2) {\n parallelNodeRoutes.push(currentNodeRoute);\n parallelRoutes.push(bestRoutes[n]);\n }\n }\n // console.log(`${parallelNodeRoutes.length} parallel routes found...`);\n var bestRoutesAreParallel = false;\n if (parallelNodeRoutes.length > 0) {\n // first calculate the expected result using only parallel routes.\n // let filteredAllocationsAndOutputs = getOptOutputVecRefined(parallelRoutes, parallelNodeRoutes, totalInput);\n let filteredAllocationsAndOutputs = getOptOutputVec(\n parallelRoutes,\n parallelNodeRoutes,\n totalInput\n );\n let parallellAllocations = filteredAllocationsAndOutputs.allocations;\n let parallelOutputs = filteredAllocationsAndOutputs.result;\n\n if (parallellAllocations.length > MAX_NUMBER_PARALLEL_POOLS) {\n // now sort by allocation value to the top 4 parallel swaps:\n let sortIndices = argsort(parallellAllocations);\n\n sortIndices = sortIndices.slice(0, MAX_NUMBER_PARALLEL_POOLS);\n var filteredParallelRoutes = [];\n var filteredParallelNodeRoutes = [];\n for (var i in sortIndices) {\n filteredParallelRoutes.push(parallelRoutes[sortIndices[i]]);\n filteredParallelNodeRoutes.push(parallelNodeRoutes[sortIndices[i]]);\n }\n filteredAllocationsAndOutputs = getOptOutputVec(\n filteredParallelRoutes,\n filteredParallelNodeRoutes,\n totalInput\n );\n parallellAllocations = filteredAllocationsAndOutputs.allocations;\n parallelOutputs = filteredAllocationsAndOutputs.result;\n }\n\n let parallelOutput = parallelOutputs.reduce(\n (a, b) => a.plus(b),\n new Big(0)\n );\n if (new Big(parallelOutput).gt(currentBestOutput)) {\n bestAllocations = parallellAllocations;\n currentBestOutput = parallelOutput;\n // console.log(\n // 'BEST OUTPUT FROM PARALLEL SWAPS IS NOW... ',\n // currentBestOutput.toString()\n // );\n bestRoutes = parallelRoutes;\n bestNodeRoutes = parallelNodeRoutes;\n bestRoutesAreParallel = true;\n }\n }\n var canHaveTwoRoutes = false;\n // initialize this variable to check if we can have two routes, or if all routes share a pool for an edge case.\n // console.log('THE NUMBER OF ROUTES IS...', routes.length);\n\n for (var i in routes) {\n for (var j in routes) {\n if (j > i) {\n var route1 = routes[i];\n var route2 = routes[j];\n var nodeRoute1 = nodeRoutes[i];\n var nodeRoute2 = nodeRoutes[j];\n // check if they share a pool.\n let route1PoolIds = new Set(route1.map(r => r.id));\n let route2PoolIds = new Set(route2.map(r => r.id));\n var sharePool = false;\n for (var route1PoolId of route1PoolIds) {\n if (route2PoolIds.has(route1PoolId)) {\n sharePool = true;\n }\n }\n if (sharePool) {\n // routes are not independent. skip this pair.\n // console.log('skipping this pair because pool was shared.');\n continue;\n } else {\n canHaveTwoRoutes = true;\n let currentRoutes = [route1, route2];\n let currentNodeRoutes = [nodeRoute1, nodeRoute2];\n\n let filteredAllocationsAndOutputs = getOptOutputVec(\n currentRoutes,\n currentNodeRoutes,\n totalInput\n );\n\n let filteredAllocations = filteredAllocationsAndOutputs.allocations;\n let filteredOutputs = filteredAllocationsAndOutputs.result;\n // console.log('FILTERED ALLOCATIONS:');\n // console.log(filteredAllocations.map((i) => i.toString()));\n // console.log(filteredOutputs);\n let totalOutput = filteredOutputs.reduce(\n (a, b) => a.plus(b),\n new Big(0)\n );\n if (new Big(totalOutput).gt(currentBestOutput)) {\n bestAllocations = filteredAllocations;\n currentBestOutput = totalOutput;\n // console.log('BEST OUTPUT IS NOW... ', currentBestOutput.toString());\n bestRoutes = currentRoutes;\n bestNodeRoutes = currentNodeRoutes;\n bestRoutesAreParallel = false;\n // bestResDict = currentResDict\n }\n\n // if (currentResDict.outputs.gt(currentBestOutput)) {\n // console.log('DIFF IS...', currentResDict.outputs.minus(currentBestOutput).toString());\n // bestResDict = currentResDict;\n // currentBestOutput = bestResDict.outputs;\n // console.log('BEST OUTPUT IS NOW... ', currentBestOutput.toString());\n // console.log(bestResDict.routes);\n // console.log(bestResDict.allocations.map((i) => i.toString()));\n // console.log(bestResDict.outputs.toString());\n }\n }\n }\n }\n\n if (!canHaveTwoRoutes) {\n // now we need to check through the routes in single manner to find the best one:\n for (var i in routes) {\n let currentRoutes = [routes[i]];\n let currentNodeRoutes = [nodeRoutes[i]];\n // let filteredAllocationsAndOutputs = getOptOutputVecRefined(currentRoutes, currentNodeRoutes, totalInput);\n let filteredAllocationsAndOutputs = getOptOutputVec(\n currentRoutes,\n currentNodeRoutes,\n totalInput\n );\n\n let filteredAllocations = filteredAllocationsAndOutputs.allocations;\n let filteredOutputs = filteredAllocationsAndOutputs.result;\n // console.log('FILTERED ALLOCATIONS:');\n // console.log(filteredAllocations.map((i) => i.toString()));\n // console.log(filteredOutputs);\n let totalOutput = filteredOutputs.reduce((a, b) => a.plus(b), new Big(0));\n if (new Big(totalOutput).gt(currentBestOutput)) {\n bestAllocations = filteredAllocations;\n currentBestOutput = totalOutput;\n // console.log('BEST OUTPUT IS NOW... ', currentBestOutput.toString());\n bestRoutes = currentRoutes;\n bestNodeRoutes = currentNodeRoutes;\n bestRoutesAreParallel = false;\n // bestResDict = currentResDict\n }\n }\n }\n\n // resDict = bestResDict;\n\n allocations = bestAllocations;\n\n // let outputs = resDict.outputs;\n routes = bestRoutes;\n nodeRoutes = bestNodeRoutes;\n\n if (routes.length < 1) {\n return [];\n }\n\n // check the top numberOfRoutesLimit\n // console.log('initial allocations are...');\n // console.log(allocations.map((a) => a.toString()));\n // console.log('fixed allocations are...');\n // console.log(allocations.map((a) => new Big(a).toFixed()));\n //SORT BY ALLOCATIONS\n let allSortedIndices = argsort(allocations.map(a => new Big(a)));\n if (bestRoutesAreParallel) {\n numberOfRoutesLimit = 4;\n }\n let sortedIndices = allSortedIndices.slice(0, numberOfRoutesLimit);\n\n // console.log('sorted Indices are');\n // console.log(sortedIndices);\n var filteredRoutes = [];\n var filteredNodeRoutes = [];\n for (var i in sortedIndices) {\n let index = sortedIndices[i];\n filteredRoutes.push(routes[index]);\n filteredNodeRoutes.push(nodeRoutes[index]);\n }\n\n // console.log('filteredRoutes are ...');\n // console.log(filteredRoutes);\n for (var i in filteredRoutes) {\n if (!filteredRoutes[i].length) {\n filteredRoutes[i] = [filteredRoutes[i]];\n }\n }\n // console.log('filtered Node routes are...');\n // console.log(filteredNodeRoutes);\n\n // THE BELOW CODE WILL ENSURE THAT ROUTES ARE INDEPENDENT (e.g. THE ROUTES WILL NOT SHARE A POOL)\n\n let route1PoolIds = filteredRoutes[0].map(pool => pool.id);\n // console.log('route 1 pool ids:');\n // console.log(route1PoolIds);\n if (filteredRoutes.length > 1) {\n let route2PoolIds = filteredRoutes[1].map(pool => pool.id);\n // console.log('route 2 pool ids:');\n // console.log(route2PoolIds);\n var sharedRoute = false;\n for (var i in route2PoolIds) {\n if (route1PoolIds.includes(route2PoolIds[i])) {\n // a pool was shared between routes. need to calculate a new second route.\n // console.log(\n // 'a pool was shared between routes. going to calculate a new second route'\n // );\n sharedRoute = true;\n break;\n }\n }\n }\n\n // NOTE -- this is a much simpler solution than that below. Instead of choosing the next best second route that doesn't share a\n // pool with the first route, we could just use the first route and allocate all inputs to it.\n // but, for larger transactions, it would be better to have option of two independent routes to spread out slippage.\n\n // if (sharedRoute) {\n // filteredRoutes = [filteredRoutes[0]];\n // filteredNodeRoutes = [filteredNodeRoutes[0]];\n // // TODO -- later can add in a second route that doesn't share a pool with first.\n // }\n\n // We're going to find the next-highest allocation route that doesn't share a pool with the first route.\n if (sharedRoute) {\n let allFilteredRoutes = [];\n let allFilteredNodeRoutes = [];\n for (var i in allSortedIndices) {\n allFilteredRoutes.push(routes[allSortedIndices[i]]);\n allFilteredNodeRoutes.push(nodeRoutes[allSortedIndices[i]]);\n }\n let firstRoute = allFilteredRoutes[0];\n // console.log('first route is...');\n // console.log(firstRoute);\n let firstRoutePoolIds = firstRoute.map(pool => pool.id);\n for (var i in allFilteredRoutes) {\n if (!allFilteredRoutes[i].length) {\n allFilteredRoutes[i] = [allFilteredRoutes[i]];\n }\n }\n // console.log('FIRST ROUTE POOL IDS ARE');\n // console.log(firstRoutePoolIds);\n let allFilteredRouteIds = allFilteredRoutes.map(route =>\n route.map(pool => pool.id)\n );\n // console.log('allFilteredRouteIds are ...');\n // console.log(allFilteredRouteIds);\n for (var i in allFilteredRouteIds) {\n // console.log('i is', i);\n // console.log('ALL FILTERED ROUTES [i] IS...');\n // console.log(allFilteredRouteIds[i]);\n for (var j in allFilteredRouteIds[i]) {\n // console.log('j is', j);\n // console.log('ALL FILTERED ROUTES [i][j] IS...');\n // console.log(allFilteredRouteIds[i][j]);\n if (firstRoutePoolIds.includes(allFilteredRouteIds[i][j])) {\n break;\n }\n\n var secondRoute = allFilteredRoutes[i];\n if (!secondRoute.length) {\n secondRoute = [secondRoute];\n }\n filteredRoutes = [allFilteredRoutes[0], secondRoute];\n filteredNodeRoutes = [\n allFilteredNodeRoutes[0],\n allFilteredNodeRoutes[i],\n ];\n break;\n }\n }\n // console.log('new filteredRoutes are ...');\n // console.log(filteredRoutes);\n // console.log('new filtered Node routes are...');\n // console.log(filteredNodeRoutes);\n }\n\n // let filteredAllocations_check = getBestOptInput(\n // filteredRoutes,\n // filteredNodeRoutes,\n // totalInput\n // );\n // let filteredAllocationsAndOutputs = getOptOutputVecRefined(filteredRoutes, filteredNodeRoutes, totalInput);\n let filteredAllocationsAndOutputs = getOptOutputVec(\n filteredRoutes,\n filteredNodeRoutes,\n totalInput\n );\n\n let filteredAllocations = filteredAllocationsAndOutputs.allocations;\n let filteredOutputs = filteredAllocationsAndOutputs.result;\n\n filteredAllocations = checkIntegerSumOfAllocations(\n filteredAllocations,\n totalInput\n ).map(stringAllo => new Big(stringAllo));\n\n let hops = getActionListFromRoutesAndAllocations(\n filteredRoutes,\n filteredNodeRoutes,\n filteredAllocations\n );\n\n var actions = [];\n // console.log('hops are...');\n // console.log(hops);\n\n for (var i in hops) {\n let hopInputTokenMeta = allTokens[hops[i].inputToken]\n ? allTokens[hops[i].inputToken]\n : await ftGetTokenMetadata(hops[i].inputToken, 'token input');\n\n let hopOutputTokenMeta = allTokens[hops[i].outputToken]\n ? allTokens[hops[i].outputToken]\n : await ftGetTokenMetadata(hops[i].outputToken, 'token sm');\n let hopOutputTokenDecimals = hopOutputTokenMeta.decimals;\n\n let expectedHopOutput = getOutputSingleHop(\n hops[i].pool,\n hops[i].inputToken,\n hops[i].outputToken,\n hops[i].allocation\n );\n let decimalEstimate = new Big(expectedHopOutput)\n .div(new Big(10).pow(hopOutputTokenDecimals))\n .toString();\n\n // Need to check if expected Hop Output is > 1. If not, then cull the corresponding pool and re-calculate.\n if (new Big(expectedHopOutput).lt(new Big(1))) {\n // purge the pool and recalculate.\n\n decimalsCulledPoolIds.push(hops[i].pool.id);\n return getSmartRouteSwapActions(\n pools,\n inputToken,\n outputToken,\n totalInput,\n allTokens,\n (maxPathLength = maxPathLength),\n (threshold = threshold),\n (numberOfRoutesLimit = numberOfRoutesLimit),\n (MAX_NUMBER_PARALLEL_POOLS = MAX_NUMBER_PARALLEL_POOLS),\n (decimalsCulledPoolIds = decimalsCulledPoolIds)\n );\n }\n\n if (\n hops[i].inputToken == inputToken &&\n hops[i].outputToken == outputToken\n ) {\n var status = 'parallel swap';\n } else {\n var status = 'stableSmart';\n }\n\n let tokens = await Promise.all(\n hops[i].nodeRoute.map(async t =>\n allTokens[t] ? allTokens[t] : await ftGetTokenMetadata(t, 'smart')\n )\n );\n\n actions[i] = {\n estimate: decimalEstimate,\n pool: {\n fee: hops[i].pool.fee,\n gamma_bps: new Big(10000).minus(new Big(hops[i].pool.fee)), //.div(new Big(10000)), //hops[i].pool.gamma, //new Big(10000).minus(new Big(hops[i].pool.fee)).div(new Big(10000));\n id: hops[i].pool.id,\n partialAmountIn: new Big(hops[i].allocation).round().toString(),\n supplies: {\n [hops[i].pool.token1Id]: hops[i].pool.token1Supply,\n [hops[i].pool.token2Id]: hops[i].pool.token2Supply,\n },\n token0_ref_price: hops[i].pool.token0_price,\n tokenIds: [hops[i].pool.token1Id, hops[i].pool.token2Id],\n Dex: hops[i].pool.Dex,\n },\n status: status,\n token: hopInputTokenMeta,\n outputToken: hops[i].outputToken,\n inputToken: hops[i].inputToken,\n nodeRoute: hops[i].nodeRoute,\n route: hops[i].route,\n allRoutes: hops[i].allRoutes,\n allNodeRoutes: hops[i].allNodeRoutes,\n totalInputAmount: hops[i].totalInputAmount,\n allAllocations: hops[i].allAllocations,\n tokens: tokens,\n routeInputToken: inputToken,\n routeOutputToken: outputToken,\n overallPriceImpact: '0',\n };\n // console.log('INPUT TOKEN IS...');\n // console.log(hops[i].inputToken);\n actions[i].pool.x = actions[i].pool.supplies[hops[i].inputToken];\n actions[i].pool.y = actions[i].pool.supplies[hops[i].outputToken];\n }\n // now set partial amount in for second hops equal to zero:\n // also, set the total price impact value.\n let overallPriceImpact = await calculateSmartRouteV2PriceImpact(\n actions,\n allTokens\n );\n for (var i in actions) {\n let action = actions[i];\n action.overallPriceImpact = overallPriceImpact;\n if (action.outputToken === outputToken && action.inputToken != inputToken) {\n // only want to set second hop partial amount in to zero\n action.pool.partialAmountIn = '0';\n }\n }\n\n return actions;\n}\n\nasync function calculateSmartRouteV2PriceImpact(actions, allTokens) {\n // the goal is to take a weighted average of the price impact per route, treating each one at a time.\n // for single hop (parallel swaps), the price impact is calculated as before.\n // for double-hop, the market price, P, is determined using reserves of tokens in each pool in the route.\n // in both cases, we compare the 'market price', P , determined solely by reserves in pools, and the actual\n // average price, R, expected to be paid in the transaction.\n // the price impact is then defined as (P-R)/R * 100 and is a percentage number, returned as a string.\n\n let deltaY = actions\n .filter(a => a.outputToken == a.routeOutputToken)\n .map(a => new Big(a.estimate))\n .reduce((a, b) => a.plus(b), new Big(0));\n // console.log('DELTA Y IS...');\n // console.log(deltaY.toString());\n\n let inputTokenMeta = actions[0].tokens[0];\n let deltaX = new Big(actions[0].totalInputAmount).div(\n new Big(10).pow(inputTokenMeta.decimals)\n );\n let R = deltaY.div(deltaX);\n var P = new Big(0);\n let routes = actions[0].allRoutes;\n let nodeRoutes = actions[0].allNodeRoutes;\n let allocations = actions[0].allAllocations.map(a => new Big(a));\n let totalAllocations = allocations\n .map(a => new Big(a))\n .reduce((a, b) => a.plus(b), new Big(0));\n\n let weights = allocations.map(a => a.div(totalAllocations));\n\n for (var i in routes) {\n let route = routes[i];\n let nodeRoute = nodeRoutes[i];\n let tokens = await Promise.all(\n nodeRoute.map(async t => {\n return allTokens[t]\n ? allTokens[t]\n : await ftGetTokenMetadata(t, 'sm routes');\n })\n );\n let weight = weights[i];\n if (route.length == 1) {\n let num = new Big(route[0].reserves[nodeRoute[0]]).div(\n new Big(10).pow(tokens[0].decimals)\n );\n let denom = new Big(route[0].reserves[nodeRoute[1]]).div(\n new Big(10).pow(tokens[1].decimals)\n );\n var routeMarketPrice = num.div(denom);\n } else {\n let num1 = new Big(route[0].reserves[nodeRoute[0]]).div(\n new Big(10).pow(tokens[0].decimals)\n );\n\n let denom1 = new Big(route[0].reserves[nodeRoute[1]]).div(\n new Big(10).pow(tokens[1].decimals)\n );\n\n let num2 = new Big(route[1].reserves[nodeRoute[1]]).div(\n new Big(10).pow(tokens[1].decimals)\n );\n\n let denom2 = new Big(route[1].reserves[nodeRoute[2]]).div(\n new Big(10).pow(tokens[2].decimals)\n );\n\n var routeMarketPrice = num1\n .div(denom1)\n .times(num2)\n .div(denom2);\n }\n P = P.plus(weight.times(new Big(1).div(routeMarketPrice)));\n }\n\n let priceImpact = P.minus(R)\n .div(R)\n .times(new Big(100))\n .toString();\n return priceImpact;\n}\n\nfunction decor(arr) {\n var res = [];\n for (var i in arr) {\n res.push([arr[i], i]);\n }\n return res;\n}\nfunction argsort(arr) {\n let undecor = a => a[1]; // leave only index\n let decorated = decor(arr);\n\n return decorated\n .sort((a, b) => new Big(b[0]).minus(new Big(a[0])))\n .map(undecor);\n}\n\nfunction getPoolsByToken1ORToken2(pools, token1, token2) {\n let filteredPools = pools.filter(\n item =>\n item.token1Id === token1 ||\n item.token2Id === token1 ||\n item.token1Id === token2 ||\n item.token2Id === token2\n );\n return filteredPools;\n}\n\nfunction getPoolsByToken1ANDToken2(\n pools,\n token1,\n token2,\n cullZeroLiquidityPools = true\n) {\n let filteredPools = pools.filter(\n item =>\n (item.token1Id === token1 && item.token2Id === token2) ||\n (item.token1Id === token2 && item.token2Id === token1)\n );\n if (cullZeroLiquidityPools) {\n filteredPools = filteredPools.filter(\n item => item.token1Supply != '0' && item.token2Supply != '0'\n );\n }\n return filteredPools;\n}\n\nfunction getLiqudityOfPoolsFromList(pools) {\n let liquidities = [];\n for (var poolInd in pools) {\n let pool = pools[poolInd];\n pool.amounts = [pool.token1Supply, pool.token2Supply];\n let poolBigAmounts = pool.amounts.map(item => new Big(item));\n let liquidity = poolBigAmounts[0].times(poolBigAmounts[1]);\n liquidities.push(liquidity);\n }\n return liquidities;\n}\n\nfunction getNormalizedLiquiditiesFromList(pools) {\n let liquidities = getLiqudityOfPoolsFromList(pools);\n let maxLiq = bigMax(liquidities);\n let normalizedLiquidities = liquidities.map(item => item.div(maxLiq));\n return normalizedLiquidities;\n}\n\nfunction bigMax(arrayOfBigs) {\n if (arrayOfBigs.length < 1) {\n return null;\n }\n let maxElem = arrayOfBigs[0];\n for (var ind in arrayOfBigs) {\n let val = arrayOfBigs[ind];\n if (val.gt(maxElem)) {\n maxElem = val;\n }\n }\n return maxElem;\n}\n\nfunction cullPoolsWithInsufficientLiquidity(pools, threshold = 0.0001) {\n var thresh = new Big(threshold);\n let normLiq = getNormalizedLiquiditiesFromList(pools);\n let filteredPools = [];\n for (var i = 0; i < normLiq.length; i++) {\n if (normLiq[i] > thresh) {\n filteredPools.push(pools[i]);\n }\n }\n return filteredPools;\n}\n\nfunction cartesianProduct(a) {\n let result = a.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat())));\n return result;\n}\n\nfunction addEdge(g, edge) {\n let src = edge[0];\n let dst = edge[1];\n if (Object.keys(g).includes(src)) {\n if (!Object.keys(g[src]).includes(dst)) {\n g[src][dst] = 1;\n }\n } else {\n g[src] = {};\n g[src][dst] = 1;\n }\n if (Object.keys(g).includes(dst)) {\n if (!Object.keys(g[dst]).includes(src)) {\n g[dst][src] = 1;\n }\n } else {\n g[dst] = {};\n g[dst][src] = 1;\n }\n}\n\nfunction addEdges(g, edgeList) {\n for (var n in edgeList) {\n let edge = edgeList[n];\n addEdge(g, edge);\n }\n}\n\nfunction deleteEdge(g, edge) {\n let gNew = JSON.parse(JSON.stringify(g)); // using this to deep clone graph structure\n let e1 = edge[0];\n let e2 = edge[1];\n if (Object.keys(gNew).includes(e1)) {\n if (Object.keys(gNew[e1]).includes(e2)) {\n delete gNew[e1][e2];\n }\n }\n if (Object.keys(gNew).includes(e2)) {\n if (Object.keys(gNew[e2]).includes(e1)) {\n delete gNew[e2][e1];\n }\n }\n return gNew;\n}\n\nfunction deleteNode(g, node) {\n let gNew = JSON.parse(JSON.stringify(g)); // using this to deep clone graph structure\n if (Object.keys(gNew).includes(node)) {\n delete gNew[node];\n }\n let keys = Object.keys(gNew);\n for (var nodeInd in keys) {\n let nodeNow = keys[nodeInd];\n if (Object.keys(gNew[nodeNow]).includes(node)) {\n delete gNew[nodeNow][node];\n }\n }\n return gNew;\n}\n\nfunction dijkstra(graph, s) {\n var solutions = {};\n solutions[s] = {};\n solutions[s].path = [];\n solutions[s].dist = 0;\n\n while (true) {\n var parent = null;\n var nearest = null;\n var dist = Infinity;\n\n //for each existing solution\n for (var n in solutions) {\n if (!solutions[n]) {\n solutions[n] = {};\n }\n if (!solutions[n].path) continue;\n var ndist = solutions[n].dist;\n var adj = graph[n];\n //for each of its adjacent nodes...\n for (var a in adj) {\n //without a solution already...\n if (!solutions[a]) {\n solutions[a] = {};\n }\n if (solutions[a].path) continue;\n //choose nearest node with lowest *total* cost\n var d = adj[a] + ndist;\n if (d < dist) {\n //reference parent\n parent = solutions[n].path;\n nearest = a;\n dist = d;\n }\n }\n }\n\n //no more solutions\n if (dist === Infinity) {\n break;\n }\n\n //extend parent's solution path\n solutions[nearest].path = parent.concat(nearest);\n //extend parent's cost\n solutions[nearest].dist = dist;\n }\n\n return solutions;\n}\n\nfunction shortestPath(g, src, dst, ignore_nodes = [], ignore_edges = []) {\n let gTemp = JSON.parse(JSON.stringify(g)); // using this to deep clone graph structure. If we can use lodash, could use _.cloneDeep(obj)\n // remove nodes\n for (var nodeInd in ignore_nodes) {\n let nodeNow = ignore_nodes[nodeInd];\n gTemp = deleteNode(gTemp, nodeNow);\n }\n // remove edges\n for (var edgeInd in ignore_edges) {\n let edgeNow = ignore_edges[edgeInd];\n gTemp = deleteEdge(gTemp, edgeNow);\n }\n let solution = dijkstra(gTemp, src)[dst];\n solution.path.unshift(src); // original algorithm doesn't include source node in path\n return solution;\n}\n\nfunction* count(firstval = 0, step = 1) {\n let x = firstval;\n while (true) {\n yield x;\n x = x + 1;\n }\n}\n\nclass PathBuffer {\n constructor() {\n this.paths = [];\n this.sortedpaths = [];\n //this.counter = count();\n }\n len() {\n return this.sortedpaths.length;\n }\n\n push(cost, path) {\n if (path && !arrayContains(this.paths, path)) {\n this.sortedpaths.push([cost, path]);\n this.sortedpaths.sort(function(a, b) {\n return a[0] - b[0];\n });\n //heappush(this.sortedpaths, (cost, this.counter.next().value,path));\n this.paths.push(path);\n }\n }\n\n pop() {\n //let val = heappop(this.sortedpaths);\n let val = this.sortedpaths.shift();\n let cost = val[0];\n let path = val[1];\n this.paths.splice(this.paths.indexOf(path), 1);\n return path;\n }\n}\n\nfunction arrayEquals(a, b) {\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((val, index) => val === b[index])\n );\n}\n\nfunction arrayContains(arr, obj) {\n // checks to see if the input array contains a reference object, obj, using\n // JSON.stringify() .\n let obj_json = JSON.stringify(obj);\n for (var itemInd in arr) {\n if (JSON.stringify(arr[itemInd]) == obj_json) {\n return true;\n }\n }\n return false;\n}\n\nfunction* yenFromPy(g, source, target) {\n //adapted from the python implementation in networkx.algorithms.simple_paths.shortest_simple_paths()\n let listA = [];\n let listB = new PathBuffer();\n let prev_path = null;\n\n while (true) {\n if (!prev_path) {\n let sol = shortestPath(g, source, target);\n let length = sol.dist;\n let path = sol.path;\n listB.push(length, path);\n } else {\n let ignore_nodes = [];\n let ignore_edges = [];\n for (var i = 1; i < prev_path.length; i++) {\n let root = prev_path.slice(0, i);\n let root_length = root.length;\n for (var pathInd in listA) {\n let path = listA[pathInd];\n\n if (arrayEquals(path.slice(0, i), root)) {\n let edgeToIgnore = [path[i - 1], path[i]];\n ignore_edges.push(edgeToIgnore);\n }\n }\n try {\n let sol = shortestPath(\n g,\n root[root.length - 1],\n target,\n (ignore_nodes = ignore_nodes),\n (ignore_edges = ignore_edges)\n );\n let length = sol.dist;\n let spur = sol.path;\n let path = root.slice(0, root.length - 1).concat(spur);\n listB.push(root_length + length, path);\n } catch (e) {\n //console.log(`yenFromPy error was... ${e}`)\n //dont do anything.\n }\n ignore_nodes.push(root[root.length - 1]);\n }\n }\n if (listB.sortedpaths) {\n try {\n let path = listB.pop();\n yield path;\n listA.push(path);\n prev_path = path;\n } catch (e) {\n break;\n }\n } else {\n break;\n }\n }\n}\n\nfunction getKShortestPaths(g, source, target, k, maxPathLength = 3) {\n let paths = [];\n if (maxPathLength < 2) {\n var maxPathLength = 2;\n }\n let gen = yenFromPy(g, source, target);\n for (var n = 1; n <= k; n++) {\n try {\n let res = gen.next().value;\n if (res && !arrayContains(paths, res)) {\n if (res.length > maxPathLength) {\n // console.log(\n // `found all hops of length ${\n // maxPathLength - 1\n // } or less... breaking out of generator`\n // );\n break;\n }\n paths.push(res);\n }\n } catch (e) {\n break;\n }\n }\n return paths;\n}\n\nasync function getPathsFromPools(\n pools,\n inputToken,\n outputToken,\n maxPathLength = 3\n) {\n let graph = getGraphFromPoolList(pools);\n return getKShortestPaths(graph, inputToken, outputToken, 100, maxPathLength);\n}\n\nasync function getAllPathsBelowLengthN(g, source, target, N, limit = 100) {\n // use Yen's algorithm to find the paths of length N or below between source and target nodes in graph g.\n\n let paths = [];\n\n let gen = await yenFromPy(g, source, target);\n let currentPathLength = 0;\n let count = 1;\n while (currentPathLength <= N) {\n // console.log(`CURRENT PATH LENGTH IS ${currentPathLength}`)\n try {\n let res = await gen.next().value;\n // console.log(`RES IS ${res}`)\n if (res && !arrayContains(paths, res)) {\n if (res.length > currentPathLength) {\n currentPathLength = res.length;\n if (currentPathLength > N) {\n break;\n }\n }\n paths.push(res);\n }\n count = count + 1;\n if (count > limit) {\n break;\n }\n } catch (e) {\n // console.log(e)\n break;\n }\n }\n return paths;\n}\n\nfunction getGraphFromPoolList(poolList) {\n let pools = poolList.filter(\n item => item.token1Supply != '0' && item.token2Supply != '0'\n );\n let transitions = pools.map(item => [item.token1Id, item.token2Id]);\n let g = {};\n addEdges(g, transitions);\n return g;\n}\n\n////////////////////////////////////\n\n// MAIN FUNCTION\n\n////////////////////////////////////\n\n// TODO -- incorporate the following integrated function, which tries to\n// account for stablecoins within the context of smart routing.\n\n//TODO -- need the right API / hooks for GETSTABLESWAPACTION function and GETPARALLELSWAPACTIONS functions.\n\n//TODO -- transform the actions generated in this function into tranaction to execute.\n\n//TRYING: GETSTABLESWAPACTION <==> instantSwapGetTransactions\n\nexport async function stableSmart(\n pools,\n inputToken,\n outputToken,\n totalInput,\n allTokens\n) {\n let smartRouteActions = await getSmartRouteSwapActions(\n pools,\n inputToken,\n outputToken,\n totalInput,\n allTokens\n );\n return smartRouteActions;\n}\n\nexport function getExpectedOutputFromActionsORIG(actions, outputToken) {\n return actions\n .filter(item => item.outputToken === outputToken)\n .map(item => new Big(item.estimate))\n .reduce((a, b) => a.plus(b), new Big(0));\n}\n\nfunction getFeeForRoute(route) {\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n // Single Hop case\n let p = route[0];\n return p.fee;\n } else if (route.length == 2) {\n //Double Hop Case\n let p1 = route[0];\n let p2 = route[1];\n let fee1 = p1.fee;\n let fee2 = p2.fee;\n return fee1 + fee2;\n }\n}\n\nexport function getAverageFeeForRoutes(routes, nodeRoutes, totalInput) {\n let normalizedAllocations = getOptimalAllocationForRoutes(\n routes,\n nodeRoutes,\n totalInput\n ).map(a => a.div(new Big(totalInput)));\n let averageFee = 0;\n for (var i in routes) {\n averageFee += normalizedAllocations[i] * getFeeForRoute(routes[i]);\n }\n return averageFee;\n}\n","import { TokenMetadata, Pool, StablePool, EstimateSwapView } from '../types';\nimport {\n toReadableNumber,\n toNonDivisibleNumber,\n scientificNotationToString,\n} from '../utils';\nimport Big from 'big.js';\nimport { SameInputTokenError, ZeroInputError, NoPoolError } from '../error';\nimport { ONLY_ZEROS, toPrecision } from '../utils';\nimport _ from 'lodash';\nimport { FEE_DIVISOR } from '../constant';\nimport { getSwappedAmount } from '../stable-swap';\nimport { ftGetTokenMetadata, ftGetTokensMetadata } from '../ref';\nimport { isStablePool } from '../utils';\nimport { getTokens } from '../indexer';\nimport {\n getStablePoolDecimal,\n isStablePoolToken,\n poolFormatter,\n} from '../utils';\nimport {\n stableSmart,\n getExpectedOutputFromActionsORIG,\n //@ts-ignore\n} from './smartRoutingLogic.js';\n\nexport enum PoolMode {\n PARALLEL = 'parallel swap',\n SMART = 'smart routing',\n SMART_V2 = 'stableSmart',\n STABLE = 'stable swap',\n}\n\nexport interface SwapParams {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n simplePools: Pool[];\n options?: SwapOptions;\n}\n\nexport interface SwapOptions {\n enableSmartRouting?: boolean;\n stablePools?: Pool[];\n stablePoolsDetail?: StablePool[];\n}\n\nexport const getSimplePoolEstimate = ({\n tokenIn,\n tokenOut,\n pool,\n amountIn,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n pool: Pool;\n amountIn: string;\n}) => {\n const amount_with_fee = Number(amountIn) * (FEE_DIVISOR - pool.fee);\n const in_balance = toReadableNumber(\n tokenIn.decimals,\n pool.supplies[tokenIn.id]\n );\n const out_balance = toReadableNumber(\n tokenOut.decimals,\n pool.supplies[tokenOut.id]\n );\n const estimate = new Big(\n (\n (amount_with_fee * Number(out_balance)) /\n (FEE_DIVISOR * Number(in_balance) + amount_with_fee)\n ).toString()\n ).toFixed();\n\n return {\n estimate,\n pool,\n outputToken: tokenOut.id,\n inputToken: tokenIn.id,\n };\n};\n\nexport const getStablePoolEstimate = ({\n tokenIn,\n tokenOut,\n amountIn,\n stablePool,\n pool,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n stablePool: StablePool;\n pool?: Pool;\n}) => {\n const STABLE_LP_TOKEN_DECIMALS = getStablePoolDecimal(stablePool);\n\n const [amount_swapped, _, dy] = getSwappedAmount(\n tokenIn.id,\n tokenOut.id,\n amountIn,\n stablePool,\n STABLE_LP_TOKEN_DECIMALS\n );\n\n const amountOut =\n amount_swapped < 0 || isNaN(amount_swapped)\n ? '0'\n : toPrecision(scientificNotationToString(amount_swapped.toString()), 0);\n\n const dyOut =\n amount_swapped < 0 || isNaN(amount_swapped) || isNaN(dy)\n ? '0'\n : toPrecision(scientificNotationToString(dy.toString()), 0);\n\n const rates = stablePool.rates.reduce((acc, cur, i) => {\n return {\n ...acc,\n [stablePool.token_account_ids[i]]: cur,\n };\n }, {});\n\n return {\n estimate: toReadableNumber(STABLE_LP_TOKEN_DECIMALS, amountOut),\n noFeeAmountOut: toReadableNumber(STABLE_LP_TOKEN_DECIMALS, dyOut),\n pool: {\n ...stablePool,\n rates,\n },\n outputToken: tokenOut.id,\n inputToken: tokenIn.id,\n };\n};\n\n/**\n * @description Get the estimate of the amount of tokenOut that can be received\n *\n */\nexport const singlePoolSwap = ({\n tokenIn,\n tokenOut,\n simplePools,\n amountIn,\n stablePools,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n simplePools: Pool[];\n amountIn: string;\n stablePools?: StablePool[];\n}) => {\n if (!simplePools || simplePools.length === 0) {\n throw NoPoolError;\n }\n\n const parsedAmountIn = toNonDivisibleNumber(tokenIn.decimals, amountIn);\n\n // const pools = simplePools.concat(stablePools);\n\n const simplePoolsThisPair = simplePools.filter(\n p => p.tokenIds.includes(tokenIn.id) && p.tokenIds.includes(tokenOut.id)\n );\n\n const estimatesSimplePool = simplePoolsThisPair.map(pool =>\n getSimplePoolEstimate({\n tokenIn,\n tokenOut,\n pool,\n amountIn,\n })\n );\n\n const stablePoolThisPair = stablePools?.filter(\n sp =>\n sp.token_account_ids.includes(tokenIn.id) &&\n sp.token_account_ids.includes(tokenOut.id)\n );\n\n // different stable lp token decimal for different type of pools\n const estimatesStablePool = stablePoolThisPair?.map(stablePool => {\n return getStablePoolEstimate({\n tokenIn,\n tokenOut,\n amountIn,\n stablePool,\n pool: simplePools.find(p => p.id === stablePool.id) as Pool,\n });\n });\n\n const maxSimplePoolEstimate =\n estimatesSimplePool === undefined || estimatesSimplePool.length === 0\n ? undefined\n : estimatesSimplePool.length === 1\n ? estimatesSimplePool[0]\n : _.maxBy(estimatesSimplePool, estimate => Number(estimate.estimate));\n\n const maxStablePoolEstimate =\n estimatesStablePool === undefined || estimatesStablePool.length === 0\n ? undefined\n : estimatesStablePool.length === 1\n ? estimatesStablePool[0]\n : _.maxBy(estimatesStablePool, estimate => Number(estimate.estimate));\n\n if (!maxStablePoolEstimate && !maxSimplePoolEstimate) throw NoPoolError;\n\n maxSimplePoolEstimate &&\n (maxSimplePoolEstimate.pool.partialAmountIn = parsedAmountIn);\n\n maxStablePoolEstimate &&\n (maxStablePoolEstimate.pool.partialAmountIn = parsedAmountIn);\n\n if (!maxStablePoolEstimate) {\n maxSimplePoolEstimate &&\n (maxSimplePoolEstimate.pool.partialAmountIn = parsedAmountIn);\n\n return maxSimplePoolEstimate;\n } else if (!maxSimplePoolEstimate) {\n return maxStablePoolEstimate;\n } else {\n return Number(maxSimplePoolEstimate?.estimate) >\n Number(maxStablePoolEstimate?.estimate)\n ? maxSimplePoolEstimate\n : maxStablePoolEstimate;\n }\n};\n\nexport const getStablePoolsThisPair = ({\n tokenInId,\n tokenOutId,\n stablePools,\n}: {\n tokenInId: string;\n tokenOutId: string;\n stablePools: Pool[];\n}) => {\n return stablePools.filter(\n p =>\n p.tokenIds.includes(tokenInId) &&\n p.tokenIds.includes(tokenOutId) &&\n tokenInId !== tokenOutId\n );\n};\n\nexport const getPoolsByTokens = ({\n pools,\n tokenInId,\n tokenOutId,\n}: {\n pools: Pool[];\n tokenInId: string;\n tokenOutId: string;\n}) => {\n if (tokenInId === tokenOutId) return [];\n\n return pools.filter(\n p => p.tokenIds.includes(tokenInId) && p.tokenIds.includes(tokenOutId)\n );\n};\n\nexport const getPoolEstimate = async ({\n tokenIn,\n tokenOut,\n amountIn,\n stablePoolDetail,\n pool,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n pool: Pool;\n stablePoolDetail?: StablePool;\n}) => {\n if (!!stablePoolDetail) {\n return getStablePoolEstimate({\n tokenIn,\n tokenOut,\n stablePool: stablePoolDetail,\n amountIn,\n pool,\n });\n } else {\n return getSimplePoolEstimate({\n tokenIn,\n tokenOut,\n pool,\n amountIn,\n });\n }\n};\n\nexport async function getHybridStableSmart(\n tokenIn: TokenMetadata,\n tokenOut: TokenMetadata,\n amountIn: string,\n stablePools: Pool[],\n stablePoolsDetail: StablePool[],\n simplePools: Pool[],\n allTokens: Record<string, TokenMetadata>\n) {\n if (\n !isStablePoolToken(stablePoolsDetail, tokenIn.id) &&\n !isStablePoolToken(stablePoolsDetail, tokenOut.id)\n ) {\n return { actions: [], estimate: '0' };\n }\n\n const stablePoolsDetailById = stablePoolsDetail.reduce((acc, cur) => {\n return {\n ...acc,\n [cur.id]: cur,\n };\n }, {} as Record<string, StablePool>);\n\n const parsedAmountIn = toNonDivisibleNumber(tokenIn.decimals, amountIn);\n\n let pool1: Pool, pool2: Pool;\n\n let pools1: Pool[] = [];\n let pools2: Pool[] = [];\n\n let pools1Right: Pool[] = [];\n let pools2Right: Pool[] = [];\n\n let candidatePools: Pool[][] = [];\n\n /**\n * find possible routes for this pair\n *\n *\n */\n\n if (isStablePoolToken(stablePoolsDetail, tokenIn.id)) {\n // first hop will be through stable pool.\n pools1 = stablePools.filter(pool => pool.tokenIds.includes(tokenIn.id));\n\n const otherStables = pools1\n .map(pool => pool.tokenIds.filter(id => id !== tokenIn.id))\n .flat();\n\n for (var otherStable of otherStables) {\n let stablePoolsThisPair = getStablePoolsThisPair({\n tokenInId: otherStable,\n tokenOutId: tokenOut.id,\n stablePools,\n });\n\n let tmpPools = getPoolsByTokens({\n tokenInId: otherStable,\n tokenOutId: tokenOut.id,\n pools: simplePools,\n });\n const tobeAddedPools = tmpPools.concat(stablePoolsThisPair);\n pools2.push(\n ...tobeAddedPools.filter(p => {\n const supplies = Object.values(p.supplies);\n return new Big(supplies[0]).times(new Big(supplies[1])).gt(0);\n })\n );\n }\n }\n\n if (isStablePoolToken(stablePoolsDetail, tokenOut.id)) {\n // second hop will be through stable pool.\n pools2Right = stablePools.filter(pool =>\n pool.tokenIds.includes(tokenOut.id)\n );\n\n const otherStables = pools2Right\n .map(pool => pool.tokenIds.filter(id => id !== tokenOut.id))\n .flat();\n for (let otherStable of otherStables) {\n let stablePoolsThisPair = getStablePoolsThisPair({\n tokenInId: tokenIn.id,\n tokenOutId: otherStable,\n stablePools,\n });\n\n let tmpPools = getPoolsByTokens({\n tokenInId: tokenIn.id,\n tokenOutId: otherStable,\n pools: simplePools,\n });\n\n const tobeAddedPools = tmpPools.concat(stablePoolsThisPair);\n\n pools1Right.push(\n ...tobeAddedPools.filter(p => {\n const supplies = Object.values(p.supplies);\n return new Big(supplies[0]).times(new Big(supplies[1])).gt(0);\n })\n );\n }\n }\n\n // find candidate pools\n\n for (let p1 of pools1) {\n let middleTokens = p1.tokenIds.filter((id: string) => id !== tokenIn.id);\n for (let middleToken of middleTokens) {\n let p2s = pools2.filter(\n p =>\n p.tokenIds.includes(middleToken) &&\n p.tokenIds.includes(tokenOut.id) &&\n middleToken !== tokenOut.id\n );\n let p2 = _.maxBy(p2s, p =>\n Number(\n new Big(toReadableNumber(tokenOut.decimals, p.supplies[tokenOut.id]))\n )\n );\n\n if (middleToken === tokenOut.id) {\n p2 = p1;\n }\n\n if (p1 && p2) {\n if (p1.id === p2.id) candidatePools.push([p1]);\n else candidatePools.push([p1, p2]);\n }\n }\n }\n for (let p1 of pools1Right) {\n let middleTokens = p1.tokenIds.filter((id: string) => id !== tokenIn.id);\n for (let middleToken of middleTokens) {\n let p2s = pools2Right.filter(\n p =>\n p.tokenIds.includes(middleToken) &&\n p.tokenIds.includes(tokenOut.id) &&\n middleToken !== tokenOut.id\n );\n let p2 = _.maxBy(p2s, p =>\n Number(\n new Big(toReadableNumber(tokenOut.decimals, p.supplies[tokenOut.id]))\n )\n );\n\n if (middleToken === tokenOut.id) {\n p2 = p1;\n }\n\n if (p1 && p2) {\n if (p1.id === p2.id) candidatePools.push([p1]);\n else candidatePools.push([p1, p2]);\n }\n }\n }\n\n if (candidatePools.length > 0) {\n const tokensMedata = await ftGetTokensMetadata(\n candidatePools.map(cp => cp.map(p => p.tokenIds).flat()).flat(),\n allTokens\n );\n\n const BestPoolPair =\n candidatePools.length === 1\n ? candidatePools[0]\n : _.maxBy(candidatePools, poolPair => {\n // only one pool case, only for stable tokens\n if (poolPair.length === 1) {\n if (isStablePool(stablePoolsDetail, poolPair[0].id)) {\n const stablePoolThisPair = getStablePoolsThisPair({\n tokenInId: tokenIn.id,\n tokenOutId: tokenOut.id,\n stablePools,\n })[0];\n\n const stablePoolDetailThisPair = stablePoolsDetail.find(\n spd => spd.id === stablePoolThisPair.id\n );\n\n return Number(\n getStablePoolEstimate({\n tokenIn,\n tokenOut,\n stablePool: stablePoolDetailThisPair as StablePool,\n amountIn,\n pool: poolPair[0],\n }).estimate\n );\n } else {\n return Number(\n getSimplePoolEstimate({\n tokenIn,\n tokenOut,\n amountIn,\n pool: poolPair[0],\n }).estimate\n );\n }\n }\n\n const [tmpPool1, tmpPool2] = poolPair;\n const tokenMidId = poolPair[0].tokenIds.find((t: string) =>\n poolPair[1].tokenIds.includes(t)\n ) as string;\n\n const tokenMidMeta = tokensMedata[tokenMidId];\n\n const estimate1 = {\n ...(isStablePool(stablePoolsDetail, tmpPool1.id)\n ? getStablePoolEstimate({\n tokenIn,\n tokenOut: tokenMidMeta,\n amountIn,\n stablePool: stablePoolsDetailById[tmpPool1.id],\n pool: tmpPool1,\n })\n : getSimplePoolEstimate({\n tokenIn,\n tokenOut: tokenMidMeta,\n amountIn,\n pool: tmpPool1,\n })),\n status: PoolMode.SMART,\n };\n\n const estimate2 = {\n ...(isStablePool(stablePoolsDetail, tmpPool2.id)\n ? getStablePoolEstimate({\n tokenIn: tokenMidMeta,\n tokenOut,\n amountIn: estimate1.estimate,\n stablePool: stablePoolsDetailById[tmpPool2.id],\n pool: tmpPool2,\n })\n : getSimplePoolEstimate({\n tokenIn: tokenMidMeta,\n tokenOut,\n pool: tmpPool2,\n amountIn: estimate1.estimate,\n })),\n status: PoolMode.SMART,\n };\n\n return Number(estimate2.estimate);\n });\n\n // one pool case only get best price\n\n if (!BestPoolPair) return { actions: [], estimate: '0' };\n\n if (BestPoolPair.length === 1) {\n const bestPool = BestPoolPair[0];\n const estimate = await getPoolEstimate({\n tokenIn,\n tokenOut,\n amountIn,\n pool: bestPool,\n stablePoolDetail: stablePoolsDetailById[bestPool.id],\n });\n\n return {\n actions: [\n {\n ...estimate,\n status: PoolMode.STABLE,\n\n pool: { ...estimate.pool, partialAmountIn: parsedAmountIn },\n tokens: [tokenIn, tokenOut],\n inputToken: tokenIn.id,\n outputToken: tokenOut.id,\n totalInputAmount: toNonDivisibleNumber(tokenIn.decimals, amountIn),\n },\n ],\n estimate: estimate.estimate,\n };\n }\n\n // two pool case get best price\n [pool1, pool2] = BestPoolPair;\n\n const tokenMidId = BestPoolPair[0].tokenIds.find((t: string) =>\n BestPoolPair[1].tokenIds.includes(t)\n ) as string;\n\n const tokenMidMeta =\n allTokens[tokenMidId] ||\n (await ftGetTokenMetadata(tokenMidId, 'hybridSmartRoutingEstimate'));\n\n const estimate1 = {\n ...(isStablePool(stablePoolsDetail, pool1.id)\n ? getStablePoolEstimate({\n tokenIn,\n tokenOut: tokenMidMeta,\n amountIn,\n stablePool: stablePoolsDetailById[pool1.id],\n pool: pool1,\n })\n : getSimplePoolEstimate({\n tokenIn,\n tokenOut: tokenMidMeta,\n amountIn,\n pool: pool1,\n })),\n tokens: [tokenIn, tokenMidMeta, tokenOut],\n inputToken: tokenIn.id,\n outputToken: tokenMidMeta.id,\n status: PoolMode.SMART,\n };\n\n estimate1.pool = {\n ...estimate1.pool,\n partialAmountIn: parsedAmountIn,\n };\n\n const estimate2 = {\n ...(isStablePool(stablePoolsDetail, pool2.id)\n ? getStablePoolEstimate({\n tokenIn: tokenMidMeta,\n tokenOut,\n amountIn: estimate1.estimate,\n stablePool: stablePoolsDetailById[pool2.id],\n pool: pool2,\n })\n : getSimplePoolEstimate({\n tokenIn: tokenMidMeta,\n tokenOut,\n amountIn: estimate1.estimate,\n pool: pool2,\n })),\n\n tokens: [tokenIn, tokenMidMeta, tokenOut],\n inputToken: tokenMidMeta.id,\n outputToken: tokenOut.id,\n status: PoolMode.SMART,\n };\n\n return { actions: [estimate1, estimate2], estimate: estimate2.estimate };\n }\n\n return { actions: [], estimate: '0' };\n}\n\n// simple pools and stable pools for this pair\nexport const estimateSwap = async ({\n tokenIn,\n tokenOut,\n amountIn,\n simplePools,\n options,\n}: SwapParams) => {\n if (tokenIn.id === tokenOut.id) throw SameInputTokenError;\n\n if (ONLY_ZEROS.test(amountIn)) throw ZeroInputError;\n\n const { enableSmartRouting, stablePools, stablePoolsDetail } = options || {};\n\n const parsedAmountIn = toNonDivisibleNumber(tokenIn.decimals, amountIn);\n\n let singleRouteEstimate: EstimateSwapView[] = [];\n\n try {\n const estimate = singlePoolSwap({\n tokenIn,\n tokenOut,\n simplePools,\n amountIn,\n stablePools: stablePoolsDetail,\n });\n\n singleRouteEstimate = [\n {\n ...estimate,\n status: PoolMode.PARALLEL,\n pool: { ...estimate?.pool, partialAmountIn: parsedAmountIn },\n totalInputAmount: toNonDivisibleNumber(tokenIn.decimals, amountIn),\n tokens: [tokenIn, tokenOut],\n },\n ] as EstimateSwapView[];\n if (!enableSmartRouting) {\n return singleRouteEstimate;\n }\n } catch (error) {\n if (!enableSmartRouting) throw error;\n }\n\n const inputPools = simplePools.map(p => poolFormatter(p));\n\n const allTokens = (await getTokens()) as Record<string, TokenMetadata>;\n\n const simplePoolSmartRoutingActions = await stableSmart(\n inputPools,\n tokenIn.id,\n tokenOut.id,\n parsedAmountIn,\n allTokens\n );\n\n const simplePoolSmartRoutingEstimate = getExpectedOutputFromActionsORIG(\n simplePoolSmartRoutingActions,\n tokenOut.id\n ).toString();\n\n const hybridSmartRoutingRes = await getHybridStableSmart(\n tokenIn,\n tokenOut,\n amountIn,\n stablePools || [],\n stablePoolsDetail || [],\n simplePools,\n allTokens\n );\n\n const hybridSmartRoutingEstimate = hybridSmartRoutingRes.estimate.toString();\n\n if (\n new Big(simplePoolSmartRoutingEstimate || '0').gte(\n hybridSmartRoutingEstimate || '0'\n )\n ) {\n if (!simplePoolSmartRoutingActions?.length) throw NoPoolError;\n\n if (\n typeof singleRouteEstimate !== 'undefined' &&\n singleRouteEstimate &&\n singleRouteEstimate?.[0]?.estimate &&\n new Big(singleRouteEstimate[0].estimate || '0').gt(\n simplePoolSmartRoutingEstimate || '0'\n )\n ) {\n return singleRouteEstimate;\n }\n return simplePoolSmartRoutingActions as EstimateSwapView[];\n } else {\n if (\n typeof singleRouteEstimate !== 'undefined' &&\n singleRouteEstimate &&\n singleRouteEstimate?.[0]?.estimate &&\n new Big(singleRouteEstimate[0].estimate || '0').gt(\n hybridSmartRoutingEstimate || '0'\n )\n ) {\n return singleRouteEstimate;\n }\n\n return hybridSmartRoutingRes.actions as EstimateSwapView[];\n }\n};\n","import {\n Pool,\n PoolRPCView,\n StablePool,\n SmartRoutingInputPool,\n Transaction,\n EstimateSwapView,\n} from './types';\nimport {\n FEE_DIVISOR,\n RATED_POOL_LP_TOKEN_DECIMALS,\n STABLE_LP_TOKEN_DECIMALS,\n} from './constant';\n\nimport {\n transactions,\n utils,\n transactions as nearTransactions,\n} from 'near-api-js';\n\nimport _, { sortBy } from 'lodash';\n\nimport BN from 'bn.js';\n\nimport * as math from 'mathjs';\nimport {\n REF_FI_CONTRACT_ID,\n WRAP_NEAR_CONTRACT_ID,\n STORAGE_TO_REGISTER_WITH_MFT,\n} from './constant';\nimport Big from 'big.js';\nimport { SignAndSendTransactionsParams } from '@near-wallet-selector/core/lib/wallet';\nimport { TokenMetadata } from './types';\nimport { PoolMode } from './v1-swap/swap';\nimport { getSwappedAmount } from './stable-swap';\nimport { NoFeeToPool } from './error';\nimport { CONSTANT_D, POINTLEFTRANGE, POINTRIGHTRANGE } from './constant';\nimport { DCL_POOL_FEE_LIST } from './dcl-swap/dcl-pool';\n\nexport const parsePool = (pool: PoolRPCView, id?: number): Pool => ({\n id: Number(typeof id === 'number' ? id : pool.id),\n tokenIds: pool.token_account_ids,\n supplies: pool.amounts.reduce(\n (acc: { [tokenId: string]: string }, amount: string, i: number) => {\n acc[pool.token_account_ids[i]] = amount;\n return acc;\n },\n {}\n ),\n fee: pool.total_fee,\n shareSupply: pool.shares_total_supply,\n tvl: pool.tvl,\n token0_ref_price: pool.token0_ref_price,\n pool_kind: pool.pool_kind,\n});\n\nexport const poolFormatter = (pool: Pool) => {\n return {\n id: pool.id,\n token1Id: pool.tokenIds[0],\n token2Id: pool.tokenIds[1],\n token1Supply: pool.supplies[pool.tokenIds[0]],\n token2Supply: pool.supplies[pool.tokenIds[1]],\n fee: pool.fee,\n shares: pool.shareSupply,\n token0_price: pool.token0_ref_price || '0',\n } as SmartRoutingInputPool;\n};\n\nexport const isStablePoolToken = (\n stablePools: StablePool[],\n tokenId: string | Number\n) => {\n return stablePools\n .map(p => p.token_account_ids)\n .flat()\n .includes(tokenId.toString());\n};\n\nexport const isStablePool = (\n stablePools: StablePool[],\n poolId: string | number\n) => {\n return stablePools.map(p => p.id.toString()).includes(poolId.toString());\n};\n\nexport const getStablePoolDecimal = (stablePool: StablePool) => {\n return stablePool.pool_kind === 'RATED_SWAP'\n ? RATED_POOL_LP_TOKEN_DECIMALS\n : STABLE_LP_TOKEN_DECIMALS;\n};\n\nexport const round = (decimals: number, minAmountOut: string) => {\n return Number.isInteger(Number(minAmountOut))\n ? minAmountOut\n : Math.ceil(\n Math.round(Number(minAmountOut) * Math.pow(10, decimals)) /\n Math.pow(10, decimals)\n ).toString();\n};\n\nexport const convertToPercentDecimal = (percent: number) => {\n return math.divide(percent, 100);\n};\n\nexport const percentOf = (percent: number, num: number | string) => {\n return math.evaluate(`${convertToPercentDecimal(percent)} * ${num}`);\n};\n\nexport const percentLess = (percent: number, num: number | string) => {\n return math.format(math.evaluate(`${num} - ${percentOf(percent, num)}`), {\n notation: 'fixed',\n });\n};\n\nexport const getGas = (gas: string | undefined) =>\n gas ? new BN(gas) : new BN('100000000000000');\n\nexport const getAmount = (amount: string) =>\n amount ? new BN(utils.format.parseNearAmount(amount) || '0') : new BN('0');\n\nexport const ONLY_ZEROS = /^0*\\.?0*$/;\n\nexport const toReadableNumber = (\n decimals: number,\n number: string = '0'\n): string => {\n if (!decimals) return number;\n\n const wholeStr = number.substring(0, number.length - decimals) || '0';\n const fractionStr = number\n .substring(number.length - decimals)\n .padStart(decimals, '0')\n .substring(0, decimals);\n\n return `${wholeStr}.${fractionStr}`.replace(/\\.?0+$/, '');\n};\n\nexport const toNonDivisibleNumber = (\n decimals: number,\n number: string\n): string => {\n if (decimals === null || decimals === undefined) return number;\n const [wholePart, fracPart = ''] = number.split('.');\n\n return `${wholePart}${fracPart.padEnd(decimals, '0').slice(0, decimals)}`\n .replace(/^0+/, '')\n .padStart(1, '0');\n};\n\nexport const scientificNotationToString = (strParam: string) => {\n let flag = /e/.test(strParam);\n if (!flag || !strParam) return strParam;\n\n let sysbol = true;\n if (/e-/.test(strParam)) {\n sysbol = false;\n }\n\n const negative = Number(strParam) < 0 ? '-' : '';\n\n let index = Number(strParam.match(/\\d+$/)?.[0]);\n\n let basis = strParam.match(/[\\d\\.]+/)?.[0];\n\n if (!index || !basis) return strParam;\n\n const ifFraction = basis.includes('.');\n\n let wholeStr;\n let fractionStr;\n\n if (ifFraction) {\n wholeStr = basis.split('.')[0];\n fractionStr = basis.split('.')[1];\n } else {\n wholeStr = basis;\n fractionStr = '';\n }\n\n if (sysbol) {\n if (!ifFraction) {\n return negative + wholeStr.padEnd(index + wholeStr.length, '0');\n } else {\n if (fractionStr.length <= index) {\n return negative + wholeStr + fractionStr.padEnd(index, '0');\n } else {\n return (\n negative +\n wholeStr +\n fractionStr.substring(0, index) +\n '.' +\n fractionStr.substring(index)\n );\n }\n }\n } else {\n if (!ifFraction)\n return (\n negative +\n wholeStr.padStart(index + wholeStr.length, '0').replace(/^0/, '0.')\n );\n else {\n return (\n negative +\n wholeStr.padStart(index + wholeStr.length, '0').replace(/^0/, '0.') +\n fractionStr\n );\n }\n }\n};\n\nexport const formatWithCommas = (value: string) => {\n const pattern = /(-?\\d+)(\\d{3})/;\n while (pattern.test(value)) {\n value = value.replace(pattern, '$1,$2');\n }\n return value;\n};\n\nexport const toPrecision = (\n number: string,\n precision: number,\n withCommas: boolean = false,\n atLeastOne: boolean = true\n): string => {\n const [whole, decimal = ''] = number.split('.');\n\n let str = `${withCommas ? formatWithCommas(whole) : whole}.${decimal.slice(\n 0,\n precision\n )}`.replace(/\\.$/, '');\n if (atLeastOne && Number(str) === 0 && str.length > 1) {\n var n = str.lastIndexOf('0');\n str = str.slice(0, n) + str.slice(n).replace('0', '1');\n }\n\n return str;\n};\n\nexport const transformTransactions = (\n transactions: Transaction[],\n AccountId: string\n) => {\n const parsedTransactions = transactions.map((t: Transaction) => {\n return {\n signerId: AccountId,\n receiverId: t.receiverId,\n actions: t.functionCalls.map(fc => {\n return {\n type: 'FunctionCall',\n params: {\n methodName: fc.methodName,\n args: fc.args || {},\n gas: getGas(fc.gas)\n .toNumber()\n .toFixed(),\n deposit: utils.format.parseNearAmount(fc.amount || '0')!,\n },\n };\n }),\n };\n });\n\n return parsedTransactions;\n};\n\nexport const WalletSelectorTransactions = (\n transactions: Transaction[],\n AccountId: string\n) => {\n const parsedTransactions = transactions.map((t: Transaction) => {\n return {\n signerId: AccountId,\n receiverId: t.receiverId,\n actions: t.functionCalls.map(fc => {\n return {\n type: 'FunctionCall',\n params: {\n methodName: fc.methodName,\n args: fc.args || {},\n gas: getGas(fc.gas)\n .toNumber()\n .toFixed(),\n deposit: utils.format.parseNearAmount(fc.amount || '0')!,\n },\n };\n }),\n };\n });\n\n return { transactions: parsedTransactions } as SignAndSendTransactionsParams;\n};\n\nexport const separateRoutes = (\n actions: EstimateSwapView[],\n outputToken: string\n) => {\n const res = [];\n let curRoute = [];\n\n for (let i in actions) {\n curRoute.push(actions[i]);\n if (actions[i].outputToken === outputToken) {\n res.push(curRoute);\n curRoute = [];\n }\n }\n\n return res;\n};\n\nexport const calculateExchangeRate = (\n from: string,\n to: string,\n precision?: number\n) => {\n return math\n .floor(math.evaluate(`${to} / ${from}`), precision || 4)\n .toString();\n};\n\nexport const getAvgFee = (\n estimates: EstimateSwapView[],\n outputToken: string,\n parsedAmountIn: string\n) => {\n if (!estimates || estimates.length === 0) {\n return 0;\n }\n\n const routes = separateRoutes(estimates, outputToken);\n\n let fee = new Big(0);\n\n routes.forEach(r => {\n const partialAmountIn = r[0].pool.partialAmountIn || '0';\n\n fee = fee.plus(\n r\n .reduce(\n (acc, cur) => acc.plus(cur.pool.fee || cur.pool.total_fee || 0),\n new Big(0)\n )\n .times(partialAmountIn)\n .div(ONLY_ZEROS.test(parsedAmountIn) ? '1' : parsedAmountIn)\n );\n });\n\n return fee.toNumber();\n};\n\nexport const getAccountName = (AccountId: string) => {\n if (!AccountId) return AccountId;\n\n const [account, network] = AccountId.split('.');\n const niceAccountId = `${account.slice(0, 10)}...${network || ''}`;\n\n return account.length > 10 ? niceAccountId : AccountId;\n};\n\nexport const symbolsArr = ['e', 'E', '+', '-'];\n\nexport const multiply = (factor1: string, factor2: string) => {\n return math.format(math.evaluate(`${factor1} * ${factor2}`), {\n notation: 'fixed',\n });\n};\n\nexport const toInternationalCurrencySystemLongString = (\n labelValue: string,\n percent?: number\n) => {\n return Math.abs(Number(labelValue)) >= 1.0e9\n ? (Math.abs(Number(labelValue)) / 1.0e9).toFixed(percent || 2) + 'B'\n : Math.abs(Number(labelValue)) >= 1.0e6\n ? (Math.abs(Number(labelValue)) / 1.0e6).toFixed(percent || 2) + 'M'\n : Math.abs(Number(labelValue)).toFixed(percent || 2);\n};\n\nexport const percentOfBigNumber = (\n percent: number,\n num: number | string,\n precision: number\n) => {\n const valueBig = math.bignumber(num);\n const percentBig = math.bignumber(percent).div(100);\n\n return toPrecision(\n scientificNotationToString(valueBig.mul(percentBig).toString()),\n precision\n );\n};\n\nexport const toRealSymbol = (symbol: string) => {\n if (!symbol) return '';\n const blackList = ['nUSDO'];\n\n if (symbol === 'nWETH' || symbol === 'WETH') return 'wETH';\n if (blackList.includes(symbol)) return symbol;\n return symbol.charAt(0) === 'n' &&\n symbol.charAt(1) === symbol.charAt(1).toUpperCase()\n ? symbol.substring(1)\n : symbol;\n};\n\nexport const calculateFeeCharge = (fee: number, total: string) => {\n return math.floor(math.evaluate(`(${fee} / ${FEE_DIVISOR}) * ${total}`), 3);\n};\n\nexport const calculateFeePercent = (fee: number) => {\n return math.divide(fee, 100);\n};\n\nexport function getExpectedOutputFromSwapTodos(\n estimates: EstimateSwapView[],\n outputToken: string\n) {\n if (!estimates || estimates.length === 0) return new Big(0);\n\n return estimates\n .filter(item => item.outputToken === outputToken)\n .map(item => new Big(item.estimate || 0))\n .reduce((a, b) => a.plus(b), new Big(0));\n}\n\nexport const calculateAmountReceived = (\n pool: Pool,\n amountIn: string,\n tokenIn: TokenMetadata,\n tokenOut: TokenMetadata\n) => {\n const partialAmountIn = toReadableNumber(tokenIn.decimals, amountIn);\n\n const in_balance = toReadableNumber(\n tokenIn.decimals,\n pool.supplies[tokenIn.id]\n );\n const out_balance = toReadableNumber(\n tokenOut.decimals,\n pool.supplies[tokenOut.id]\n );\n\n const big_in_balance = math.bignumber(in_balance);\n const big_out_balance = math.bignumber(out_balance);\n\n const constant_product = big_in_balance.mul(big_out_balance);\n\n const new_in_balance = big_in_balance.plus(math.bignumber(partialAmountIn));\n\n const new_out_balance = constant_product.div(new_in_balance);\n\n const tokenOutReceived = big_out_balance.minus(new_out_balance);\n\n return tokenOutReceived;\n};\n\nexport const calculateMarketPrice = (\n pool: Pool,\n tokenIn: TokenMetadata,\n tokenOut: TokenMetadata\n) => {\n const cur_in_balance = toReadableNumber(\n tokenIn.decimals,\n pool.supplies[tokenIn.id]\n );\n\n const cur_out_balance = toReadableNumber(\n tokenOut.decimals,\n pool.supplies[tokenOut.id]\n );\n\n return math.evaluate(`(${cur_in_balance} / ${cur_out_balance})`);\n};\n\nexport const calculateSmartRoutingPriceImpact = (\n tokenInAmount: string,\n swapTodos: EstimateSwapView[],\n tokenIn: TokenMetadata,\n tokenMid: TokenMetadata,\n tokenOut: TokenMetadata,\n stablePools: StablePool[]\n) => {\n const isPool1StablePool = isStablePool(stablePools, swapTodos[0].pool.id);\n const isPool2StablePool = isStablePool(stablePools, swapTodos[1].pool.id);\n\n const marketPrice1 = isPool1StablePool\n ? (\n Number(swapTodos[0].pool.rates?.[tokenMid.id]) /\n Number(swapTodos[0].pool.rates?.[tokenIn.id])\n ).toString()\n : calculateMarketPrice(swapTodos[0].pool, tokenIn, tokenMid);\n\n const marketPrice2 = isPool2StablePool\n ? (\n Number(swapTodos[1].pool.rates?.[tokenOut.id]) /\n Number(swapTodos[1].pool.rates?.[tokenMid.id])\n ).toString()\n : calculateMarketPrice(swapTodos[1].pool, tokenMid, tokenOut);\n\n const generalMarketPrice = math.evaluate(`${marketPrice1} * ${marketPrice2}`);\n\n const tokenMidReceived = isPool1StablePool\n ? swapTodos[0].noFeeAmountOut\n : calculateAmountReceived(\n swapTodos[0].pool,\n toNonDivisibleNumber(tokenIn.decimals, tokenInAmount),\n tokenIn,\n tokenMid\n );\n\n const formattedTokenMidReceived = scientificNotationToString(\n tokenMidReceived?.toString() || '0'\n );\n\n let stableOutPool2;\n if (isPool2StablePool) {\n const stablePool2 =\n stablePools.find(p => p.id === swapTodos[1].pool.id) || stablePools[0];\n\n const stableOut = getSwappedAmount(\n tokenMid.id,\n tokenOut.id,\n formattedTokenMidReceived,\n stablePool2,\n getStablePoolDecimal(stablePool2)\n );\n stableOutPool2 =\n stableOut[0] < 0\n ? '0'\n : toPrecision(scientificNotationToString(stableOut[2].toString()), 0);\n stableOutPool2 = toReadableNumber(\n getStablePoolDecimal(stablePool2),\n stableOutPool2\n );\n }\n\n const tokenOutReceived = isPool2StablePool\n ? stableOutPool2\n : calculateAmountReceived(\n swapTodos[1].pool,\n toNonDivisibleNumber(tokenMid.decimals, formattedTokenMidReceived),\n tokenMid,\n tokenOut\n );\n\n const newMarketPrice = math.evaluate(\n `${tokenInAmount} / ${tokenOutReceived}`\n );\n\n const PriceImpact = new Big(newMarketPrice)\n .minus(new Big(generalMarketPrice))\n .div(newMarketPrice)\n .times(100)\n .toString();\n\n return scientificNotationToString(PriceImpact);\n};\nexport const percent = (numerator: string, denominator: string) => {\n return math.evaluate(`(${numerator} / ${denominator}) * 100`);\n};\nexport const calcStableSwapPriceImpact = (\n from: string,\n to: string,\n marketPrice: string = '1'\n) => {\n const newMarketPrice = math.evaluate(`${from} / ${to}`);\n\n return math.format(\n percent(\n math.evaluate(`${newMarketPrice} - ${marketPrice}`),\n newMarketPrice\n ),\n {\n notation: 'fixed',\n }\n );\n};\n\nexport const calculatePriceImpact = (\n pools: Pool[],\n tokenIn: TokenMetadata,\n tokenOut: TokenMetadata,\n tokenInAmount: string\n) => {\n let in_balance: string = '0',\n out_balance: string = '0';\n\n pools.forEach((pool, i) => {\n const cur_in_balance = toReadableNumber(\n tokenIn.decimals,\n pool.supplies[tokenIn.id]\n );\n\n const cur_out_balance = toReadableNumber(\n tokenOut.decimals,\n pool.supplies[tokenOut.id]\n );\n\n in_balance = new Big(in_balance).plus(cur_in_balance).toString();\n out_balance = new Big(out_balance).plus(cur_out_balance).toString();\n });\n\n const finalMarketPrice = math.evaluate(`(${in_balance} / ${out_balance})`);\n\n const separatedReceivedAmount = pools.map(pool => {\n return calculateAmountReceived(\n pool,\n pool.partialAmountIn || '0',\n tokenIn,\n tokenOut\n );\n });\n\n const finalTokenOutReceived = math.sum(...separatedReceivedAmount);\n\n const newMarketPrice = math.evaluate(\n `${tokenInAmount} / ${finalTokenOutReceived}`\n );\n\n const PriceImpact = new Big(newMarketPrice)\n .minus(new Big(finalMarketPrice))\n .div(newMarketPrice)\n .times(100)\n .toString();\n\n return scientificNotationToString(PriceImpact);\n};\n\nexport function calculateSmartRoutesV2PriceImpact(\n actions: any,\n outputToken: string,\n tokenInPara: TokenMetadata,\n stablePools: StablePool[]\n) {\n const routes = separateRoutes(actions, outputToken);\n\n const tokenIn = routes[0][0].tokens?.[0] || tokenInPara;\n\n const totalInputAmount = routes[0][0].totalInputAmount;\n\n const priceImpactForRoutes = routes.map((r, i) => {\n const readablePartialAmountIn = toReadableNumber(\n tokenIn.decimals,\n r[0].pool.partialAmountIn\n );\n\n if (r.length > 1) {\n const tokenIn = r[0].tokens?.[0];\n const tokenMid = r[0].tokens?.[1];\n const tokenOut = r[0].tokens?.[2];\n\n return calculateSmartRoutingPriceImpact(\n readablePartialAmountIn,\n routes[i],\n tokenIn || tokenInPara,\n tokenMid || tokenInPara,\n tokenOut || tokenInPara,\n stablePools\n );\n } else {\n return isStablePool(stablePools, r[0].pool.id)\n ? calcStableSwapPriceImpact(\n readablePartialAmountIn,\n r[0].noFeeAmountOut || '0',\n (\n Number(r[0].pool.rates?.[outputToken]) /\n Number(r[0].pool.rates?.[tokenIn.id])\n ).toString()\n )\n : calculatePriceImpact(\n [r[0].pool],\n r[0].tokens?.[0] || tokenIn,\n r[0].tokens?.[1] || tokenIn,\n readablePartialAmountIn\n );\n }\n });\n\n const rawRes = priceImpactForRoutes.reduce(\n (pre, cur, i) => {\n return pre.plus(\n new Big(routes[i][0].pool.partialAmountIn || '0')\n .div(new Big(totalInputAmount || '1'))\n .mul(cur)\n );\n },\n\n new Big(0)\n );\n\n return scientificNotationToString(rawRes.toString());\n}\n\nexport const getPriceImpact = ({\n estimates,\n tokenIn,\n tokenOut,\n amountIn,\n amountOut,\n stablePools,\n}: {\n estimates: EstimateSwapView[];\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n amountOut: string;\n stablePools: StablePool[];\n}) => {\n let PriceImpactValue: string = '0';\n let priceImpactValueSmartRouting: string = '0';\n let priceImpactValueSmartRoutingV2: string = '0';\n\n if (typeof estimates === 'undefined') return '0';\n\n try {\n if (estimates?.length === 2 && estimates[0].status === PoolMode.SMART) {\n priceImpactValueSmartRouting = calculateSmartRoutingPriceImpact(\n amountIn,\n estimates,\n tokenIn,\n estimates[0].tokens?.[1] || tokenIn,\n tokenOut,\n stablePools\n );\n } else if (\n estimates?.length === 1 &&\n estimates[0].status === PoolMode.STABLE\n ) {\n priceImpactValueSmartRouting = calcStableSwapPriceImpact(\n toReadableNumber(tokenIn.decimals, estimates[0].totalInputAmount),\n estimates[0].noFeeAmountOut || '0',\n (\n Number(estimates[0].pool.rates?.[tokenOut.id]) /\n Number(estimates[0].pool.rates?.[tokenIn.id])\n ).toString()\n );\n } else priceImpactValueSmartRouting = '0';\n } catch (error) {\n priceImpactValueSmartRouting = '0';\n }\n\n try {\n priceImpactValueSmartRoutingV2 = calculateSmartRoutesV2PriceImpact(\n estimates,\n tokenOut.id,\n tokenIn,\n stablePools\n );\n } catch (error) {\n priceImpactValueSmartRoutingV2 = '0';\n }\n\n try {\n if (\n estimates[0].status === PoolMode.SMART ||\n estimates[0].status === PoolMode.STABLE\n ) {\n PriceImpactValue = priceImpactValueSmartRouting;\n } else {\n PriceImpactValue = priceImpactValueSmartRoutingV2;\n }\n\n return PriceImpactValue;\n } catch (error) {\n return '0';\n }\n};\n\nexport const subtraction = (initialValue: string, toBeSubtract: string) => {\n return math.format(math.evaluate(`${initialValue} - ${toBeSubtract}`), {\n notation: 'fixed',\n });\n};\n\nexport function getPoolAllocationPercents(pools: Pool[]) {\n if (pools.length === 1) return ['100'];\n\n if (pools) {\n const partialAmounts = pools.map(pool => {\n return math.bignumber(pool.partialAmountIn);\n });\n\n const ps: string[] = new Array(partialAmounts.length).fill('0');\n\n const sum =\n partialAmounts.length === 1\n ? partialAmounts[0]\n : math.sum(...partialAmounts);\n\n const sortedAmount = sortBy(partialAmounts, p => Number(p));\n\n let minIndexes: number[] = [];\n\n for (let k = 0; k < sortedAmount.length - 1; k++) {\n let minIndex = -1;\n\n for (let j = 0; j < partialAmounts.length; j++) {\n if (partialAmounts[j].eq(sortedAmount[k]) && !minIndexes.includes(j)) {\n minIndex = j;\n minIndexes.push(j);\n break;\n }\n }\n const res = math\n .round(percent(partialAmounts[minIndex].toString(), sum))\n .toString();\n\n if (Number(res) === 0) {\n ps[minIndex] = '1';\n } else {\n ps[minIndex] = res;\n }\n }\n\n const finalPIndex = ps.indexOf('0');\n\n ps[finalPIndex] = subtraction(\n '100',\n ps.length === 1 ? Number(ps[0]) : math.sum(...ps.map(p => Number(p)))\n ).toString();\n\n return ps;\n } else {\n return [];\n }\n}\n\nexport const isMobile = (): boolean => {\n return window.screen.width <= 600;\n};\nexport function divide(numerator: string, denominator: string) {\n return math.format(math.evaluate(`${numerator} / ${denominator}`), {\n notation: 'fixed',\n });\n}\n\nexport const getMax = function(id: string, amount: string) {\n return id !== WRAP_NEAR_CONTRACT_ID\n ? amount\n : Number(amount) <= 0.5\n ? '0'\n : String(Number(amount) - 0.5);\n};\n\nexport function getPointByPrice(\n pointDelta: number,\n price: string,\n decimalRate: number,\n noNeedSlot?: boolean\n) {\n const point = Math.log(+price * decimalRate) / Math.log(CONSTANT_D);\n const point_int = Math.round(point);\n let point_int_slot = point_int;\n if (!noNeedSlot) {\n point_int_slot = Math.floor(point_int / pointDelta) * pointDelta;\n }\n if (point_int_slot < POINTLEFTRANGE) {\n return POINTLEFTRANGE;\n } else if (point_int_slot > POINTRIGHTRANGE) {\n return 800000;\n }\n return point_int_slot;\n}\nexport const feeToPointDelta = (fee: number) => {\n switch (fee) {\n case 100:\n return 1;\n case 400:\n return 8;\n case 2000:\n return 40;\n case 10000:\n return 200;\n default:\n throw NoFeeToPool(fee);\n }\n};\n\nexport const priceToPoint = ({\n tokenA,\n tokenB,\n amountA,\n amountB,\n fee,\n}: {\n tokenA: TokenMetadata;\n tokenB: TokenMetadata;\n amountA: string;\n amountB: string;\n fee: number;\n}) => {\n if (DCL_POOL_FEE_LIST.indexOf(fee) === -1) throw NoFeeToPool(fee);\n\n const decimal_price_A_by_B = new Big(amountB).div(amountA);\n const undecimal_price_A_by_B = decimal_price_A_by_B\n .times(new Big(10).pow(tokenB.decimals))\n .div(new Big(10).pow(tokenA.decimals));\n\n const pointDelta = feeToPointDelta(fee);\n\n const price = decimal_price_A_by_B;\n\n const decimalRate = new Big(10)\n .pow(tokenB.decimals)\n .div(new Big(10).pow(tokenA.decimals))\n .toNumber();\n\n return getPointByPrice(\n pointDelta,\n scientificNotationToString(price.toString()),\n decimalRate\n );\n};\n\nexport const pointToPrice = ({\n tokenA,\n tokenB,\n point,\n}: {\n tokenA: TokenMetadata;\n tokenB: TokenMetadata;\n point: number;\n}) => {\n const undecimal_price = Math.pow(CONSTANT_D, point);\n const decimal_price_A_by_B = new Big(undecimal_price)\n .times(new Big(10).pow(tokenA.decimals))\n .div(new Big(10).pow(tokenB.decimals));\n\n return scientificNotationToString(decimal_price_A_by_B.toString());\n};\n\nexport const registerAccountOnToken = (AccountId: string) => {\n return {\n methodName: 'storage_deposit',\n args: {\n registration_only: true,\n account_id: AccountId,\n },\n gas: '30000000000000',\n amount: STORAGE_TO_REGISTER_WITH_MFT,\n };\n};\n","import {\n keyStores,\n KeyPair,\n InMemorySigner,\n providers,\n transactions as nearTransactions,\n utils,\n} from 'near-api-js';\nimport BN from 'bn.js';\nimport { getConfig } from './constant';\nimport fs from 'fs';\nimport os from 'os';\nimport {\n NoPuiblicKeyError,\n InValidAccessKeyError,\n NoCredential,\n} from './error';\nimport { AccessKeyView } from 'near-api-js/lib/providers/provider';\nimport { TransformedTransaction } from './types';\nimport { Transaction } from './types';\nimport { transformTransactions } from './utils';\nimport { AccountIdMisMatch } from './error';\n\nexport const getKeyStore = () => {\n return typeof window === 'undefined'\n ? new keyStores.InMemoryKeyStore()\n : new keyStores.BrowserLocalStorageKeyStore();\n};\n\nexport const provider = new providers.JsonRpcProvider({\n url: getConfig().nodeUrl,\n});\n\nexport const getMemorySigner = async ({\n AccountId,\n keyPath,\n}: {\n AccountId: string;\n keyPath: string;\n}) => {\n try {\n const homedir = os.homedir();\n const credentials = JSON.parse(\n fs.readFileSync(homedir + keyPath).toString()\n );\n\n const credentialAccountId = credentials?.account_id;\n\n if (!credentialAccountId) throw NoCredential;\n\n if (credentialAccountId !== AccountId) throw AccountIdMisMatch;\n\n const myKeyStore = new keyStores.InMemoryKeyStore();\n myKeyStore.setKey(\n getConfig().networkId,\n AccountId,\n KeyPair.fromString(credentials.private_key)\n );\n\n const signer = new InMemorySigner(myKeyStore);\n\n return signer;\n } catch (error) {\n throw error;\n }\n};\n\nconst validateAccessKey = (\n transaction: TransformedTransaction,\n accessKey: AccessKeyView\n) => {\n if (accessKey.permission === 'FullAccess') {\n return accessKey;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { receiver_id, method_names } = accessKey.permission.FunctionCall;\n\n if (transaction.receiverId !== receiver_id) {\n return null;\n }\n\n return transaction.actions.every(action => {\n if (action.type !== 'FunctionCall') {\n return false;\n }\n\n const { methodName, deposit } = action.params;\n\n if (method_names.length && method_names.includes(methodName)) {\n return false;\n }\n\n return parseFloat(deposit) <= 0;\n });\n};\n\nexport const getSignedTransactionsByMemoryKey = async ({\n transactionsRef,\n AccountId,\n keyPath,\n}: {\n transactionsRef: Transaction[];\n AccountId: string;\n keyPath: string;\n}) => {\n const transactions = transformTransactions(transactionsRef, AccountId);\n\n const block = await provider.block({ finality: 'final' });\n\n const signedTransactions: Array<nearTransactions.SignedTransaction> = [];\n const signer = await getMemorySigner({\n AccountId,\n keyPath,\n });\n\n for (let i = 0; i < transactions.length; i += 1) {\n const transaction = transactions[i];\n\n const publicKey = await signer.getPublicKey(\n AccountId,\n getConfig().networkId\n );\n if (!publicKey) {\n throw NoPuiblicKeyError;\n }\n\n const accessKey = await provider.query<AccessKeyView>({\n request_type: 'view_access_key',\n finality: 'final',\n account_id: AccountId,\n public_key: publicKey.toString(),\n });\n\n if (!validateAccessKey(transaction, accessKey)) {\n throw InValidAccessKeyError;\n }\n\n const tx = nearTransactions.createTransaction(\n AccountId,\n utils.PublicKey.from(publicKey.toString()),\n transactions[i].receiverId,\n accessKey.nonce + i + 1,\n transaction.actions.map(action => {\n const { methodName, args, gas, deposit } = action.params;\n return nearTransactions.functionCall(\n methodName,\n args,\n new BN(gas),\n new BN(deposit)\n );\n }),\n utils.serialize.base_decode(block.header.hash)\n );\n\n const [, signedTx] = await nearTransactions.signTransaction(\n tx,\n signer,\n transactions[i].signerId,\n getConfig().networkId\n );\n signedTransactions.push(signedTx);\n }\n\n return signedTransactions;\n};\n\nexport const sendTransactionsByMemoryKey = async ({\n signedTransactions,\n}: {\n signedTransactions: nearTransactions.SignedTransaction[];\n}) => {\n try {\n const results: Array<providers.FinalExecutionOutcome> = [];\n\n for (let i = 0; i < signedTransactions.length; i += 1) {\n results.push(await provider.sendTransaction(signedTransactions[i]));\n }\n\n return results;\n } catch (err) {\n throw err;\n }\n};\n","import {\n REF_FI_CONTRACT_ID,\n config,\n WRAP_NEAR_CONTRACT_ID,\n NEAR_META_DATA,\n getConfig,\n} from './constant';\nimport {\n keyStores,\n Near,\n providers,\n WalletConnection,\n utils,\n} from 'near-api-js';\nimport { NoAccountIdFound, TokenNotExistError, DCLInValid } from './error';\nimport { getKeyStore } from './near';\n\nimport {\n TokenMetadata,\n FTStorageBalance,\n RefFiViewFunctionOptions,\n} from './types';\nimport { AccountView } from 'near-api-js/lib/providers/provider';\nimport { Transaction } from './types';\nimport { ONE_YOCTO_NEAR, REF_TOKEN_ID, REF_META_DATA } from './constant';\n\nimport metaIconDefaults from './metaIcons';\n\nconst BANANA_ID = 'berryclub.ek.near';\nconst CHEDDAR_ID = 'token.cheddar.near';\nconst CUCUMBER_ID = 'farm.berryclub.ek.near';\nconst HAPI_ID = 'd9c2d319cd7e6177336b0a9c93c21cb48d84fb54.factory.bridge.near';\nconst WOO_ID = '4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near';\n\nexport const REPLACE_TOKENS = [\n BANANA_ID,\n CHEDDAR_ID,\n CUCUMBER_ID,\n HAPI_ID,\n WOO_ID,\n];\n\nexport const near = new Near({\n keyStore: getKeyStore(),\n headers: {},\n ...config,\n});\n\nexport const refFiViewFunction = async ({\n methodName,\n args,\n}: RefFiViewFunctionOptions) => {\n const nearConnection = await near.account(REF_FI_CONTRACT_ID);\n\n return nearConnection.viewFunction(REF_FI_CONTRACT_ID, methodName, args);\n};\n\nexport const ftViewFunction = async (\n tokenId: string,\n { methodName, args }: RefFiViewFunctionOptions\n) => {\n const nearConnection = await near.account(REF_FI_CONTRACT_ID);\n\n return nearConnection.viewFunction(tokenId, methodName, args);\n};\n\nexport const ftGetStorageBalance = (\n tokenId: string,\n AccountId: string\n): Promise<FTStorageBalance | null> => {\n if (!AccountId) throw NoAccountIdFound;\n\n return ftViewFunction(tokenId, {\n methodName: 'storage_balance_of',\n args: { account_id: AccountId },\n });\n};\n\nexport const ftGetBalance = async (tokenId: string, AccountId: string) => {\n if (!AccountId) return '0';\n\n if (tokenId === 'NEAR') {\n return getAccountNearBalance(AccountId).catch(() => '0');\n }\n\n return ftViewFunction(tokenId, {\n methodName: 'ft_balance_of',\n args: {\n account_id: AccountId,\n },\n })\n .then(res => {\n return res;\n })\n .catch(() => '0');\n};\n\nexport const getTotalPools = async () => {\n return refFiViewFunction({\n methodName: 'get_number_of_pools',\n });\n};\n\nexport const ftGetTokenMetadata = async (\n id: string,\n tag?: string\n): Promise<TokenMetadata> => {\n if (id === REF_TOKEN_ID) return REF_META_DATA;\n\n const metadata = await ftViewFunction(id, {\n methodName: 'ft_metadata',\n }).catch(() => {\n throw TokenNotExistError;\n });\n\n if (\n !metadata.icon ||\n id === BANANA_ID ||\n id === CHEDDAR_ID ||\n id === CUCUMBER_ID ||\n id === HAPI_ID ||\n id === WOO_ID ||\n id === WRAP_NEAR_CONTRACT_ID\n ) {\n return {\n ...metadata,\n icon: metaIconDefaults[id],\n id,\n };\n }\n\n return { ...metadata, id };\n};\n\nexport const ftGetTokensMetadata = async (\n tokenIds: string[],\n allTokens: Record<string, TokenMetadata>\n) => {\n const tokensMetadata = await Promise.all(\n tokenIds.map((id: string) => allTokens[id] || ftGetTokenMetadata(id))\n );\n\n return tokensMetadata.reduce((pre, cur, i) => {\n return {\n ...pre,\n [tokenIds[i]]: cur,\n };\n }, {}) as Record<string, TokenMetadata>;\n};\n\nexport const getGlobalWhitelist = async (): Promise<string[]> => {\n const globalWhitelist = await refFiViewFunction({\n methodName: 'get_whitelisted_tokens',\n });\n return Array.from(new Set(globalWhitelist));\n};\n\nexport const getUserRegisteredTokens = async (\n AccountId?: string\n): Promise<string[]> => {\n if (!AccountId) return [];\n\n return refFiViewFunction({\n methodName: 'get_user_whitelisted_tokens',\n args: { account_id: AccountId },\n });\n};\n\nexport const getAccountNearBalance = async (accountId: string) => {\n const provider = new providers.JsonRpcProvider({\n url: getConfig().nodeUrl,\n });\n\n return provider\n .query<AccountView>({\n request_type: 'view_account',\n finality: 'final',\n account_id: accountId,\n })\n .then(data => data.amount);\n};\n\nexport const nearDepositTransaction = (amount: string) => {\n const transaction: Transaction = {\n receiverId: WRAP_NEAR_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'near_deposit',\n args: {},\n gas: '50000000000000',\n amount,\n },\n ],\n };\n\n return transaction;\n};\n\nexport const nearWithdrawTransaction = (amount: string) => {\n const transaction: Transaction = {\n receiverId: WRAP_NEAR_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'near_withdraw',\n args: { amount: utils.format.parseNearAmount(amount) },\n amount: ONE_YOCTO_NEAR,\n },\n ],\n };\n return transaction;\n};\n\nexport const refDCLSwapViewFunction = async ({\n methodName,\n args,\n}: RefFiViewFunctionOptions) => {\n const nearConnection = await near.account(REF_FI_CONTRACT_ID);\n\n if (!config.REF_DCL_SWAP_CONTRACT_ID) throw DCLInValid;\n\n return nearConnection.viewFunction(\n config.REF_DCL_SWAP_CONTRACT_ID,\n methodName,\n args\n );\n};\n\nexport const DCLSwapGetStorageBalance = (\n tokenId: string,\n AccountId: string\n) => {\n return refDCLSwapViewFunction({\n methodName: 'storage_balance_of',\n args: { account_id: AccountId },\n });\n};\n","import { TokenMetadata, Transaction } from '../types';\nimport {\n priceToPoint,\n toNonDivisibleNumber,\n toPrecision,\n registerAccountOnToken,\n} from '../utils';\nimport { ONE_YOCTO_NEAR, WRAP_NEAR_CONTRACT_ID, config } from '../constant';\nimport {\n nearDepositTransaction,\n ftGetStorageBalance,\n refDCLSwapViewFunction,\n} from '../ref';\nimport { NoFeeToPool } from '../error';\n\nexport const DCL_POOL_FEE_LIST = [100, 400, 2000, 10000];\n\ninterface PoolInfo {\n pool_id?: string;\n token_x?: string;\n token_y?: string;\n fee: number;\n point_delta?: number;\n current_point?: number;\n state?: string;\n liquidity?: string;\n liquidity_x?: string;\n max_liquidity_per_point?: string;\n percent?: string;\n total_x?: string;\n total_y?: string;\n tvl?: number;\n token_x_metadata?: TokenMetadata;\n token_y_metadata?: TokenMetadata;\n}\n\nexport const getDCLPoolId = (tokenA: string, tokenB: string, fee: number) => {\n if (DCL_POOL_FEE_LIST.indexOf(fee) === -1) throw NoFeeToPool(fee);\n\n const tokenSeq = [tokenA, tokenB].sort().join('|');\n\n return `${tokenSeq}|${fee}`;\n};\nexport const listDCLPools = () => {\n return refDCLSwapViewFunction({\n methodName: 'list_pools',\n });\n};\n\nexport const getDCLPool = async (pool_id: string) => {\n const [token_x, token_y, fee] = pool_id.split('|');\n\n const token_seq = [token_x, token_y].sort().join('|');\n\n const new_pool_id = `${token_seq}|${fee}`;\n\n return refDCLSwapViewFunction({\n methodName: 'get_pool',\n args: {\n pool_id: new_pool_id,\n },\n }) as Promise<PoolInfo>;\n};\n","import { config, getConfig } from './constant';\nimport { DCL_POOL_FEE_LIST } from './dcl-swap/dcl-pool';\n\nexport const formatError = (msg: string) => {\n return new Error(msg);\n};\n\nexport const unNamedError = formatError('Something wrong happened');\n\nexport const SameInputTokenError = formatError(\n 'Input token should be different with output token'\n);\n\nexport const ZeroInputError = formatError(\n 'Input amount should be greater than 0'\n);\n\nexport const NoPoolError = formatError('No pool found for the input tokens');\n\nexport const NotLoginError = formatError('Please login in first');\n\nexport const SwapRouteError = formatError(\n \"Something wrong happened, we don't get correct routes corrreponding to current input\"\n);\n\nexport const TokenNotExistError = formatError(\n `This token doesn't exist in ${getConfig().networkId}`\n);\n\nexport const NoPuiblicKeyError = formatError('No public key found');\n\nexport const NoLocalSignerError = formatError('No local signer found');\n\nexport const InValidAccessKeyError = formatError('Invalid access key');\n\nexport const AccountIdMisMatch = formatError(\n \"Your input account id doesn't match the account id in the credential\"\n);\n\nexport const NoCredential = formatError('No Credential to such path');\n\nexport const NoAccountIdFound = formatError('No account id found');\n\nexport const NoFeeToPool = (fee: number) =>\n formatError(\n `InValid fee ${fee} to DCL pool, the valid fee should be one of ${DCL_POOL_FEE_LIST}`\n );\n\nexport const DCLInValid = formatError(\n `DCL contract currently in Valid on ${config.networkId}`\n);\n\nexport const NoPoolOnThisPair = (tokenA: string, tokenB: string) =>\n formatError(`No pools on pair ${tokenA} <> ${tokenB}`);\n\nexport const SlippageError = formatError(\n 'slippage tolerance should be in range (0, 100)'\n);\n\nexport const NoOrderFound = (order_id?: string) =>\n formatError(`No order ${order_id || ''} found`);\n\nexport const OrderNoRemainedAmount = formatError(\n 'No remained amount on this order'\n);\n","import { TokenMetadata, EstimateSwapView, Transaction } from '../types';\nimport { ftGetStorageBalance } from '../ref';\nimport {\n STORAGE_TO_REGISTER_WITH_MFT,\n REF_FI_CONTRACT_ID,\n ONE_YOCTO_NEAR,\n} from '../constant';\nimport { round, percentLess } from '../utils';\nimport { toNonDivisibleNumber } from '../utils';\nimport { config } from '../constant';\nimport { SwapRouteError } from '../error';\n\nexport const instantSwap = async ({\n tokenIn,\n tokenOut,\n amountIn,\n slippageTolerance,\n swapTodos,\n AccountId,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n slippageTolerance: number;\n swapTodos: EstimateSwapView[];\n AccountId: string;\n}) => {\n const transactions: Transaction[] = [];\n\n if (swapTodos?.[swapTodos?.length - 1]?.outputToken !== tokenOut.id)\n throw SwapRouteError;\n\n const registerToken = async (token: TokenMetadata) => {\n const tokenRegistered = await ftGetStorageBalance(\n token.id,\n AccountId\n ).catch(() => {\n throw new Error(`${token.id} doesn't exist.`);\n });\n\n if (tokenRegistered === null) {\n transactions.push({\n receiverId: token.id,\n functionCalls: [\n {\n methodName: 'storage_deposit',\n args: {\n registration_only: true,\n account_id: AccountId,\n },\n gas: '30000000000000',\n amount: STORAGE_TO_REGISTER_WITH_MFT,\n },\n ],\n });\n }\n };\n\n if (tokenIn.id === config.WRAP_NEAR_CONTRACT_ID) {\n const registered = await ftGetStorageBalance(\n config.WRAP_NEAR_CONTRACT_ID,\n AccountId\n );\n if (registered === null) {\n await registerToken(tokenIn);\n }\n }\n\n await registerToken(tokenOut);\n let actionsList: any = [];\n let allSwapsTokens = swapTodos.map(s => [s.inputToken, s.outputToken]); // to get the hop tokens\n for (let i in allSwapsTokens) {\n let swapTokens = allSwapsTokens[i];\n if (swapTokens[0] === tokenIn.id && swapTokens[1] === tokenOut.id) {\n // parallel, direct hop route.\n actionsList.push({\n pool_id: swapTodos[i].pool.id,\n token_in: tokenIn.id,\n token_out: tokenOut.id,\n amount_in: swapTodos[i].pool.partialAmountIn,\n min_amount_out: round(\n tokenOut.decimals,\n toNonDivisibleNumber(\n tokenOut.decimals,\n percentLess(slippageTolerance, swapTodos[i].estimate)\n )\n ),\n });\n } else if (swapTokens[0] === tokenIn.id) {\n // first hop in double hop route\n //TODO -- put in a check to make sure this first hop matches with the next (i+1) hop as a second hop.\n actionsList.push({\n pool_id: swapTodos[i].pool.id,\n token_in: swapTokens[0],\n token_out: swapTokens[1],\n amount_in: swapTodos[i].pool.partialAmountIn,\n min_amount_out: '0',\n });\n } else {\n // second hop in double hop route.\n //TODO -- put in a check to make sure this second hop matches with the previous (i-1) hop as a first hop.\n actionsList.push({\n pool_id: swapTodos[i].pool.id,\n token_in: swapTokens[0],\n token_out: swapTokens[1],\n min_amount_out: round(\n tokenOut.decimals,\n toNonDivisibleNumber(\n tokenOut.decimals,\n percentLess(slippageTolerance, swapTodos[i].estimate)\n )\n ),\n });\n }\n }\n\n transactions.push({\n receiverId: tokenIn.id,\n functionCalls: [\n {\n methodName: 'ft_transfer_call',\n args: {\n receiver_id: REF_FI_CONTRACT_ID,\n amount: toNonDivisibleNumber(tokenIn.decimals, amountIn),\n msg: JSON.stringify({\n force: 0,\n actions: actionsList,\n }),\n },\n gas: '180000000000000',\n amount: ONE_YOCTO_NEAR,\n },\n ],\n });\n\n return transactions;\n};\n","import { getTotalPools, refFiViewFunction } from '../ref';\nimport { Pool, PoolRPCView } from '../types';\nimport { parsePool, toNonDivisibleNumber } from '../utils';\nimport { STABLE_LP_TOKEN_DECIMALS } from '../constant';\n\nexport const DEFAULT_PAGE_LIMIT = 100;\n\nexport const getRatedPoolDetail = async ({ id }: { id: string | number }) => {\n return refFiViewFunction({\n methodName: 'get_rated_pool',\n args: { pool_id: Number(id) },\n }).then(pool_info => ({\n ...pool_info,\n id: Number(id),\n pool_kind: 'RATED_SWAP',\n }));\n};\n\nexport const getUnRatedPoolDetail = async ({ id }: { id: string | number }) => {\n return refFiViewFunction({\n methodName: 'get_stable_pool',\n args: { pool_id: Number(id) },\n }).then(pool_info => ({\n ...pool_info,\n id: Number(id),\n pool_kind: 'STABLE_SWAP',\n rates: pool_info.c_amounts.map((_: any) =>\n toNonDivisibleNumber(STABLE_LP_TOKEN_DECIMALS, '1')\n ),\n }));\n};\n\nexport const getStablePools = async (stablePools: Pool[]) => {\n return Promise.all(\n stablePools.map(pool =>\n pool.pool_kind === 'RATED_SWAP'\n ? getRatedPoolDetail({ id: pool.id })\n : getUnRatedPoolDetail({ id: pool.id })\n )\n );\n};\n\nexport const getPool = async (id: number): Promise<Pool> => {\n return await refFiViewFunction({\n methodName: 'get_pool',\n args: { pool_id: id },\n }).then((pool: PoolRPCView) => parsePool(pool, id));\n};\n\nexport const getRefPools = async (\n page: number = 1,\n perPage: number = DEFAULT_PAGE_LIMIT\n): Promise<Pool[]> => {\n const index = (page - 1) * perPage;\n\n const poolData: PoolRPCView[] = await refFiViewFunction({\n methodName: 'get_pools',\n args: { from_index: index, limit: perPage },\n });\n\n return poolData.map((rawPool, i) => parsePool(rawPool, i + index));\n};\n\nexport const fetchAllPools = async () => {\n const totalPools = await getTotalPools();\n const pages = Math.ceil(totalPools / DEFAULT_PAGE_LIMIT);\n\n const pools = (\n await Promise.all(\n [...Array(pages)].fill(0).map((_, i) => getRefPools(i + 1))\n )\n ).flat() as Pool[];\n\n return {\n simplePools: pools.filter(\n p => p.pool_kind && p.pool_kind === 'SIMPLE_POOL'\n ),\n unRatedPools: pools.filter(\n p => p.pool_kind && p.pool_kind === 'STABLE_SWAP'\n ),\n ratedPools: pools.filter(p => p.pool_kind && p.pool_kind === 'RATED_SWAP'),\n };\n};\n","import React, {\n useEffect,\n useState,\n useContext,\n createContext,\n ReactNode,\n} from 'react';\nimport {\n ftGetBalance,\n ftGetTokenMetadata,\n getGlobalWhitelist,\n nearDepositTransaction,\n nearWithdrawTransaction,\n REPLACE_TOKENS,\n} from '../ref';\nimport {\n EstimateSwapView,\n Pool,\n StablePool,\n TokenMetadata,\n Transaction,\n} from '../types';\nimport { fetchAllPools, getStablePools } from '../v1-swap/pool';\nimport { estimateSwap, SwapOptions, SwapParams } from '../v1-swap/swap';\nimport { SwapOutParams } from './types';\nimport {\n percentLess,\n separateRoutes,\n toNonDivisibleNumber,\n calculateExchangeRate,\n getAvgFee,\n} from '../utils';\nimport Big from 'big.js';\nimport { instantSwap } from '../v1-swap/instantSwap';\n\nimport { getExpectedOutputFromActionsORIG } from '../v1-swap/smartRoutingLogic.js';\nimport { Theme } from './constant';\nimport { defaultTheme } from './constant';\nimport {\n getTokenPriceList,\n getTokens,\n getWhiteListTokensIndexer,\n} from '../indexer';\nimport {\n toReadableNumber,\n ONLY_ZEROS,\n getExpectedOutputFromSwapTodos,\n} from '../utils';\nimport { getUserRegisteredTokens } from '../ref';\nimport { WRAP_NEAR_CONTRACT_ID, NEAR_META_DATA } from '../constant';\nimport { scientificNotationToString } from '../utils';\nimport metaIconDefaults from '../metaIcons';\n\nexport const ThemeContext = createContext<Theme>(defaultTheme);\n\nexport const ThemeContextProvider: React.FC<{\n customTheme: Theme | undefined;\n}> = ({ customTheme, children }) => {\n const [theme, setTheme] = useState<Theme>(customTheme || defaultTheme);\n\n useEffect(() => {\n if (!customTheme) return;\n setTheme(customTheme);\n }, [customTheme]);\n\n return (\n <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider>\n );\n};\n\nexport const estimateValidator = (\n swapTodos: EstimateSwapView[],\n tokenIn: TokenMetadata,\n parsedAmountIn: string,\n tokenOut: TokenMetadata\n) => {\n const tokenInId = swapTodos[0]?.inputToken;\n const tokenOutId = swapTodos[swapTodos.length - 1]?.outputToken;\n\n const totalPartialAmountIn =\n swapTodos.length === 0\n ? new Big(swapTodos[0].pool.partialAmountIn || 0)\n : swapTodos.reduce(\n (acc, cur, i) => acc.plus(cur.pool.partialAmountIn || 0),\n new Big(0)\n );\n\n if (\n tokenInId !== tokenIn.id ||\n tokenOutId !== tokenOut.id ||\n !totalPartialAmountIn.eq(parsedAmountIn || '0')\n ) {\n return false;\n }\n return true;\n};\n\nexport const useAllTokens = ({ reload }: { reload?: boolean }) => {\n const [tokens, setTokens] = useState<Record<string, TokenMetadata>>();\n const [tokensLoading, setTokensLoading] = useState<boolean>(true);\n\n useEffect(() => {\n const fetchTokens = async () => {\n const tokens = await getTokens(reload);\n setTokens(tokens);\n setTokensLoading(false);\n };\n fetchTokens();\n }, [reload]);\n\n return { tokens, tokensLoading };\n};\n\nexport const useTokensIndexer = ({\n defaultTokenList,\n AccountId,\n}: {\n defaultTokenList?: TokenMetadata[];\n AccountId?: string;\n}) => {\n const [tokens, setTokens] = useState<TokenMetadata[]>([]);\n\n const [tokenLoading, setTokenLoading] = useState<boolean>(false);\n\n useEffect(() => {\n setTokenLoading(true);\n\n const getTokensList = async () => {\n const whiteList = await getGlobalWhitelist();\n const globalWhiteListTokens = (\n await getWhiteListTokensIndexer(whiteList)\n ).filter(token => !!token) as TokenMetadata[];\n\n const parsedTokens = globalWhiteListTokens.map(t => {\n return t.id === WRAP_NEAR_CONTRACT_ID\n ? {\n ...NEAR_META_DATA,\n id: t.id,\n }\n : t;\n });\n\n if (!defaultTokenList || defaultTokenList.length === 0) {\n setTokens(parsedTokens);\n setTokenLoading(false);\n } else {\n const newList = defaultTokenList\n .map(t => {\n return t.id === WRAP_NEAR_CONTRACT_ID\n ? {\n ...NEAR_META_DATA,\n id: t.id,\n }\n : t;\n })\n .filter(t => {\n return parsedTokens.findIndex(p => p.id === t.id) !== -1;\n });\n setTokens(\n newList.map(t =>\n !t.icon || REPLACE_TOKENS.includes(t.id)\n ? {\n ...t,\n icon: metaIconDefaults[t.id],\n }\n : t\n )\n );\n setTokenLoading(false);\n }\n };\n\n getTokensList();\n }, [AccountId, defaultTokenList]);\n\n return { tokens, tokenLoading };\n};\n\nexport const useRefPools = (refreshTrigger: boolean) => {\n const [allPools, setAllPools] = useState<{\n simplePools: Pool[];\n ratedPools: Pool[];\n unRatedPools: Pool[];\n }>({\n simplePools: [],\n ratedPools: [],\n unRatedPools: [],\n });\n\n const [poolFetchingState, setPoolFetchingState] = useState<'loading' | 'end'>(\n 'loading'\n );\n\n const [allStablePools, setAllStablePools] = useState<StablePool[]>([]);\n\n useEffect(() => {\n setPoolFetchingState('loading');\n\n fetchAllPools()\n .then(allPools => {\n setAllPools(allPools);\n\n return allPools;\n })\n .then(allPools => {\n const pools: Pool[] = allPools.unRatedPools.concat(allPools.ratedPools);\n\n return getStablePools(pools).then(setAllStablePools);\n })\n .finally(() => {\n setPoolFetchingState('end');\n });\n }, [refreshTrigger]);\n\n return {\n allPools,\n allStablePools,\n poolFetchingState,\n };\n};\n\nexport const useSwap = (\n params: {\n tokenIn?: TokenMetadata;\n tokenOut?: TokenMetadata;\n amountIn: string;\n simplePools: Pool[];\n options?: SwapOptions;\n } & {\n slippageTolerance: number;\n refreshTrigger: boolean;\n onSwap: (transactionsRef: Transaction[]) => void;\n AccountId?: string;\n poolFetchingState?: 'loading' | 'end';\n }\n): SwapOutParams => {\n const {\n slippageTolerance,\n refreshTrigger,\n onSwap,\n AccountId,\n poolFetchingState,\n ...swapParams\n } = params;\n\n const { tokenIn, tokenOut, amountIn } = params;\n\n const [estimates, setEstimates] = useState<EstimateSwapView[]>([]);\n\n const [canSwap, setCanSwap] = useState(false);\n\n const [swapError, setSwapError] = useState<Error | null>(null);\n\n const [amountOut, setAmountOut] = useState<string>('');\n\n const [isEstimating, setIsEstimating] = useState<boolean>(false);\n\n const [forceEstimate, setForceEstimate] = useState<boolean>(false);\n\n const minAmountOut = amountOut\n ? percentLess(slippageTolerance, amountOut)\n : '';\n\n const fee =\n !params.tokenOut || !params.tokenIn\n ? 0\n : getAvgFee(\n estimates,\n params.tokenOut.id,\n toNonDivisibleNumber(params.tokenIn.decimals, params.amountIn)\n );\n\n const rate = calculateExchangeRate(\n ONLY_ZEROS.test(params.amountIn) ? '1' : params.amountIn,\n amountOut || '1'\n );\n\n const makeSwap = async () => {\n if (!params.tokenIn || !params.tokenOut) return;\n\n const transactionsRef = await instantSwap({\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountIn: params.amountIn,\n swapTodos: estimates,\n slippageTolerance,\n AccountId: AccountId || '',\n });\n if (tokenIn && tokenIn.id === WRAP_NEAR_CONTRACT_ID) {\n transactionsRef.splice(-1, 0, nearDepositTransaction(amountIn));\n }\n if (tokenOut && tokenOut.id === WRAP_NEAR_CONTRACT_ID) {\n let outEstimate = new Big(0);\n const routes = separateRoutes(estimates, tokenOut.id);\n\n const bigEstimate = routes.reduce((acc, cur) => {\n const curEstimate = cur[cur.length - 1].estimate;\n return acc.plus(curEstimate);\n }, outEstimate);\n\n const minAmountOut = percentLess(\n slippageTolerance,\n\n scientificNotationToString(bigEstimate.toString())\n );\n\n transactionsRef.push(nearWithdrawTransaction(minAmountOut));\n }\n\n onSwap(transactionsRef);\n };\n\n const getEstimate = () => {\n if (\n !params.tokenIn ||\n !params.tokenOut ||\n poolFetchingState === 'loading'\n ) {\n setCanSwap(false);\n return;\n }\n setCanSwap(false);\n\n if (\n ONLY_ZEROS.test(params.amountIn) ||\n !params.tokenOut ||\n !params.tokenIn\n ) {\n setAmountOut('');\n setEstimates([]);\n return;\n }\n\n setSwapError(null);\n setIsEstimating(true);\n estimateSwap({\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountIn: params.amountIn,\n simplePools: params.simplePools,\n options: params.options,\n })\n .then(estimates => {\n if (\n ONLY_ZEROS.test(params.amountIn) ||\n !params.tokenOut ||\n !params.tokenIn\n ) {\n setAmountOut('');\n return;\n }\n setSwapError(null);\n\n const expectAmountOut = getExpectedOutputFromSwapTodos(\n estimates,\n params.tokenOut.id\n ).toString();\n\n setAmountOut(expectAmountOut);\n\n setEstimates(estimates);\n setCanSwap(true);\n })\n .catch(e => {\n setSwapError(e);\n setCanSwap(false);\n setAmountOut('');\n })\n .finally(() => {\n setIsEstimating(false);\n setForceEstimate(false);\n });\n };\n\n useEffect(() => {\n const estimateValidationPass =\n estimates.length > 0 &&\n params.tokenIn &&\n params.tokenOut &&\n estimateValidator(\n estimates,\n params.tokenIn,\n toNonDivisibleNumber(params.tokenIn.decimals, params.amountIn),\n params.tokenOut\n );\n\n if (isEstimating && estimates && !forceEstimate) return;\n if ((estimateValidationPass || swapError) && !forceEstimate) return;\n getEstimate();\n }, [\n params.amountIn,\n params.tokenIn?.id,\n params.tokenOut?.id,\n refreshTrigger,\n poolFetchingState,\n isEstimating,\n forceEstimate,\n ]);\n\n useEffect(() => {\n // setEstimating(false);\n\n setForceEstimate(true);\n }, [\n params.tokenIn?.id,\n params.tokenOut?.id,\n params.options?.enableSmartRouting,\n ]);\n\n return {\n amountOut,\n minAmountOut,\n fee,\n rate,\n estimates,\n makeSwap,\n canSwap,\n swapError,\n setAmountOut,\n isEstimating,\n };\n};\n\nexport const TokenPriceContext = createContext<Record<string, any> | null>(\n null\n);\n\nexport const useTokenPriceList = () => {\n const [tokenPriceList, setTokenPriceList] = useState<Record<string, any>>({});\n\n useEffect(() => {\n getTokenPriceList().then(setTokenPriceList);\n }, []);\n\n return tokenPriceList;\n};\n\nexport const TokenPriceContextProvider: React.FC = ({ children }) => {\n const tokenPriceList = useTokenPriceList();\n\n return (\n <TokenPriceContext.Provider value={tokenPriceList}>\n {children}\n </TokenPriceContext.Provider>\n );\n};\n\nexport const useTokenBalnces = (tokens: TokenMetadata[], AccountId: string) => {\n const [balances, setBalances] = useState<Record<string, string>>({});\n\n useEffect(() => {\n const validTokens = tokens.filter(t => !!t?.id);\n\n const ids = validTokens.map(token => token.id);\n\n Promise.all(\n ids.map(id =>\n ftGetBalance(id === WRAP_NEAR_CONTRACT_ID ? 'NEAR' : id, AccountId)\n )\n ).then(balances => {\n const balancesMap = validTokens.reduce((acc, token, index) => {\n return {\n ...acc,\n [token.id]: toReadableNumber(token.decimals, balances[index]),\n };\n }, {});\n\n setBalances(balancesMap);\n });\n }, [tokens.map(t => t?.id).join('-')]);\n\n return balances;\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useState, useEffect, useContext, useRef, useMemo } from 'react';\nimport { TokenMetadata, EstimateSwapView, Pool } from '../types';\nimport {\n ThemeContext,\n useTokenPriceList,\n TokenPriceContext,\n useTokenBalnces,\n} from './state';\n\nimport { FiChevronDown } from '@react-icons/all-files/fi/FiChevronDown';\n\nimport { FiChevronLeft } from '@react-icons/all-files/fi/FiChevronLeft';\n\nimport { FiChevronUp } from '@react-icons/all-files/fi/FiChevronUp';\n\nimport { FaSearch } from '@react-icons/all-files/fa/FaSearch';\n\nimport { RiRefreshLine } from '@react-icons/all-files/ri/RiRefreshLine';\n\nimport { TiArrowSortedUp } from '@react-icons/all-files/ti/TiArrowSortedUp';\n\nimport { TiArrowSortedDown } from '@react-icons/all-files/ti/TiArrowSortedDown';\n\nimport { HiOutlineExternalLink } from '@react-icons/all-files/hi/HiOutlineExternalLink';\n\nimport { AiFillPushpin } from '@react-icons/all-files/ai/AiFillPushpin';\n\nimport { AiOutlinePushpin } from '@react-icons/all-files/ai/AiOutlinePushpin';\n\nimport { RiExchangeFill } from '@react-icons/all-files/ri/RiExchangeFill';\n\nimport { IoWarning } from '@react-icons/all-files/io5/IoWarning';\n\nimport { IoCloseOutline } from '@react-icons/all-files/io5/IoCloseOutline';\n\nimport { AiOutlineClose } from '@react-icons/all-files/ai/AiOutlineClose';\n\nimport './style.css';\nimport {\n getAccountName,\n symbolsArr,\n multiply,\n percentOfBigNumber,\n ONLY_ZEROS,\n toRealSymbol,\n toPrecision,\n toInternationalCurrencySystemLongString,\n calculateFeeCharge,\n calculateFeePercent,\n} from '../utils';\nimport {\n DEFAULT_START_TOKEN_LIST,\n REF_WIDGET_STAR_TOKEN_LIST_KEY,\n} from './constant';\nimport Big from 'big.js';\nimport {\n config,\n FEE_DIVISOR,\n NEAR_META_DATA,\n TokenLinks,\n WRAP_NEAR_CONTRACT_ID,\n} from '../constant';\nimport {\n scientificNotationToString,\n percent,\n getPoolAllocationPercents,\n} from '../utils';\nimport { REF_WIDGET_SWAP_DETAIL_KEY } from './constant';\nimport { PoolMode } from '../v1-swap/swap';\nimport { isMobile, separateRoutes, divide, getMax } from '../utils';\n\ninterface TokenAmountProps {\n balance?: string;\n reloading?: JSX.Element;\n token?: TokenMetadata;\n onSelectToken: () => void;\n amount: string;\n onChangeAmount?: (amount: string) => void;\n price?: string;\n onForceUpdate?: () => void;\n poolFetchingState?: 'loading' | 'end';\n}\n\nexport const getPriceImpact = (\n value: string,\n tokenIn: TokenMetadata,\n tokenInAmount: string\n) => {\n const textColor =\n Number(value) <= 1\n ? 'text-greenLight'\n : 1 < Number(value) && Number(value) <= 2\n ? 'text-warn'\n : 'text-error';\n\n const displayValue = scientificNotationToString(\n multiply(tokenInAmount || '0', divide(value, '100'))\n );\n\n const tokenInInfo =\n Number(displayValue) <= 0\n ? ` / 0 ${toRealSymbol(tokenIn.symbol)}`\n : ` / -${toInternationalCurrencySystemLongString(\n displayValue,\n 3\n )} ${toRealSymbol(tokenIn.symbol)}`;\n\n if (Number(value) < 0.01)\n return (\n <span className=\"text-greenLight\">\n {`< -0.01%`}\n {tokenInInfo}\n </span>\n );\n\n if (Number(value) > 1000)\n return (\n <span className=\"text-error\">\n {`< -1000%`}\n {tokenInInfo}\n </span>\n );\n\n return (\n <span className={`${textColor} font-sans`}>\n {`≈ -${toPrecision(value, 2)}%`}\n {tokenInInfo}\n </span>\n );\n};\n\nexport const SmartRouteV2 = ({\n tokens: tokensRaw,\n p,\n pools,\n}: {\n tokens: TokenMetadata[];\n p: string;\n pools: Pool[];\n}) => {\n const theme = useContext(ThemeContext);\n\n const tokens = tokensRaw.map(t =>\n t.id === WRAP_NEAR_CONTRACT_ID\n ? { ...NEAR_META_DATA, id: WRAP_NEAR_CONTRACT_ID }\n : t\n );\n\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n const ParaTokenFrom = ({\n tokenIn,\n p,\n }: {\n tokenIn: TokenMetadata;\n p: string;\n }) => {\n return (\n <div\n className=\"__ref-swap-widget-row-flex-center \"\n style={{\n width: '60px',\n }}\n >\n <span\n style={{\n marginRight: '4px',\n }}\n >\n {p}%\n </span>\n <span className=\"\">\n <Icon token={tokenIn} />\n </span>\n </div>\n );\n };\n const Icon = ({ token }: { token: TokenMetadata }) => {\n if (token.icon) {\n return (\n <img\n src={token.icon}\n alt=\"\"\n style={{\n borderRadius: '100%',\n height: '16px',\n width: '16px',\n flexShrink: 0,\n }}\n />\n );\n } else {\n return (\n <div\n style={{\n borderRadius: '100%',\n height: '16px',\n width: '16px',\n }}\n />\n );\n }\n };\n const Hub = ({ token, poolId }: { token: TokenMetadata; poolId: number }) => {\n return (\n <div\n className={`__ref-swap-widget-row-flex-center`}\n style={{\n width: '62px',\n height: '22px',\n }}\n >\n <div\n className={`w-full flex items-center justify-start pl-2 `}\n style={{\n marginRight: '4px',\n }}\n >\n <span className=\"text-gray-400\">{`#${poolId}`}</span>\n </div>\n <Icon token={token} />\n </div>\n );\n };\n\n if (tokens.length === 3) {\n return (\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap_route_row\">\n {/* <Hub token={tokens[0]} /> */}\n\n <ParaTokenFrom tokenIn={tokens[0]} p={p} />\n <div\n className=\"\"\n style={{\n position: 'relative',\n bottom: '1px',\n }}\n >\n <ArrowRight />\n </div>\n\n <Hub token={tokens[1]} poolId={pools?.[0]?.id} />\n <div\n className=\"px-3\"\n style={{\n position: 'relative',\n bottom: '1px',\n }}\n >\n <ArrowRight />\n </div>\n\n <Hub token={tokens[2]} poolId={pools?.[1]?.id} />\n </div>\n );\n } else if (tokens.length === 2) {\n return (\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap_route_row\">\n <ParaTokenFrom tokenIn={tokens[0]} p={p} />\n <div className=\"px-3\">\n <ArrowRight />\n </div>\n <Hub token={tokens[1]} poolId={pools?.[0]?.id} />\n </div>\n );\n } else {\n return null;\n }\n};\n\nexport const DetailView = ({\n tokenIn,\n tokenOut,\n rate,\n fee,\n minReceived,\n amountIn,\n amountOut,\n priceImpact,\n estimates,\n}: {\n tokenIn: TokenMetadata | undefined;\n tokenOut: TokenMetadata | undefined;\n rate: string;\n fee: number;\n minReceived: string;\n amountIn: string;\n amountOut: string;\n priceImpact: string;\n estimates: EstimateSwapView[];\n}) => {\n const theme = useContext(ThemeContext);\n\n const storagedOpen = !!localStorage.getItem(REF_WIDGET_SWAP_DETAIL_KEY);\n\n const [showDetail, setShowDetail] = useState(storagedOpen || false);\n const [isRateReverse, setIsRateReverse] = useState(false);\n\n const tokensPerRoute = estimates\n .filter(swap => swap.inputToken === tokenIn?.id)\n .map(swap => swap.tokens);\n\n const identicalRoutes = separateRoutes(\n estimates,\n estimates[estimates.length - 1]?.outputToken || ''\n );\n\n const pools = identicalRoutes.map(r => r[0]).map(hub => hub.pool);\n const percents = useMemo(() => {\n if (!pools || pools.length === 0) return [];\n return getPoolAllocationPercents(pools);\n }, [pools]);\n\n const priceImpactDisplay = useMemo(() => {\n if (!priceImpact || !tokenIn || !amountIn) return null;\n return getPriceImpact(priceImpact, tokenIn, amountIn);\n }, [priceImpact, tokenIn, amountIn]);\n if (!tokenIn || !tokenOut) return null;\n\n const displayRate = `1 ${toRealSymbol(tokenIn.symbol)} ≈ ${\n Number(rate) < 0.01 ? '< 0.01' : toPrecision(rate, 2)\n } ${toRealSymbol(tokenOut.symbol)}`;\n\n const revertRate = new Big(1).div(ONLY_ZEROS.test(rate) ? '1' : rate || '1');\n\n const revertDisplayRate = `1 ${toRealSymbol(tokenOut.symbol)} ≈ ${\n Number(revertRate) < 0.01 ? '< 0.01' : toPrecision(revertRate.toString(), 2)\n } ${toRealSymbol(tokenIn.symbol)}`;\n\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n return (\n <div\n className=\"__ref-widget-swap-detail-view __ref-swap-widget-col-flex-start\"\n style={{\n color: secondary,\n }}\n >\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap-detail-view-item\">\n <div\n style={{\n color: primary,\n cursor: 'pointer',\n }}\n className=\"__ref-swap-widget-row-flex-center\"\n onClick={() => {\n if (showDetail) localStorage.removeItem(REF_WIDGET_SWAP_DETAIL_KEY);\n else {\n localStorage.setItem(REF_WIDGET_SWAP_DETAIL_KEY, '1');\n }\n setShowDetail(!showDetail);\n }}\n >\n <div>Detail</div>\n <div\n style={{\n position: 'relative',\n }}\n >\n {!showDetail ? <FiChevronDown /> : <FiChevronUp />}\n </div>\n </div>\n\n {amountIn && amountOut && (\n <div className=\"__ref-swap-widget-row-flex-center\">\n <div>{isRateReverse ? revertDisplayRate : displayRate}</div>\n\n <RiExchangeFill\n onClick={() => {\n setIsRateReverse(!isRateReverse);\n }}\n size={16}\n style={{\n marginLeft: '4px',\n cursor: 'pointer',\n }}\n fill={iconDefault}\n />\n </div>\n )}\n </div>\n {!showDetail ? null : (\n <>\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap-detail-view-item\">\n <div>Minimum received</div>\n <div>{toPrecision(minReceived || '0', 8)}</div>\n </div>\n\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap-detail-view-item\">\n <div>Fee</div>\n\n <div>\n {!amountIn\n ? '0'\n : `${calculateFeeCharge(fee, amountIn)} ${toRealSymbol(\n tokenIn.symbol\n )}(${toPrecision(calculateFeePercent(fee).toString(), 2)}%)`}\n </div>\n </div>\n </>\n )}\n\n {!showDetail ? null : (\n <>\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap-detail-view-item\">\n <div>Price impact</div>\n\n <div>{priceImpactDisplay}</div>\n </div>\n </>\n )}\n\n {estimates && estimates.length > 1 && showDetail && (\n <div\n className=\"__ref-swap-widget-swap_routes __ref-swap-widget-row-flex-center\"\n style={{\n border: `1px solid ${borderColor}`,\n flexDirection: isMobile() ? 'column' : 'row',\n position: 'relative',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n }}\n >\n <div className=\"__ref-swap-widget-row-flex-center\">\n <RouterIcon />\n <span\n className=\"__ref-swap-widget-valueStyle\"\n style={{\n marginLeft: '4px',\n whiteSpace: 'nowrap',\n }}\n >\n {'Auto Router'}\n </span>\n </div>\n\n <div\n className=\"\"\n style={{\n width: isMobile() ? '100%' : 'auto',\n minWidth: !isMobile() ? '70%' : '',\n }}\n >\n {tokensPerRoute.every(r => !!r) &&\n tokensPerRoute.map((tokens, index) => {\n if (!tokens) return null;\n return (\n <SmartRouteV2\n key={index + '-swap-route'}\n tokens={tokens}\n p={percents[index]}\n pools={identicalRoutes[index].map(hub => hub.pool)}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport const HalfAndMaxAmount = ({\n max,\n onChangeAmount,\n token,\n amount,\n}: {\n max: string;\n token: TokenMetadata;\n onChangeAmount: (amount: string) => void;\n amount: string;\n}) => {\n const halfValue = percentOfBigNumber(50, max, token.decimals);\n\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n } = theme;\n\n const [hoverHalf, setHoverHalf] = useState<boolean>(false);\n const [hoverMax, setHoverMax] = useState<boolean>(false);\n\n return (\n <div className=\"__ref-swap-widget-token-amount_quick_selector __ref-swap-widget-row-flex-center\">\n <span\n className=\"__ref-swap-widget-token-amount_quick_selector_item \"\n style={{\n color: secondary,\n borderRadius,\n border: `1px solid ${borderColor}`,\n marginRight: '4px',\n\n background:\n amount === halfValue && !ONLY_ZEROS.test(halfValue)\n ? active\n : hoverHalf\n ? hover\n : 'transparent',\n }}\n onMouseEnter={() => setHoverHalf(true)}\n onMouseLeave={() => setHoverHalf(false)}\n onClick={() => {\n const half = percentOfBigNumber(50, max, token.decimals);\n\n onChangeAmount(half);\n }}\n >\n Half\n </span>\n\n <span\n className=\"__ref-swap-widget-token-amount_quick_selector_item\"\n onClick={() => {\n onChangeAmount(max);\n }}\n onMouseEnter={() => setHoverMax(true)}\n onMouseLeave={() => setHoverMax(false)}\n style={{\n color: secondary,\n borderRadius,\n border: `1px solid ${borderColor}`,\n background:\n amount === max && !ONLY_ZEROS.test(max)\n ? active\n : hoverMax\n ? hover\n : 'transparent',\n }}\n >\n Max\n </span>\n </div>\n );\n};\n\nexport const TokenAmount = (props: TokenAmountProps) => {\n const {\n balance,\n reloading,\n token,\n onSelectToken,\n amount,\n onChangeAmount,\n price,\n onForceUpdate,\n poolFetchingState,\n } = props;\n\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n } = theme;\n\n const ref = useRef<HTMLInputElement>(null);\n\n const [hoverSelect, setHoverSelect] = useState<boolean>(false);\n\n const handleChange = (amount: string) => {\n if (onChangeAmount) {\n onChangeAmount(amount);\n }\n if (ref.current) {\n ref.current.value = amount;\n }\n };\n\n useEffect(() => {\n if (\n ref.current &&\n onChangeAmount &&\n token &&\n balance &&\n token.id === WRAP_NEAR_CONTRACT_ID &&\n Number(balance) - Number(ref.current.value) < 0.5\n ) {\n ref.current.setCustomValidity(\n 'Must have 0.5N or more left in wallet for gas fee.'\n );\n } else {\n ref.current?.setCustomValidity('');\n }\n }, [ref, balance, ref.current, ref.current?.value, token, amount]);\n\n const curMax = token ? getMax(token.id, balance || '0') : '0';\n\n return (\n <>\n <div\n className=\"__ref-swap-widger-token-amount \"\n style={{\n background: secondaryBg,\n flexDirection: isMobile() ? 'column' : 'row',\n }}\n >\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n width: isMobile() ? 'auto' : '40%',\n }}\n >\n <div\n className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-token-amount_token-select-button\"\n style={{\n color: primary,\n background: hoverSelect ? hover : 'transparent',\n border: `1px solide ${hoverSelect ? borderColor : 'transparent'}`,\n }}\n onClick={onSelectToken}\n onMouseEnter={() => setHoverSelect(true)}\n onMouseLeave={() => setHoverSelect(false)}\n >\n {!token ? (\n <>\n <span\n style={{\n whiteSpace: 'nowrap',\n height: '26px',\n }}\n className=\"__ref-swap-widget-row-flex-center\"\n >\n Select Token\n </span>\n </>\n ) : (\n <>\n <img\n src={token?.icon}\n alt=\"\"\n className=\"__ref-swap-widget_token_icon\"\n style={{\n height: '26px',\n width: '26px',\n marginRight: '8px',\n }}\n />\n <span>{toRealSymbol(token?.symbol)}</span>\n </>\n )}\n <FiChevronDown\n style={{\n marginLeft: '4px',\n flexShrink: 0,\n }}\n />\n </div>\n\n {onForceUpdate && (\n <RiRefreshLine\n className={`${\n poolFetchingState === 'loading'\n ? '__ref-swap-widget-loading '\n : ''\n }`}\n style={{\n cursor: 'pointer',\n color: secondary,\n }}\n size={18}\n onClick={() => {\n onForceUpdate();\n }}\n />\n )}\n </div>\n\n <div\n className=\" __ref-swap-widget-token-amount_input\"\n style={{\n width: isMobile() ? '100%' : '60%',\n }}\n >\n <input\n ref={ref}\n max={!!onChangeAmount ? curMax : undefined}\n min=\"0\"\n onWheel={() => {\n if (ref.current) {\n ref.current.blur();\n }\n }}\n className=\"__ref-swap-widget-input-class\"\n step=\"any\"\n value={amount}\n type=\"number\"\n placeholder={!onChangeAmount ? '-' : '0.0'}\n onChange={({ target }) => {\n target.setCustomValidity('');\n handleChange(target.value);\n }}\n disabled={!onChangeAmount}\n onKeyDown={e => symbolsArr.includes(e.key) && e.preventDefault()}\n style={{\n color: primary,\n marginBottom: '8px',\n width: '100%',\n textAlign: 'right',\n fontSize: '20px',\n }}\n />\n\n <div\n style={{\n fontSize: '12px',\n color: secondary,\n textAlign: 'right',\n }}\n >\n {!price\n ? '$-'\n : '~$' +\n toInternationalCurrencySystemLongString(\n multiply(price, amount || '0'),\n 2\n )}\n </div>\n </div>\n </div>\n\n {!balance || !token || !onChangeAmount ? null : (\n <div\n className=\"__ref-swap-widger-token-amount_balance __ref-swap-widget-row-flex-center\"\n style={{\n fontSize: '12px',\n color: secondary,\n }}\n >\n <span>\n Balance:&nbsp;\n {toPrecision(balance, 2)}\n </span>\n {token && (\n <HalfAndMaxAmount\n token={token}\n max={getMax(token.id, balance)}\n onChangeAmount={handleChange}\n amount={amount}\n />\n )}\n </div>\n )}\n </>\n );\n};\n\nexport const SlippageSelector = ({\n slippageTolerance,\n onChangeSlippageTolerance,\n showSlip,\n setShowSlip,\n}: {\n slippageTolerance: number;\n onChangeSlippageTolerance: (slippageTolerance: number) => void;\n showSlip: boolean;\n setShowSlip: (showSlip: boolean) => void;\n}) => {\n const [invalid, setInValid] = useState<boolean>(false);\n\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n } = theme;\n\n const ref = useRef<HTMLInputElement>(null);\n\n const handleChange = (amount: string) => {\n onChangeSlippageTolerance(Number(amount));\n\n if (Number(amount) > 0 && Number(amount) < 100) {\n setInValid(false);\n } else {\n setInValid(true);\n }\n\n if (ref.current) {\n ref.current.value = amount;\n }\n };\n\n useEffect(() => {\n if (!showSlip) return;\n\n document.onclick = () => setShowSlip(false);\n\n return () => {\n document.onclick = null;\n };\n }, [showSlip, setShowSlip]);\n\n if (!showSlip) return null;\n\n return (\n <div\n className=\"__ref-swap-widget_slippage_selector __ref-swap-widget-col-flex-start\"\n onClick={e => e.stopPropagation()}\n style={{\n background: container,\n border: `1px solid ${borderColor}`,\n }}\n >\n <span\n style={{\n color: primary,\n paddingBottom: '14px',\n }}\n >\n Slippage tolerance\n </span>\n\n <div\n className={`__ref-swap-widget-row-flex-center\n `}\n >\n <div\n className={`__ref-swap-widget-row-flex-center\n __ref-swap-widget_slippage_selector_input_container`}\n style={{\n border: `1px solid ${invalid ? '#FF7575' : borderColor}`,\n borderRadius,\n }}\n >\n <input\n ref={ref}\n max={99.99999}\n min={0.000001}\n defaultValue={slippageTolerance ? slippageTolerance : 0.5}\n onWheel={() => {\n if (ref.current) {\n ref.current.blur();\n }\n }}\n value={slippageTolerance}\n step=\"any\"\n type=\"number\"\n required={true}\n placeholder=\"\"\n onChange={({ target }) => handleChange(target.value)}\n onKeyDown={e => symbolsArr.includes(e.key) && e.preventDefault()}\n style={{\n width: '100%',\n color: invalid ? '#FF7575' : primary,\n }}\n className=\"__ref-swap-widget-input-class\"\n />\n <span className=\"ml-2\">%</span>\n </div>\n\n <button\n className={`__ref-swap-widget_slippage_selector_button __ref-swap-widget-button ${\n isMobile()\n ? '__ref-swap-widget-opacity-active'\n : '__ref-swap-widget-opacity-hover'\n }`}\n style={{\n color: primary,\n background: buttonBg,\n borderRadius,\n }}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n onChangeSlippageTolerance(0.5);\n setInValid(false);\n }}\n >\n Auto\n </button>\n </div>\n {invalid && (\n <div\n className=\" text-xs py-3 __ref-swap-widget-row-flex-center\"\n style={{\n color: '#FF7575',\n fontSize: '12px',\n padding: '10px 0px',\n alignItems: 'start',\n }}\n >\n <IoWarning\n className=\"\"\n style={{\n marginRight: '4px',\n }}\n size={20}\n />\n <div>{'The slippage tolerance is invalid.'}</div>\n </div>\n )}\n </div>\n );\n};\n\nconst StarToken = ({\n price,\n token,\n onDelete,\n onClick,\n}: {\n token: TokenMetadata;\n price: string;\n onDelete: (token: TokenMetadata) => void;\n onClick: (token: TokenMetadata) => void;\n}) => {\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n const [hoverIcon, setHoverIcon] = useState(false);\n\n const [hoverClose, setHoverClose] = useState(false);\n\n return (\n <div\n className=\"__ref-swap-widget_star_token __ref-swap-widget-row-flex-center\"\n onMouseEnter={() => setHoverIcon(true)}\n onMouseLeave={() => setHoverIcon(false)}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onClick(token);\n }}\n style={{\n background: hoverIcon ? hover : 'transparent',\n border: `1px solid ${borderColor}`,\n }}\n >\n {hoverIcon && (\n <div\n style={{\n position: 'absolute',\n top: '-4px',\n right: '-4px',\n boxShadow: '0px 0px 2px rgba(0, 0, 0, 0.25)',\n border: `1px solid ${borderColor}`,\n borderRadius: '100%',\n width: '16px',\n height: '16px',\n background: '#E3E3E3',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onDelete(token);\n }}\n onMouseEnter={() => setHoverClose(true)}\n onMouseLeave={() => setHoverClose(false)}\n >\n <IoCloseOutline stroke={hoverClose ? 'black' : '#7e8a93'} />\n </div>\n )}\n\n <img\n src={token.icon}\n alt=\"\"\n className=\"__ref-swap-widget_token_icon\"\n style={{\n height: '26px',\n width: '26px',\n marginRight: '2px',\n }}\n />\n\n <div className=\"__ref-swap-widget-col-flex-start\">\n <span\n style={{\n fontSize: '14px',\n color: primary,\n }}\n >\n {toRealSymbol(token.symbol)}\n </span>\n\n <span\n style={{\n fontSize: '10px',\n color: secondary,\n }}\n >\n {!price\n ? '$-'\n : '$' + toInternationalCurrencySystemLongString(price, 2)}\n </span>\n </div>\n </div>\n );\n};\n\ninterface TokenProps {\n token: TokenMetadata;\n onClick: (token: TokenMetadata) => void;\n onClickPin: (token: TokenMetadata) => void;\n balance: string;\n price?: string;\n isSticky?: boolean;\n index: number;\n setHoverIndex: (index: number) => void;\n hoverIndex: number;\n}\n\nconst Token = ({\n token,\n onClick,\n price,\n balance,\n isSticky,\n onClickPin,\n index,\n setHoverIndex,\n hoverIndex,\n}: TokenProps) => {\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n const displayBalance =\n 0 < Number(balance) && Number(balance) < 0.001\n ? '< 0.001'\n : toPrecision(String(balance), 3);\n\n const [hoverOutLink, setHoverOutLink] = useState(false);\n\n const [hoverPin, setHoverPin] = useState(false);\n\n return (\n <div\n className=\"__ref-swap-widget_token-selector-token-list-item __ref-swap-widget-row-flex-center\"\n style={{\n background: hoverIndex === index ? hover : 'transparent',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onClick(token);\n }}\n onMouseEnter={() => setHoverIndex(index)}\n onMouseLeave={() => setHoverIndex(-1)}\n >\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n justifyContent: 'space-between',\n }}\n >\n <img\n src={token.icon}\n alt=\"\"\n className=\"__ref-swap-widget_token_icon\"\n style={{\n height: '36px',\n width: '36px',\n marginRight: '10px',\n }}\n />\n\n <div className=\"__ref-swap-widget-col-flex-start\">\n <span\n style={{\n fontSize: '14px',\n color: primary,\n }}\n className=\"__ref-swap-widget-row-flex-center\"\n >\n {toRealSymbol(token.symbol)}\n\n {TokenLinks[token.symbol] && (\n <HiOutlineExternalLink\n onMouseEnter={() => setHoverOutLink(true)}\n onMouseLeave={() => setHoverOutLink(false)}\n style={{\n marginLeft: '4px',\n marginTop: '2px',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n window.open(TokenLinks[token.symbol], '_blank');\n }}\n stroke={hoverOutLink ? iconHover : iconDefault}\n />\n )}\n </span>\n\n <span\n style={{\n fontSize: '10px',\n color: secondary,\n marginTop: '2px',\n }}\n >\n {!price\n ? '$-'\n : '$' + toInternationalCurrencySystemLongString(price, 2)}\n </span>\n </div>\n </div>\n\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n color: primary,\n }}\n >\n {displayBalance}\n\n {isSticky ? (\n <AiFillPushpin\n onMouseEnter={() => setHoverPin(true)}\n onMouseLeave={() => setHoverPin(false)}\n fill={hoverPin && hoverIndex === index ? iconHover : iconDefault}\n style={{\n marginLeft: '10px',\n cursor: 'pointer',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onClickPin(token);\n }}\n />\n ) : (\n <AiOutlinePushpin\n style={{\n marginLeft: '10px',\n cursor: 'pointer',\n }}\n onMouseEnter={() => setHoverPin(true)}\n onMouseLeave={() => setHoverPin(false)}\n fill={hoverPin && hoverIndex === index ? iconHover : iconDefault}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onClickPin(token);\n }}\n />\n )}\n </div>\n </div>\n );\n};\n\ninterface TokenListProps {\n tokens: TokenMetadata[];\n onClick: (token: TokenMetadata) => void;\n balances: { [tokenId: string]: string };\n tokenPriceList: Record<string, any> | null;\n starList: string[];\n setStarList: (starList: string[]) => void;\n onDelete: (token: TokenMetadata) => void;\n}\n\nexport const TokenListTable = ({\n tokens,\n onClick,\n balances,\n tokenPriceList,\n starList,\n setStarList,\n onDelete,\n}: TokenListProps) => {\n const [currentSort, setCurrentSort] = useState('down');\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n const onClickPin = (token: TokenMetadata) => {\n if (starList.includes(token.id)) {\n onDelete(token);\n } else {\n const newList = [...starList, token.id];\n setStarList(newList);\n }\n };\n\n const [hoverIndex, setHoverIndex] = useState(-1);\n\n const tokenSorting = (a: TokenMetadata, b: TokenMetadata) => {\n const b1 = balances[a.id];\n const b2 = balances[b.id];\n\n if (currentSort === 'up') {\n return Number(b1) - Number(b2);\n } else return Number(b2) - Number(b1);\n };\n\n return !tokens || tokens.length === 0 ? null : (\n <div className=\"__ref-swap-widget_token_list_table\">\n <div\n className=\"__ref-swap-widget_token_list_table_header\"\n style={{\n color: secondary,\n borderBottom: `1px solid ${borderColor}`,\n }}\n >\n <span className=\"\">Asset</span>\n\n <span\n onClick={() => {\n setCurrentSort(currentSort === 'up' ? 'down' : 'up');\n }}\n style={{\n cursor: 'pointer',\n }}\n className=\"__ref-swap-widget-row-flex-center\"\n >\n <span className=\"ml-1\">Balance</span>\n {currentSort === 'up' ? <TiArrowSortedUp /> : <TiArrowSortedDown />}\n </span>\n </div>\n\n <div className=\"__ref-swap-widget_token_list_table_content\">\n {tokens.sort(tokenSorting).map((token, index) => (\n <Token\n key={token.id + '-select-token-list-item-' + index}\n onClick={onClick}\n index={index}\n token={token}\n price={tokenPriceList?.[token.id]?.price}\n balance={balances?.[token.id] || '0'}\n onClickPin={onClickPin}\n isSticky={starList.includes(token.id)}\n setHoverIndex={setHoverIndex}\n hoverIndex={hoverIndex}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport const TokenSelector = ({\n onSelect,\n width,\n tokens,\n onClose,\n AccountId,\n balances,\n className,\n}: {\n onSelect: (token: TokenMetadata) => void;\n width: string;\n tokens: TokenMetadata[];\n onClose: () => void;\n AccountId: string;\n balances: { [tokenId: string]: string };\n className?: string;\n}) => {\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n iconDefault,\n iconHover,\n } = theme;\n\n const [searchValue, setSearchValue] = useState<string>('');\n\n const tokenPriceList = useContext(TokenPriceContext);\n\n const handleSearch = (value: string) => {\n setSearchValue(value);\n };\n\n const storagedStartList = localStorage.getItem(REF_WIDGET_STAR_TOKEN_LIST_KEY)\n ? JSON.parse(localStorage.getItem(REF_WIDGET_STAR_TOKEN_LIST_KEY) || '[]')\n : null;\n\n const [starList, setStarList] = useState<string[]>(\n storagedStartList || DEFAULT_START_TOKEN_LIST\n );\n\n const onDelete = (token: TokenMetadata) => {\n const newStarList = starList.filter(starToken => starToken !== token.id);\n\n setStarList(newStarList);\n\n localStorage.setItem(\n REF_WIDGET_STAR_TOKEN_LIST_KEY,\n JSON.stringify(newStarList)\n );\n };\n\n const tableListFilter = (token: TokenMetadata) => {\n if (!searchValue) return true;\n\n const searchValueLower = searchValue.toLowerCase();\n\n return token.symbol?.toLowerCase().includes(searchValueLower) || false;\n };\n\n return (\n <div\n className={`__ref-swap_widget-token_selector __ref-swap-widget-container ${className}`}\n style={{\n position: 'relative',\n width,\n background: container,\n }}\n >\n <FiChevronLeft\n onClick={onClose}\n style={{\n color: primary,\n position: 'absolute',\n cursor: 'pointer',\n }}\n />\n <div\n className=\"__ref-swap-widget-header-title __ref-swap-widget-row-flex-center\"\n style={{\n color: primary,\n justifyContent: 'center',\n paddingBottom: '24px',\n }}\n >\n Select a token\n </div>\n\n <div\n className=\"__ref-swap-widget-select-token_input __ref-swap-widget-row-flex-center\"\n style={{\n border: `1px solid ${buttonBg}`,\n background: secondaryBg,\n }}\n >\n <FaSearch\n fill={iconDefault}\n style={{\n marginRight: '8px',\n }}\n />\n\n <input\n className=\"__ref-swap-widget-input-class\"\n placeholder=\"Search token...\"\n onChange={evt => handleSearch(evt.target.value)}\n style={{\n fontSize: '14px',\n color: primary,\n }}\n />\n </div>\n\n <div className=\"__ref-swap-widget_token-selector-star-tokens __ref-swap-widget-row-flex-center\">\n {starList.map(id => {\n if (!tokens || tokens.length === 0) return null;\n\n const token = tokens.find(token => token.id === id);\n\n return !token ? null : (\n <StarToken\n key={token.id + '-star-token'}\n token={token}\n price={tokenPriceList?.[token.id]?.price}\n onDelete={onDelete}\n onClick={onSelect}\n />\n );\n })}\n </div>\n\n <TokenListTable\n tokens={tokens.filter(tableListFilter)}\n tokenPriceList={tokenPriceList}\n onClick={onSelect}\n balances={balances}\n starList={starList}\n setStarList={starList => {\n setStarList(starList);\n localStorage.setItem(\n REF_WIDGET_STAR_TOKEN_LIST_KEY,\n JSON.stringify(starList)\n );\n }}\n onDelete={onDelete}\n />\n </div>\n );\n};\n\nexport const Slider = ({\n showSlip,\n setShowSlip,\n}: {\n showSlip: boolean;\n setShowSlip: (show: boolean) => void;\n}) => {\n const [hover, setHover] = useState(false);\n\n return (\n <svg\n width=\"17\"\n height=\"17\"\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n onClick={() => setShowSlip(true)}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.6957 13.0652C12.6957 14.1338 11.8294 15 10.7609 15C9.69235 15 8.82611 14.1338 8.82611 13.0652C8.82612 11.9967 9.69235 11.1304 10.7609 11.1304C11.8294 11.1304 12.6957 11.9967 12.6957 13.0652ZM14.5749 12.0941C14.6145 12.0894 14.6548 12.0869 14.6957 12.0869L15.9565 12.0869C16.5088 12.0869 16.9565 12.5346 16.9565 13.0869C16.9565 13.6392 16.5088 14.0869 15.9565 14.0869L14.6957 14.0869C14.651 14.0869 14.6071 14.084 14.564 14.0783C14.1171 15.7605 12.5837 17 10.7609 17C8.93806 17 7.40472 15.7605 6.95777 14.0783C6.91471 14.084 6.87078 14.0869 6.82617 14.0869L1.00009 14.0869C0.447802 14.0869 8.61245e-05 13.6392 8.61728e-05 13.0869C8.62211e-05 12.5346 0.447802 12.0869 1.00009 12.0869L6.82617 12.0869C6.86702 12.0869 6.90729 12.0894 6.94686 12.0941C7.37926 10.3906 8.92291 9.13044 10.7609 9.13044C12.5989 9.13044 14.1425 10.3906 14.5749 12.0941ZM4.26086 3.93478C4.26086 2.86623 5.1271 2 6.19565 2C7.2642 2 8.13043 2.86623 8.13043 3.93478C8.13043 5.00333 7.2642 5.86957 6.19565 5.86957C5.1271 5.86956 4.26086 5.00333 4.26086 3.93478ZM6.19565 9.66601e-07C4.3728 8.07243e-07 2.83946 1.23952 2.39252 2.92168C2.34944 2.91601 2.3055 2.91309 2.26087 2.91309L0.999999 2.91309C0.447715 2.91309 -7.14972e-07 3.3608 -7.63254e-07 3.91309C-8.11537e-07 4.46537 0.447715 4.91309 0.999999 4.91309L2.26087 4.91309C2.30173 4.91309 2.34202 4.91063 2.3816 4.90587C2.81401 6.60936 4.35766 7.86956 6.19565 7.86957C8.03363 7.86957 9.57728 6.60936 10.0097 4.90588C10.0493 4.91064 10.0895 4.91309 10.1304 4.91309L15.9565 4.91309C16.5087 4.91309 16.9565 4.46537 16.9565 3.91309C16.9565 3.3608 16.5087 2.91309 15.9565 2.91309L10.1304 2.91309C10.0858 2.91309 10.0418 2.91601 9.99877 2.92167C9.55182 1.23952 8.01849 1.12596e-06 6.19565 9.66601e-07Z\"\n fill={hover || showSlip ? '#00C6A2' : '#7E8A93'}\n />\n </svg>\n );\n};\n\nexport const RefIcon = (props: any) => {\n return (\n <svg\n {...props}\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M6.36365 10H10L6.36365 6.36363V10Z\" fill=\"currentColor\" />\n <path\n d=\"M10 4.05312e-06L7.87879 3.86767e-06L10 2.12122L10 4.05312e-06Z\"\n fill=\"#00C6A2\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.51531 6.36364C6.46444 6.36364 6.41387 6.36232 6.36365 6.35971V4.08371L8.83901 1.78516C9.18802 2.26148 9.3941 2.8491 9.3941 3.48485C9.3941 5.07476 8.10522 6.36364 6.51531 6.36364ZM8.19255 1.14486L6.36365 2.84313V0.60999C6.41387 0.607383 6.46444 0.606064 6.51531 0.606064C7.14111 0.606064 7.72027 0.805743 8.19255 1.14486Z\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.06046 0.606064H3.33319V3.29661L4.55696 4.52039L6.06046 3.12428V0.606064ZM6.06046 4.36486L4.5336 5.78267L3.33319 4.58226V10H6.06046V4.36486Z\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.0303 0.606064H0V4.50881L2.27284 2.23598L3.0303 2.99344V0.606064ZM3.0303 4.27909L2.27284 3.52162L0 5.79446V10H3.0303V4.27909Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport const Loading = () => {\n return (\n <svg\n width=\"38\"\n height=\"38\"\n viewBox=\"0 0 38 38\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"__ref-swap-widget-loading\"\n >\n <circle\n cx=\"19\"\n cy=\"19\"\n r=\"16\"\n stroke=\"#EEEEEE\"\n strokeWidth=\"6\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M19 35C27.8366 35 35 27.8366 35 19C35 10.1634 27.8366 3 19 3C10.1634 3 3 10.1634 3 19\"\n stroke=\"#00C6A2\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n};\n\nexport const Warning = () => {\n return (\n <svg\n width=\"49\"\n height=\"49\"\n viewBox=\"0 0 49 49\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21.0359 5.99999C22.5755 3.33333 26.4245 3.33333 27.9641 6L42.2535 30.75C43.7931 33.4167 41.8686 36.75 38.7894 36.75H10.2106C7.13137 36.75 5.20688 33.4167 6.74648 30.75L21.0359 5.99999Z\"\n stroke=\"#FF689E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"24\"\n y1=\"14\"\n x2=\"24\"\n y2=\"24\"\n stroke=\"#FF689E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n <circle cx=\"24\" cy=\"30\" r=\"2\" fill=\"#FF689E\" />\n </svg>\n );\n};\n\nexport const Success = () => {\n return (\n <div\n style={{\n position: 'relative',\n height: '32px',\n width: '32px',\n }}\n >\n <svg\n width=\"38\"\n height=\"38\"\n viewBox=\"0 0 38 38\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n }}\n >\n <circle\n cx=\"19\"\n cy=\"19\"\n r=\"16\"\n stroke=\"#EEEEEE\"\n strokeWidth=\"6\"\n strokeLinecap=\"round\"\n />\n </svg>\n\n <svg\n width=\"30\"\n height=\"23\"\n viewBox=\"0 0 30 23\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n position: 'absolute',\n top: 4,\n left: 4,\n }}\n >\n <path\n d=\"M2 11.2727L10.4898 20L28 2\"\n stroke=\"#00C6A2\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n </svg>\n </div>\n );\n};\n\nexport const RouterIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"12\"\n viewBox=\"0 0 16 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"mr-2\"\n >\n <path\n d=\"M13.4862 6.25488C12.2813 6.25488 11.2485 7.10159 11.019 8.28698H6.02703L4.7647 7.21448C4.93684 6.8758 5.05159 6.48067 5.10897 6.0291C5.10897 5.52107 4.93684 4.9566 4.59257 4.56147L6.02703 3.1503H11.0763C11.478 4.44858 12.8551 5.23884 14.1748 4.84371C15.4945 4.44858 16.2978 3.09385 15.8961 1.79557C15.4945 0.497295 14.1174 -0.292963 12.7977 0.102166C11.937 0.327954 11.3059 1.00532 11.0763 1.79557H5.51062L3.50237 3.77122C3.21548 3.65832 2.92859 3.60188 2.58432 3.60188C1.20723 3.54543 0.0596573 4.61792 0.00227872 5.97265C-0.0550999 7.32738 0.977715 8.45632 2.3548 8.51276H2.58432C3.04334 8.51276 3.44499 8.39987 3.84664 8.17408L5.568 9.6417H11.1911C11.7075 10.8835 13.142 11.5045 14.4043 11.0529C15.6666 10.5449 16.2978 9.13368 15.8388 7.89185C15.4371 6.8758 14.5191 6.25488 13.4862 6.25488V6.25488ZM13.4862 1.344C14.1174 1.344 14.6338 1.85202 14.6338 2.47294C14.6338 3.09385 14.1174 3.60188 13.4862 3.60188C12.8551 3.60188 12.3387 3.09385 12.3387 2.47294C12.3387 1.85202 12.8551 1.344 13.4862 1.344ZM2.58432 7.15804C1.95315 7.15804 1.43674 6.65001 1.43674 6.0291C1.43674 5.40818 1.95315 4.90016 2.58432 4.90016C3.21548 4.90016 3.73189 5.40818 3.73189 6.0291C3.73189 6.65001 3.21548 7.15804 2.58432 7.15804ZM13.4862 9.86749C12.8551 9.86749 12.3387 9.35947 12.3387 8.73855C12.3387 8.11763 12.8551 7.60961 13.4862 7.60961C14.1174 7.60961 14.6338 8.11763 14.6338 8.73855C14.6338 9.35947 14.1174 9.86749 13.4862 9.86749Z\"\n fill=\"url(#paint0_linear_12461_2312)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_12461_2312\"\n x1=\"8\"\n y1=\"0\"\n x2=\"8\"\n y2=\"11.2\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#00C6A2\" />\n <stop offset=\"1\" stopColor=\"#8C78FF\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport const Notification = ({\n state,\n tx,\n detail,\n open,\n setOpen,\n setState,\n}: {\n state?: 'success' | 'fail' | null;\n setState?: (state: 'success' | 'fail' | null) => void;\n tx?: string;\n detail?: string;\n\n open: boolean;\n setOpen: (open: boolean) => void;\n}) => {\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n } = theme;\n\n if (!open) return null;\n\n return (\n <div\n className=\"__ref-swap-widget-notification\"\n style={{\n color: primary,\n background: container,\n }}\n >\n <div className=\"__ref-swap-widget-notification__icon\">\n {state === null && <Loading />}\n {state === 'fail' && <Warning />}\n {state === 'success' && <Success />}\n </div>\n\n <div\n style={{\n fontSize: '16px',\n marginTop: '10px',\n marginBottom: '6px',\n }}\n >\n {state === 'success' && <p>Success!</p>}\n {state === 'fail' && <p>Swap Failed!</p>}\n </div>\n <div\n className=\"__ref-swap-widget-notification__text\"\n style={{\n color: primary,\n }}\n >\n {(state === null || state === undefined) && (\n <p>Waiting for confirmation</p>\n )}\n {state === 'fail' && !!tx && (\n <a\n className=\"text-primary font-semibold\"\n href={`${config.explorerUrl}/txns/${tx}`}\n target=\"_blank\"\n style={{\n textDecoration: 'underline',\n fontSize: '14px',\n color: primary,\n }}\n rel=\"noreferrer\"\n >\n Click to view.\n </a>\n )}\n\n {state === 'success' && detail}\n </div>\n {state !== null && (\n <button\n className=\"__ref-swap-widget-notification__button __ref-swap-widget-button\"\n style={{\n background: buttonBg,\n fontWeight: 700,\n color: 'white',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n setOpen(false);\n setState && setState(null);\n }}\n >\n Close\n </button>\n )}\n </div>\n );\n};\n\nexport const ArrowRight = () => {\n return (\n <div className=\"mx-1\">\n <svg\n width=\"12\"\n height=\"5\"\n viewBox=\"0 0 12 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.864 4.4C9.024 4.05867 9.17867 3.76 9.328 3.504C9.488 3.248 9.64267 3.03467 9.792 2.864H0.464V2.192H9.792C9.64267 2.01067 9.488 1.792 9.328 1.536C9.17867 1.28 9.024 0.986666 8.864 0.656H9.424C10.096 1.43467 10.8 2.01067 11.536 2.384V2.672C10.8 3.03467 10.096 3.61067 9.424 4.4H8.864Z\"\n fill=\"#7E8A93\"\n />\n </svg>\n </div>\n );\n};\n\nexport const AccountButton = ({\n AccountId,\n onDisConnect,\n}: {\n AccountId: string;\n onDisConnect: () => void;\n}) => {\n const [hoverAccount, setHoverAccount] = useState<boolean>(false);\n\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n iconDefault,\n iconHover,\n borderColor,\n } = theme;\n\n return !AccountId ? null : (\n <div\n className=\"__ref-swap-widget-header-button-account __ref-swap-widget-row-flex-center\"\n style={{\n color: primary,\n background: secondaryBg,\n border: `1px solid ${borderColor}`,\n cursor: 'pointer',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n hoverAccount && onDisConnect();\n }}\n onMouseEnter={() => setHoverAccount(true)}\n onMouseLeave={() => setHoverAccount(false)}\n >\n {hoverAccount ? 'Disconnect' : getAccountName(AccountId)}\n </div>\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { SwapWidgetProps } from './types';\nimport { TokenMetadata } from '../types';\nimport {\n useRefPools,\n useSwap,\n ThemeContextProvider,\n TokenPriceContextProvider,\n useAllTokens,\n} from './state';\nimport { ftGetBalance, ftGetTokenMetadata } from '../ref';\nimport {\n getAccountName,\n toReadableNumber,\n toPrecision,\n getPriceImpact,\n isMobile,\n} from '../utils';\nimport {\n Slider,\n SlippageSelector,\n TokenSelector,\n TokenAmount,\n DetailView,\n Notification,\n} from './components';\nimport { FiChevronDown } from '@react-icons/all-files/fi/FiChevronDown';\n\nimport { TiWarning } from '@react-icons/all-files/ti/TiWarning';\n\nimport './style.css';\nimport { useTokenPriceList, useTokenBalnces, useTokensIndexer } from './state';\n\nimport { CgArrowsExchangeAltV } from '@react-icons/all-files/cg/CgArrowsExchangeAltV';\nimport { RefIcon, AccountButton } from './components';\nimport Big from 'big.js';\nimport { ONLY_ZEROS } from '../utils';\nimport {\n defaultTheme,\n defaultDarkModeTheme,\n REF_WIDGET_SWAP_IN_KEY,\n REF_WIDGET_SWAP_OUT_KEY,\n} from './constant';\nimport {\n WRAP_NEAR_CONTRACT_ID,\n NEAR_META_DATA,\n REF_TOKEN_ID,\n} from '../constant';\n\nexport const SwapWidget = (props: SwapWidgetProps) => {\n const {\n theme,\n defaultTokenList,\n onSwap,\n connection,\n width,\n height,\n enableSmartRouting,\n className,\n transactionState,\n onConnect,\n defaultTokenIn,\n defaultTokenOut,\n onDisConnect,\n darkMode,\n } = props;\n\n const curTheme = theme || (darkMode ? defaultDarkModeTheme : defaultTheme);\n\n const STORAGED_TOKEN_IN = localStorage.getItem(REF_WIDGET_SWAP_IN_KEY);\n\n const STORAGED_TOKEN_OUT = localStorage.getItem(REF_WIDGET_SWAP_OUT_KEY);\n\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n refIcon,\n } = curTheme;\n\n const { AccountId, isSignedIn: isSignedInProp } = connection;\n\n const isSignedIn = !!AccountId && isSignedInProp;\n\n const [tokenIn, setTokenIn] = useState<TokenMetadata>();\n\n const handleSetTokenIn = (token: TokenMetadata) => {\n setTokenIn(token);\n localStorage.setItem(REF_WIDGET_SWAP_IN_KEY, token.id);\n };\n\n const handleSetTokenOut = (token: TokenMetadata) => {\n setTokenOut(token);\n localStorage.setItem(REF_WIDGET_SWAP_OUT_KEY, token.id);\n };\n\n const [tokenOut, setTokenOut] = useState<TokenMetadata>();\n const [tokenInBalance, setTokenInBalance] = useState<string>('');\n\n const [tokenOutBalance, setTokenOutBalance] = useState<string>('');\n\n const [notOpen, setNotOpen] = useState<boolean>(false);\n\n useEffect(() => {\n if (!transactionState) return;\n\n if (transactionState && transactionState.state !== null) {\n setNotOpen(true);\n }\n transactionState?.setState(transactionState?.state || null);\n }, [transactionState]);\n\n const [widgetRoute, setWidgetRoute] = useState<\n 'swap' | 'token-selector-in' | 'token-selector-out'\n >('swap');\n\n const [amountIn, setAmountIn] = useState<string>('1');\n\n const [showSlip, setShowSlip] = useState<boolean>(false);\n\n const [slippageTolerance, setSlippageTolerance] = useState<number>(0.5);\n\n const { tokens, tokenLoading } = useTokensIndexer({\n defaultTokenList,\n AccountId,\n });\n\n // cache list tokens\n useAllTokens({ reload: true });\n\n const balances = useTokenBalnces(tokens, AccountId);\n\n const [refreshTrigger, setRreshTrigger] = useState<boolean>(false);\n\n const tokenPriceList = useTokenPriceList();\n\n const { allPools, allStablePools, poolFetchingState } = useRefPools(\n refreshTrigger\n );\n\n useEffect(() => {\n const defaultIn =\n STORAGED_TOKEN_IN || defaultTokenIn || WRAP_NEAR_CONTRACT_ID;\n\n const defaultOut = STORAGED_TOKEN_OUT || defaultTokenOut || REF_TOKEN_ID;\n\n if (\n tokens.length > 0 &&\n defaultIn &&\n tokens.findIndex(t => t.id === defaultIn) !== -1\n ) {\n if (defaultIn === WRAP_NEAR_CONTRACT_ID || defaultIn === 'NEAR') {\n handleSetTokenIn({\n ...NEAR_META_DATA,\n id: WRAP_NEAR_CONTRACT_ID,\n });\n } else {\n ftGetTokenMetadata(defaultIn).then(handleSetTokenIn);\n }\n }\n if (\n tokens.length > 0 &&\n defaultOut &&\n tokens.findIndex(t => t.id === defaultOut) !== -1\n ) {\n if (defaultOut === WRAP_NEAR_CONTRACT_ID || defaultOut === 'NEAR') {\n handleSetTokenOut({\n ...NEAR_META_DATA,\n id: WRAP_NEAR_CONTRACT_ID,\n });\n } else {\n ftGetTokenMetadata(defaultOut).then(handleSetTokenOut);\n }\n }\n }, [tokens, tokenLoading]);\n\n useEffect(() => {\n if (!tokenIn) return;\n\n const wrapedId = tokenIn.id === WRAP_NEAR_CONTRACT_ID ? 'NEAR' : tokenIn.id;\n\n if (balances[wrapedId]) {\n setTokenInBalance(balances[wrapedId]);\n return;\n }\n\n ftGetBalance(wrapedId, AccountId).then(available => {\n setTokenInBalance(toReadableNumber(tokenIn.decimals, available));\n });\n }, [tokenIn, AccountId, balances]);\n\n useEffect(() => {\n if (!tokenOut) return;\n\n const wrapedId =\n tokenOut.id === WRAP_NEAR_CONTRACT_ID ? 'NEAR' : tokenOut.id;\n\n if (balances[wrapedId]) {\n setTokenOutBalance(balances[wrapedId]);\n return;\n }\n ftGetBalance(wrapedId, AccountId).then(available => {\n setTokenOutBalance(toReadableNumber(tokenOut.decimals, available));\n });\n }, [tokenOut, AccountId, balances]);\n\n const {\n amountOut,\n minAmountOut,\n rate,\n fee,\n estimates,\n canSwap,\n swapError,\n makeSwap,\n setAmountOut,\n } = useSwap({\n tokenIn: tokenIn,\n tokenOut: tokenOut,\n amountIn,\n simplePools: allPools.simplePools,\n options: {\n enableSmartRouting,\n stablePools: allPools.ratedPools.concat(allPools.unRatedPools),\n stablePoolsDetail: allStablePools,\n },\n slippageTolerance,\n onSwap,\n AccountId,\n refreshTrigger,\n poolFetchingState,\n });\n\n const priceImpact = useMemo(() => {\n if (!tokenIn || !tokenOut) return '0';\n\n return getPriceImpact({\n estimates,\n tokenIn,\n tokenOut,\n amountIn,\n amountOut,\n stablePools: allStablePools,\n });\n }, [estimates, tokenIn, tokenOut, amountIn, amountOut, allStablePools]);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n setNotOpen(true);\n makeSwap();\n };\n\n const canSubmit =\n tokenIn &&\n tokenOut &&\n canSwap &&\n !swapError &&\n isSignedIn &&\n new Big(tokenInBalance || '0').gte(amountIn || '0') &&\n slippageTolerance > 0 &&\n slippageTolerance < 100 &&\n !ONLY_ZEROS.test(tokenInBalance);\n\n return (\n <ThemeContextProvider customTheme={curTheme}>\n <TokenPriceContextProvider>\n {widgetRoute === 'swap' && (\n <form\n className={`__ref-swap-widget-container ${className}`}\n onSubmit={handleSubmit}\n style={{\n background: container,\n fontFamily,\n width,\n height,\n }}\n >\n <div className=\"__ref-swap-widget-header __ref-swap-widget-row-flex-center\">\n <div\n style={{\n color: primary,\n }}\n className=\"__ref-swap-widget-header-title\"\n >\n Swap\n </div>\n\n <div\n className=\"__ref-swap-widget-header-button __ref-swap-widget-row-flex-center\"\n style={{\n position: 'relative',\n }}\n >\n <AccountButton\n onDisConnect={onDisConnect}\n AccountId={AccountId}\n />\n\n <Slider showSlip={showSlip} setShowSlip={setShowSlip} />\n\n <SlippageSelector\n slippageTolerance={slippageTolerance}\n onChangeSlippageTolerance={setSlippageTolerance}\n showSlip={showSlip}\n setShowSlip={setShowSlip}\n />\n </div>\n </div>\n\n <TokenAmount\n amount={amountIn}\n balance={tokenInBalance}\n token={tokenIn}\n price={!tokenIn ? null : tokenPriceList?.[tokenIn.id]?.price}\n onChangeAmount={setAmountIn}\n onSelectToken={() => {\n setWidgetRoute('token-selector-in');\n }}\n />\n\n <div\n className={`__ref-swap-widget-exchange-button __ref-swap-widget-row-flex-center `}\n style={{\n color: iconDefault,\n }}\n >\n <CgArrowsExchangeAltV\n style={{\n cursor: 'pointer',\n }}\n className={`__ref-swap-widget-exchange-button-icon ${\n isMobile()\n ? '__ref-swap-widget-active'\n : '__ref-swap-widget-hover'\n }`}\n size={30}\n onClick={() => {\n tokenOut && handleSetTokenIn(tokenOut);\n tokenIn && handleSetTokenOut(tokenIn);\n setAmountIn('1');\n setAmountOut('');\n }}\n />\n </div>\n\n <TokenAmount\n amount={toPrecision(amountOut, 8)}\n balance={tokenOutBalance}\n token={tokenOut}\n price={!tokenOut ? null : tokenPriceList?.[tokenOut.id]?.price}\n onSelectToken={() => {\n setWidgetRoute('token-selector-out');\n }}\n onForceUpdate={() => {\n setRreshTrigger(!refreshTrigger);\n }}\n poolFetchingState={poolFetchingState}\n />\n {!swapError && amountIn && amountOut && (\n <DetailView\n fee={fee}\n rate={rate}\n amountIn={amountIn}\n minReceived={minAmountOut}\n tokenIn={tokenIn}\n tokenOut={tokenOut}\n amountOut={amountOut}\n priceImpact={priceImpact}\n estimates={estimates}\n />\n )}\n\n {swapError && (\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n color: '#DE9450',\n fontSize: '14px',\n\n paddingTop: '16px',\n }}\n >\n <TiWarning fill=\"#DE9450\" size={20} />\n &nbsp;\n {swapError.message}\n </div>\n )}\n {isSignedIn ? (\n <button\n type=\"submit\"\n className=\"__ref-swap-widget-submit-button __ref-swap-widget-button\"\n style={{\n color: 'white',\n background: buttonBg,\n opacity: !canSubmit ? 0.5 : 1,\n cursor: !canSubmit ? 'not-allowed' : 'pointer',\n }}\n disabled={!canSubmit}\n >\n {'Swap'}\n </button>\n ) : (\n <button\n type=\"button\"\n className=\"__ref-swap-widget-submit-button __ref-swap-widget-button\"\n onClick={onConnect}\n style={{\n color: 'white',\n background: buttonBg,\n cursor: 'pointer',\n }}\n >\n {'Connect Wallet'}\n </button>\n )}\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n justifyContent: 'center',\n }}\n >\n <a\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n color: secondary,\n justifyContent: 'center',\n paddingTop: '12px',\n fontSize: '14px',\n display: 'inline-flex',\n }}\n href=\"https://ref.finance\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <RefIcon\n style={{\n color: refIcon || 'black',\n }}\n />\n &nbsp; Powered by Ref.finance\n </a>\n </div>\n\n <Notification\n state={transactionState?.state}\n setState={transactionState?.setState}\n open={notOpen}\n setOpen={setNotOpen}\n tx={transactionState?.tx}\n detail={transactionState?.detail}\n />\n </form>\n )}\n\n {widgetRoute === 'token-selector-in' && (\n <TokenSelector\n balances={balances}\n tokens={tokens}\n width={width}\n onSelect={token => {\n handleSetTokenIn(token);\n setWidgetRoute('swap');\n }}\n onClose={() => setWidgetRoute('swap')}\n AccountId={AccountId}\n className={className}\n />\n )}\n\n {widgetRoute === 'token-selector-out' && (\n <TokenSelector\n tokens={tokens}\n balances={balances}\n width={width}\n onSelect={token => {\n handleSetTokenOut(token);\n setWidgetRoute('swap');\n }}\n onClose={() => setWidgetRoute('swap')}\n AccountId={AccountId}\n className={className}\n />\n )}\n </TokenPriceContextProvider>\n </ThemeContextProvider>\n );\n};\n","export const DefaultTestnetTokenList = [\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped NEAR fungible token',\n symbol: 'wNEAR',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'wrap.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Banana',\n symbol: 'BANANA',\n icon:\n 'https://assets.onlinelabels.com/images/clip-art/pitr/pitr_Bananas_icon.png',\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'banana.ft-fin.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'NEAR Wrapped USDC',\n symbol: 'nUSDC',\n icon: 'https://s2.coinmarketcap.com/static/img/coins/64x64/3408.png',\n reference: null,\n reference_hash: null,\n decimals: 2,\n id: 'nusdc.ft-fin.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'NEAR Wrapped Tether',\n symbol: 'nUSDT',\n icon: 'https://s2.coinmarketcap.com/static/img/coins/64x64/825.png',\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'nusdt.ft-fin.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Ref Finance Token',\n symbol: 'RFT',\n icon: '',\n reference: null,\n reference_hash: null,\n decimals: 8,\n id: 'rft.tokenfactory.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USD Coin',\n symbol: 'USDC',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'usdc.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tether USD',\n symbol: 'USDT.e',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2326A17B'/%3E%3Cpath fill='%23FFF' d='M17.922 17.383v-.002c-.11.008-.677.042-1.942.042-1.01 0-1.721-.03-1.971-.042v.003c-3.888-.171-6.79-.848-6.79-1.658 0-.809 2.902-1.486 6.79-1.66v2.644c.254.018.982.061 1.988.061 1.207 0 1.812-.05 1.925-.06v-2.643c3.88.173 6.775.85 6.775 1.658 0 .81-2.895 1.485-6.775 1.657m0-3.59v-2.366h5.414V7.819H8.595v3.608h5.414v2.365c-4.4.202-7.709 1.074-7.709 2.118 0 1.044 3.309 1.915 7.709 2.118v7.582h3.913v-7.584c4.393-.202 7.694-1.073 7.694-2.116 0-1.043-3.301-1.914-7.694-2.117'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'usdt.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Dai Stablecoin',\n symbol: 'DAI',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23F4B731' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cpath d='M9.277 8h6.552c3.985 0 7.006 2.116 8.13 5.194H26v1.861h-1.611c.031.294.047.594.047.898v.046c0 .342-.02.68-.06 1.01H26v1.86h-2.08C22.767 21.905 19.77 24 15.83 24H9.277v-5.131H7v-1.86h2.277v-1.954H7v-1.86h2.277V8zm1.831 10.869v3.462h4.72c2.914 0 5.078-1.387 6.085-3.462H11.108zm11.366-1.86H11.108v-1.954h11.37c.041.307.063.622.063.944v.045c0 .329-.023.65-.067.964zM15.83 9.665c2.926 0 5.097 1.424 6.098 3.528h-10.82V9.666h4.72z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'dai.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped Ether',\n symbol: 'WETH',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🍌%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'weth.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'HAPI',\n symbol: 'HAPI',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='Layer_2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='600px' height='600px' viewBox='0 0 600 600' enable-background='new 0 0 600 600' xml:space='preserve'%3E %3Cg%3E %3Cg%3E %3Cpath fill='%23141414' d='M263.7,122.8c-3.6,0.3-7.1,0.9-10.7,1.8c-24.5,6-40.3,18.1-50.4,31c24.5-4.7,49.9,1.3,67.3,7.4 c0.5,0.2,1,0.4,1.6,0.6c-2.7-4.2-5.2-9-7.2-14.4C261.2,141.1,261.6,131.6,263.7,122.8z'/%3E %3Cpath fill='%23141414' d='M201.2,197.7c-9.8-1.1-19.1-2.1-24.6-2.1c-0.7,0-1.4,0-2,0.1c-38.1,2.6-67.2,37.3-69.1,82.4 c-1.4,32.2,13.5,53.1,23.3,63.4c-1.5-12.5-0.1-25,4.3-37.3c11.7-32.6,34.3-42.1,60.6-53.1c10.8-4.5,22.5-9.5,34.3-16.6l50.1-39.6 c-10.1,2.2-24.4,4.5-42.9,5.3C227.1,200.6,213.9,199.1,201.2,197.7z'/%3E %3Cpath fill='%23141414' d='M319.1,176.5c-0.5,1.1,0.9,2.1,1.8,1.2c5.3-5.4,16.3-14.3,30.8-14.2c15.6,0.1,35.5,10.2,40.5,22.1 c4,9.8-6.6,16.5-6.6,16.5l0,0c-2.5-2.7-8-6.3-18.2-6.6c-15-0.5-25.3,12.1-24.1,12.9c7.5,4.7,17.3,3.7,23.1,3.5 c5.8-0.2,15.1-2.5,17.8-3.5c4.7-1.8,11.7-7.8,14.9-16.1c2.5-6.5,8.4-28.7-25.2-34.4C352.7,154.3,327,159.6,319.1,176.5z'/%3E %3Cpath fill='%23141414' d='M473.1,225.1c-0.5-0.6-1.1-1.3-1.7-2l-0.3-0.3c-3.9-4.4-7.6-8.3-9.4-10.1c1.2-4.2,4-16.2,1-26.1 c-2.3-7.7-6.8-15.5-9.2-19.4l-0.8-1.2h0c-0.4-0.6-0.8-1.2-1.1-1.7c-0.3-0.4-0.5-0.7-0.6-1l-0.2-0.7c-2.5-7-8.6-22.3-16.4-28.1 l59.4-91.7c2.3-3.5-2.1-7.5-5.4-5l-86.8,66.5c-8.7-12.3-21.1-21.8-21.8-22.4c-0.8-0.6-2-0.7-2.9-0.2c-0.9,0.5-1.4,1.6-1.3,2.6 c0,0.1,0.6,5.9-2.9,17.6c7.5,2.7,13.9,6,19.3,9.7l-4.5,3.5c-8.8-5.7-20-10.5-34.3-12.6c-17.7-2.6-31.9,1-42.1,10.7c0,0,0,0,0,0 c5.9,3.8,13.1,8.7,17,12.4c0.8,0.7,1.5,1.5,2.2,2.3c-3.1,0.9-6.2,1.9-9.3,2.9c-0.3-0.2-0.5-0.5-0.8-0.7c-1.9-1.7-4.4-3.4-7-5.3 c-5.4-3.8-11.7-8.3-15.8-14c-2.2-3.1-3.8-6.5-4.3-10.4c-0.3-2.4-1-4-2.2-4.9c0,0,0,0,0,0c0,0,0,0,0,0c-0.6-0.5-2.8-2-5.8,0.3 c-2,1.6-4.4,5.3-6.5,10.3c-5.2,12.3-8.7,32.1-1.8,46.1c1.2,2.3,2.4,4.5,3.7,6.6c-0.4,1-0.7,2.1-0.9,3.1c-0.6,3.4-0.9,7.8-1.2,12.7 c-19.8-8.3-50.5-17.5-78.5-10.7c-23.9,5.8-39.4,17.5-49.6,30c7.4-3.1,15.2-5,23.5-5.6c5.6-0.4,16.4,0.8,27.9,2.1 c11.8,1.3,25.3,2.8,32.9,2.4c19.2-0.8,33.7-3.3,43.5-5.6c0,5.4,0.1,11.1,0.4,16.9c0.7,16.8,2.5,34.3,5,46.5 c3.6,17.9,16.5,55.2,31.4,64.6c5.5,3.5,13.5,8.2,22.9,13.4c-2.5,6.4-5.1,15.1-5.1,23.5c0,15.2,5.2,26.6,11,37 c4.6,8.2,9.6,15.7,12.8,24c2.5,6.5-2.7,27.7-5.6,38.9c-1.2,4.5-1.9,7.3-1.7,7c3.7-5.1,7.5-10.8,11.3-16.8 c15.3-24.2,19.4-47,19.5-48l0.2-1.4l-1.1-1c-0.2-0.2-17.2-15.7-18.3-33.3c-0.4-6.9,1-11.5,4.3-13.8c0.5-0.3,1-0.6,1.6-0.9 c7.5,3.7,15,7.3,22.2,10.5c2.8,3.5,9,9.4,11.8,12c3.4,3.2,6.9,7.8,12.2,7.8c5.3,0,15.9,0,21.3,0s13.1,0,17.3-2.1 c4.2-2.1,10.9-5.6,11-12.6c0-1.5,0.4-3.9,0.9-6.8c3.7-4.9,4.1-10.6,4.8-19.2c0.5-5.7,1.7-15.5,3-25.9c2-15.7,4.1-32,3.9-37.9 c-0.2-8.2-1.1-14.3-1.4-16.2C475.3,249.4,479.5,232.4,473.1,225.1z M318,310.6c-13.3-8.4-25.6-44.6-29-61.2 c-4.8-23.9-6.9-68.5-3.9-86.8c2.7-16.7,49-34.5,81.7-35.6c1.9-0.1,3.8-0.1,5.6-0.1c1,0,2,0,3,0c-0.1,4.9,1.3,15.6,13.8,25.5 c13.9,11,30.4,5,30.4,5l12.1-18.7c4.5,3.5,9.4,12.7,13,22.1c-0.9-0.4-1.9-0.7-3.1-0.9c-8.1-1.3-31.6-0.9-24,31.3 c1,4,5.2,9.4,17.2,22.3c2.8,3,5.1,5.3,7,7.2c5.6,5.6,7.4,7.4,7.5,11.8c0,0.3-0.2,1.6-0.4,3c-0.8-0.6-1.9-1.1-3.4-1 c-3.6-0.2-33.7,5.6-42.4,15.1c-1.7,1.9-4.5,2.6-6.7,1.4c-0.1-0.1-0.2-0.1-0.3-0.2c-1.4-0.8-2.3-1.9-2.8-3.5 c-1.3-5.1,2.9-13.2,4.6-16c0.6-1,0.3-2.3-0.6-2.9c-1-0.6-2.3-0.3-2.9,0.6c-0.1,0.2-0.9,1.5-1.9,3.5c-3.3,6.6-8.2,12.2-14.3,16.3 c-9.8,6.6-24,15.2-35.5,18.2c-18,4.7-24.9-8.2-25.2-8.8c-0.5-1-1.8-1.4-2.8-0.9c-1,0.5-1.5,1.8-0.9,2.8 c0.1,0.1,6.3,12.1,21.5,12.1c0.6,0,1.4-0.1,2.2-0.2c4.3-0.5,8.6,0.5,12.3,2.7c3.5,2.1,8,4.7,12.5,7c12.6,6.3,14.7,6.2,19.5,5.4 c1.1-0.2,49.8-2.4,80.1-8.2l3.6,0.2c2.4,0.1,4.3,2.3,4,4.7l0,0.1c-0.2,1.4-1,2.6-2.2,3.3c-2.7,1.5-6.5,3.5-9.9,4.9 c-1.6,0.6-3.3,1.2-5.1,1.6c-5.5,1.3-11.1,1.6-11.1,1.6s-5.4,1.2-13.5,2.1c-3.4,0.4-7.2,0.7-11.3,0.9c-14,0.7-13,1.6-24.8,1 c-2.9-0.1-5.7-0.3-8.3-0.6c-2.5-0.3-3.2,3.4-0.7,4c6.1,1.5,13.3,2.6,21.3,2.5c1,0,1.9,0,2.9,0c12.8-0.1,24.4,7.5,29.4,19.3 c2.1,5,4.1,12,5.4,18.5c1.8,8.4-5.3,16.1-13.8,15.3c-12.5-1.3-26.6-4.8-34.6-8.3C365.3,338.1,332.4,319.8,318,310.6z M448.7,169.2 l1.2,1.9c2.4,4,5.9,10.5,7.9,16.9c3.1,10.4-1.4,24.4-1.4,24.5l-0.5,1.5l1.1,1.1c0,0.1,5,5.2,10.3,11.1l0.1,0.2 c0.6,0.7,1.2,1.3,1.8,2c3.7,4.3,1.9,17-0.1,23.9l-0.2,0.6l0.1,0.6c0,0,0.3,1.5,0.6,3.9c-2.7,0.3-4.7,2.7-4.4,5.5l0.8,7.5l-8.6,0.1 l-13.5-15.3c-1-1.2-1-3,0.2-4c0,0,0,0,0,0c7.1-6.4,8.1-9.5,8.3-10.7c0.9-5.4,1.2-7.4,1.2-8.1c0-6.1-2.9-9-8.7-14.8 c-1.9-1.9-4.2-4.2-6.9-7.1c-0.6-0.6-1.1-1.2-1.7-1.8c2.1,0.6,4.9,1.2,8.5,1.5c8.4,0.7,10.9-1.4,10.9-1.4s1.5-2.7-1.1-6.6 c-2.6-3.9-6.2-6.7-13.2-6.9c-5-0.2-9.5,3.7-11.7,6c-0.9-1-2.9-4.7-3.8-10.9c-1.5-9.7,2.1-14.2,4.7-16.4c4.6-3.9,10.9-7.7,14.4-7.5 c0.9,0.1,1.9,0.2,2.7,0.4C447.8,167.7,448.2,168.4,448.7,169.2z M463.4,332.9c-0.7,8.2-1.1,12.8-3.8,16.5c-2.3,3.1-7.3,0.8-6.6-3 c0.4-2.1,0.7-4.3,0.8-6.4c0.3-10.7-4.9-20.9-6.7-27.7c0,0,0-0.1,0-0.1c-0.9-3.8,1.2-7.7,4.8-9.3c1.6-0.7,3.4-1.6,5.3-2.6 c4.6-2.3,9.9,1.3,9.2,6.4l0,0.1C465.2,317.2,463.9,327.1,463.4,332.9z M385.1,249.4c1.8-1.3,4.4-0.8,5.6,1.2 c0.8,1.4,1.9,2.9,3.4,4.1c4.5,3.7,9.8,3.5,13.2,3.5c3.3,0,5.4-0.6,6-0.8c0,0,0,0,0,0c2.4-0.5,4.3,2,3.1,4.2 c-2.6,4.8-6.1,11.1-6.5,11.4c-0.7,0.5-22.8,5.1-25.6,5.4s-11.6,1.2-18.2-3c-2.8-1.7-5.5-3.7-7.7-5.3c-1.7-1.2-1.4-3.8,0.4-4.7 C368.8,260.4,378.7,253.9,385.1,249.4z M436.8,263.8l8.3,9.1c1.5,1.7,0.5,4.4-1.7,4.7c-5,0.6-10,1.2-14.9,1.7 c-2.3,0.2-3.9-2.3-2.7-4.3c1.9-3,4.3-7,6.5-10.8C433.2,262.6,435.5,262.4,436.8,263.8z M396.4,117.1l83.5-69.1l-76.9,76.9 c-2.5,2.4-6.6,1.6-8.1-1.5h0C393.9,121.2,394.5,118.5,396.4,117.1z'/%3E %3Cpath fill='%23141414' d='M196.6,258.1c-25.6,10.7-45.8,19.2-56.4,48.7c-15.1,42,9.4,88.5,62.5,120.1c-17.4-68,3.5-93.1,22.1-115.3 c6.4-7.7,12.5-15,16.9-23.7c12.9-25.8,12.3-50.5,11.1-62C233.7,242.5,214.1,250.8,196.6,258.1z'/%3E %3C/g%3E %3Cg%3E %3Cpath d='M201.6,477.1h-9.1l-2.8,17.1h-14.3l2.8-17.1h-9.1l-2.8,17.1h-9.3l-1.5,9.1h9.3l-2.3,14h-9.4l-1.5,9.1h9.4l-2.8,17.1h9.1 l2.8-17.1h14.3l-2.8,17.1h9.1l2.8-17.1h9.3l1.5-9.1h-9.3l2.3-14h9.4l1.5-9.1h-9.4L201.6,477.1z M186,517.4h-14.3l2.3-14h14.3 L186,517.4z'/%3E %3Cpolygon points='260.8,505.3 230,505.3 230,477.1 218,477.1 218,543.6 230,543.6 230,515.4 260.8,515.4 260.8,543.6 272.9,543.6 272.9,477.1 260.8,477.1 '/%3E %3Cpath d='M307.1,477.1l-23.4,66.4h12.8l5.5-16.4h25l5.5,16.4h12.8l-23.4-66.4H307.1z M305.3,517.5l9-26.8h0.5l9,26.8H305.3z'/%3E %3Cpath d='M394,480c-3.5-1.9-7.8-2.9-12.9-2.9h-24.9v66.4h12v-22.4H381c5.1,0,9.4-0.9,12.9-2.8s6.2-4.5,7.9-7.8 c1.8-3.3,2.7-7.1,2.7-11.3c0-4.2-0.9-8-2.7-11.3C400.1,484.5,397.4,481.9,394,480z M390.9,505.4c-0.9,1.8-2.3,3.2-4.2,4.3 c-1.9,1-4.3,1.6-7.3,1.6h-11.1v-24h11c3,0,5.5,0.5,7.4,1.5c1.9,1,3.3,2.4,4.2,4.2c0.9,1.8,1.4,3.9,1.4,6.2 S391.8,503.6,390.9,505.4z'/%3E %3Crect x='417.1' y='477.1' width='12' height='66.4'/%3E %3C/g%3E %3C/g%3E %3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'hapi.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'PARAS',\n symbol: 'PARAS',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'paras.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Ref Finance Token',\n symbol: 'REF',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'ref.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Pulse',\n symbol: 'PULSE',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgdmlld0JveD0iMCAwIDIwMCAyMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iMTAwIiBmaWxsPSIjMEYyQUMzIi8+CjxwYXRoIGQ9Ik0xMDMuNTc0IDg0LjU3M0MxMDIuMDUyIDg2LjU4MDggMTAwLjg1MyA4OS4xNDAyIDk5LjY5NzIgOTEuNjU1OUM5OC41NDA5IDk0LjE3MTYgOTcuMzkyIDk2LjY1OTYgOTYuMjE0OSA5OC40MjU1Qzk1LjAzNzggMTAwLjE5MSA5My45Mjg0IDEwMS4wNTggOTIuNzMyNiAxMDEuMDU4QzkxLjI3MDMgMTAxLjA1OCA5MC40NDI1IDEwMC42NDMgODkuNzEwMiA5OS44NjcyQzg4Ljk3NzYgOTkuMDkxNiA4OC40MDY1IDk3LjkwNSA4Ny44NzAzIDk2LjY3MDRDODcuMzMzOSA5NS40MzU4IDg2Ljg0NzcgOTQuMTM1MSA4Ni4wMzA1IDkzLjAzNDlDODUuMjEzMyA5MS45MzQ3IDgzLjkxMDQgOTEuMDI5MSA4Mi4yMTk4IDkxLjAyOTFDODEuMjYzMyA5MS4wMjkxIDgwLjQyMzcgOTEuNDQ1MSA3OS43ODg2IDkyLjAzMkM3OS4xNTM0IDkyLjYxODkgNzguNjkwMSA5My4zOTAxIDc4LjI3NzQgOTQuMjI1OUM3Ny40NTIxIDk1Ljg5NjggNzYuODM1NCA5Ny45NjgyIDc2LjA0MzUgOTkuOTkyN0M3NS4yNTE2IDEwMi4wMTcgNzQuMjc3MSAxMDMuOTk1IDcyLjk1NTUgMTA1LjM4M0M3MS42MzM2IDEwNi43NzIgNjkuOTk5MiAxMDcuNjQgNjcuNTAxOCAxMDcuNjRIMzguMDY2MkMzNy42ODcxIDEwNy42MzUgMzcuMzM0NSAxMDcuODI1IDM3LjE0MzMgMTA4LjEzN0MzNi45NTIyIDEwOC40NDkgMzYuOTUyMiAxMDguODM2IDM3LjE0MzMgMTA5LjE0OEMzNy4zMzQ1IDEwOS40NjEgMzcuNjg3MSAxMDkuNjUxIDM4LjA2NjIgMTA5LjY0Nkg2Ny41MDE4QzcwLjU0NzkgMTA5LjY0NiA3Mi44OTg1IDEwOC40MTYgNzQuNTMyMyAxMDYuN0M3Ni4xNjYyIDEwNC45ODQgNzcuMTg3NSAxMDIuNzk3IDc4LjAxNDYgMTAwLjY4MkM3OC44NDE3IDk4LjU2NzUgNzkuNDc1IDk2LjQ3NDEgODAuMTgyOCA5NS4wNDA3QzgwLjUzNyA5NC4zMjQgODAuODg5MyA5My43OTE5IDgxLjIzNDEgOTMuNDczOEM4MS41Nzg5IDkzLjE1NTIgODEuODI2NiA5My4wMzQ5IDgyLjIxOTggOTMuMDM0OUM4My4yMjc5IDkzLjAzNDkgODMuNzQyNyA5My40NDUzIDg0LjMyMjIgOTQuMjI1OUM4NC45MDE4IDk1LjAwNiA4NS40MTIgOTYuMjEyNyA4NS45NjQ5IDk3LjQ4NTRDODYuNTE3NyA5OC43NTc3IDg3LjA4OTYgMTAwLjA3OCA4OC4xMzMxIDEwMS4xODRDODkuMTc2NiAxMDIuMjg5IDkwLjczNzUgMTAzLjA2NCA5Mi43MzI2IDEwMy4wNjRDOTQuOTkzOCAxMDMuMDY0IDk2LjY1OTEgMTAxLjQ4NiA5Ny45ODg4IDk5LjQ5MTJDOTkuMzE4NSA5Ny40OTYyIDEwMC40NTQgOTQuOTY5NSAxMDEuNjAzIDkyLjQ3MDlDMTAyLjc1MSA4OS45NzE4IDEwMy45NTMgODcuNTE2OSAxMDUuMjgyIDg1Ljc2MzhDMTA2LjYxMSA4NC4wMTA3IDEwNy45MjUgODMuMDA1OCAxMDkuNTUzIDgzLjAwNThDMTEwLjI5NSA4My4wMDU4IDExMC45NDYgODMuMjcyOCAxMTEuNjU2IDgzLjg4MzRDMTEyLjM2NSA4NC40OTM5IDExMy4wNjggODUuNDUxNyAxMTMuNzU4IDg2LjY0MTRDMTE1LjEzOCA4OS4wMjA3IDExNi40NDcgOTIuMzI4OCAxMTcuODMyIDk1LjY2NzVDMTE5LjIxNiA5OS4wMDYyIDEyMC43MTcgMTAyLjM3NiAxMjIuNjk0IDEwNS4wMDdDMTI0LjY3MSAxMDcuNjM4IDEyNy4yMzQgMTA5LjU4MyAxMzAuNTc4IDEwOS41ODNIMTYwLjkzNEMxNjEuMzEzIDEwOS41ODggMTYxLjY2NiAxMDkuMzk4IDE2MS44NTcgMTA5LjA4NkMxNjIuMDQ4IDEwOC43NzMgMTYyLjA0OCAxMDguMzg3IDE2MS44NTcgMTA4LjA3NEMxNjEuNjY2IDEwNy43NjIgMTYxLjMxMyAxMDcuNTcyIDE2MC45MzQgMTA3LjU3N0gxMzAuNTc4QzEyOC4wNjcgMTA3LjU3NyAxMjYuMTcgMTA2LjIzMiAxMjQuNDAyIDEwMy44NzlDMTIyLjYzNCAxMDEuNTI2IDEyMS4xMDggOTguMjgzNyAxMTkuNzM3IDk0Ljk3ODFDMTE4LjM2NiA5MS42NzIxIDExNy4xMDggODguMzA1MiAxMTUuNTk4IDg1LjcwMTJDMTE0Ljg0MyA4NC4zOTkxIDExNC4wOCA4My4yODQ2IDExMy4xMDEgODIuNDQxOEMxMTIuMTIyIDgxLjU5ODcgMTEwLjg4MyA4MSAxMDkuNTUzIDgxQzEwNy4wMzYgODEgMTA1LjA5NiA4Mi41NjUzIDEwMy41NzQgODQuNTczWiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSI1Ii8+Cjwvc3ZnPgo=',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'pulse.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Ether',\n symbol: 'ETH',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'eth.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Aurora',\n symbol: 'AURORA',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 288 288' style='enable-background:new 0 0 288 288;' xml:space='preserve'%3E %3Cstyle type='text/css'%3E .st0%7Bfill:%2370D44B;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E %3Cpath class='st0' d='M144,0L144,0c79.5,0,144,64.5,144,144v0c0,79.5-64.5,144-144,144h0C64.5,288,0,223.5,0,144v0 C0,64.5,64.5,0,144,0z'/%3E %3Cpath class='st1' d='M144,58.8c7.6,0,14.5,4.3,17.9,11.1l56.2,112.5c4.9,9.9,0.9,21.9-9,26.8c-2.8,1.4-5.8,2.1-8.9,2.1H87.8 c-11,0-20-9-20-20c0-3.1,0.7-6.2,2.1-8.9l56.2-112.5C129.5,63,136.4,58.7,144,58.8 M144,45c-12.8,0-24.5,7.2-30.2,18.7L57.6,176.2 c-8.3,16.7-1.6,36.9,15.1,45.3c4.7,2.3,9.9,3.6,15.1,3.6h112.5c18.6,0,33.8-15.1,33.8-33.7c0-5.2-1.2-10.4-3.6-15.1L174.2,63.7 C168.5,52.2,156.8,45,144,45z'/%3E %3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'aurora.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Skyward Finance Token',\n symbol: 'SKYWARD',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'skyward.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked NEAR',\n symbol: 'STNEAR',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 67.79 67.79' version='1.1'%3E%3Cpath style='fill:%23fff' d='M33.934.311a33.9 33.9 0 1 0 33.89 33.9 33.9 33.9 0 0 0-33.89-33.9z' id='path505'%3E%3C/path%3E%3Cpath style='fill:%23ffbd00;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1' d='m11.803 27.8 12.387.359 2.361 5.959 7.616 3.31 8.523-3.322 2.348-5.87 12.269.03L54.822 54.2 31.837 58.86 12.89 52.648z' id='path1051'%3E%3C/path%3E%3Cpath style='fill:%23a0a0ff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1' d='m34.657 12.575-10.43 9.633 1.096 10.01 8.844 5.21 9.785-5.287 1.086-11.33z' id='path1815'%3E%3C/path%3E%3Cpath id='path928' style='fill:%23666;fill-opacity:1' d='M33.928 4.282a29.93 29.93 0 0 1 4.682.367 29.93 29.93 0 0 1 25.244 29.572 29.93 29.93 0 0 1-29.92 29.92 29.93 29.93 0 0 1-.006-59.86zm.729 8.293c-2.03 5.668-8.815 9.76-8.815 14.521 0 4.76 3.912 8.62 8.737 8.62 4.824 0 8.736-3.86 8.736-8.62s-6.707-8.697-8.658-14.521zM37.84 22.67a2.524 2.446 0 0 1 .246.012 2.524 2.446 0 0 1 .246.035 2.524 2.446 0 0 1 .24.059 2.524 2.446 0 0 1 .233.08 2.524 2.446 0 0 1 .225.104 2.524 2.446 0 0 1 .213.123 2.524 2.446 0 0 1 .197.142 2.524 2.446 0 0 1 .183.162 2.524 2.446 0 0 1 .168.178 2.524 2.446 0 0 1 .147.191 2.524 2.446 0 0 1 .127.207 2.524 2.446 0 0 1 .105.217 2.524 2.446 0 0 1 .084.227 2.524 2.446 0 0 1 .06.232 2.524 2.446 0 0 1 .038.237 2.524 2.446 0 0 1 .012.24 2.524 2.446 0 0 1-.086.633 2.524 2.446 0 0 1-.252.59 2.524 2.446 0 0 1-.403.507 2.524 2.446 0 0 1-.521.389 2.524 2.446 0 0 1-.61.244 2.524 2.446 0 0 1-.652.084 2.524 2.446 0 0 1-.654-.084 2.524 2.446 0 0 1-.607-.244 2.524 2.446 0 0 1-.524-.389 2.524 2.446 0 0 1-.4-.508 2.524 2.446 0 0 1-.252-.59 2.524 2.446 0 0 1-.086-.632 2.524 2.446 0 0 1 .086-.633 2.524 2.446 0 0 1 .252-.59 2.524 2.446 0 0 1 .4-.506A2.524 2.446 0 0 1 36.58 23a2.524 2.446 0 0 1 .607-.247 2.524 2.446 0 0 1 .654-.082zM24.19 28.16a16.579 2.485 0 0 0-6.502 1.965 16.579 2.485 0 0 0 7.635 2.093 10.483 10.6 0 0 1-1.133-4.058zm20.848.078a10.483 10.6 0 0 1-1.086 3.904 16.579 2.485 0 0 0 6.894-2.017 16.579 2.485 0 0 0-5.808-1.887zm6.925 3.21c-.455 1.177-4.097 2.154-9.273 2.659a10.483 10.6 0 0 1-8.072 3.861 10.483 10.6 0 0 1-8.067-3.85c-5.276-.506-8.978-1.498-9.398-2.64h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24zm.032 7.323c-.67 1.73-8.22 3.03-17.43 3.03-9.23 0-16.771-1.34-17.381-3h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24zm0 7.21c-.67 1.69-8.22 3.03-17.43 3.03-9.23 0-16.771-1.34-17.381-3h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24z'%3E%3C/path%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'stnear.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Octopus Network Token',\n symbol: 'OCT',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 113.39 113.39' style='enable-background:new 0 0 113.39 113.39;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23014299;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E%3Ccircle class='st0' cx='56.69' cy='56.69' r='56.69'/%3E%3Cg%3E%3Cpath class='st1' d='M44.25,59.41c-1.43,0-2.59,1.16-2.59,2.59v20.28c0,1.43,1.16,2.59,2.59,2.59c1.43,0,2.59-1.16,2.59-2.59V62 C46.84,60.57,45.68,59.41,44.25,59.41z'/%3E%3Cpath class='st1' d='M56.69,59.41c-1.45,0-2.62,1.17-2.62,2.62v26.47c0,1.45,1.17,2.62,2.62,2.62s2.62-1.17,2.62-2.62V62.02 C59.31,60.58,58.14,59.41,56.69,59.41z'/%3E%3Cpath class='st1' d='M79.26,78.87c-0.33,0.15-0.64,0.28-0.95,0.38c0,0-0.01,0-0.01,0c-0.59,0.19-1.13,0.29-1.63,0.31h-0.06 c-1,0.03-1.84-0.27-2.59-0.75c-0.49-0.32-0.91-0.73-1.25-1.23c-0.3-0.43-0.53-0.93-0.71-1.51c0-0.01-0.01-0.02-0.01-0.03 c-0.22-0.74-0.34-1.61-0.34-2.59V62.02c0-1.45-1.17-2.62-2.62-2.62c-1.45,0-2.62,1.17-2.62,2.62v11.43c0,4.5,1.64,8.03,4.63,9.96 c1.5,0.97,3.21,1.45,5.04,1.45c1.68,0,3.45-0.41,5.25-1.22c1.32-0.59,1.9-2.14,1.31-3.46C82.13,78.86,80.57,78.27,79.26,78.87z'/%3E%3Cpath class='st1' d='M68.33,45.9c0-2.15-1.75-3.9-3.9-3.9c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9 C66.58,49.8,68.33,48.05,68.33,45.9z'/%3E%3Cpath class='st1' d='M48.96,41.99c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9s3.9-1.75,3.9-3.9S51.11,41.99,48.96,41.99z'/%3E%3Cpath class='st1' d='M56.69,22.28c-15.17,0-27.52,12.34-27.52,27.52v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 c0-12.26,9.98-22.24,22.24-22.24c12.26,0,22.24,9.98,22.24,22.24v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 C84.21,34.62,71.87,22.28,56.69,22.28z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'oct.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Debio',\n symbol: 'DBIO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIxOTAgOTcgNDIwIDQyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgODAwIDgwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48c3R5bGU+LnN0MHtmaWxsOiMzNjM2MzZ9LnN0M3tmaWxsOiNmZjU2ZTB9PC9zdHlsZT48L2RlZnM+PGNpcmNsZSBjbGFzcz0ic3QzIiBjeD0iNDAwIiBjeT0iMzA3LjM5IiByPSIyMDguNTgiLz48cGF0aCBkPSJNNDczLjk5IDIxMS4zczIuMzQgNTYuMjUtNzcuMzQgOTguNDMtNzAuMzEgOTMuNzQtNzAuMzEgOTMuNzQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNlNmU2ZTY7c3Ryb2tlLXdpZHRoOjM3LjQ5NzU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMzI2LjAxIDIxMS4zcy0yLjM0IDU2LjI1IDc3LjM0IDk4LjQzIDcwLjMxIDkzLjc0IDcwLjMxIDkzLjc0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS13aWR0aDozNy40OTc1O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwIi8+PGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNDAwIiBjeT0iMjE2LjQyIiByPSIyMC40OSIvPjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjQwMCIgY3k9IjM5OC4zNiIgcj0iMjAuNDkiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMzYuMzQyIDY1OC4wNzUpIiBjbGFzcz0ic3QzIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlO2ZvbnQtc2l6ZToxMTIuNDkyNXB4O2ZvbnQtZmFtaWx5OidBcnRlZ3JhU2Fucy1TZW1pQm9sZCciPkRlQmlvPC90ZXh0Pjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'dbio.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Game GEM!!',\n symbol: 'gGEM',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 4,\n id: 'gem.thegame.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Game Gold!!',\n symbol: 'gGOLD',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 2,\n id: 'gold.thegame.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Game Elixir!!',\n symbol: 'gELXR',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 2,\n id: 'elixir.thegame.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USN',\n symbol: 'USN',\n icon:\n \"data:image/svg+xml;charset=UTF-8,%3Csvg width='38' height='38' viewBox='0 0 38 38' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='38' height='38' rx='19' fill='black'/%3E%3Cpath d='M14.8388 10.6601C14.4203 10.1008 13.6748 9.86519 12.9933 10.0768C12.3119 10.2885 11.85 10.8991 11.85 11.5883V14.7648H8V17.9412H11.85V20.0589H8V23.2353H11.85V28H15.15V16.5108L23.1612 27.2165C23.5797 27.7758 24.3252 28.0114 25.0067 27.7997C25.6881 27.5881 26.15 26.9775 26.15 26.2882V23.2353H30V20.0589H26.15V17.9412H30V14.7648H26.15V10.0001H22.85V21.3658L14.8388 10.6601Z' fill='white'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'usdn.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Learn NEAR Club',\n symbol: 'LNC',\n icon:\n 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIACAAIAMBIgACEQEDEQH/xAAZAAADAAMAAAAAAAAAAAAAAAAABgcDBAj/xAAjEAACAgICAgMAAwAAAAAAAAABAgMEBQYAEQcSEyExFCJB/8QAGAEAAgMAAAAAAAAAAAAAAAAAAQMABwj/xAAlEQACAQMDBAIDAAAAAAAAAAABEQMAAgQxQWESIZHwUXGBwfH/2gAMAwEAAhEDEQA/AOqOHNHN5vF67jnyuZtCtVSSKJpCjN00kixoOlBP27qPz/fv64qZDzBq+L8h2/Gt2rk0yVXFJlROK3tVlVhMwhEoPSzeteZgr+vsqMVJ9W6zZHBLKCbLSV38J+GKva+aONC8p/v+U88ORWv5t3fyTFTbwTpWPvxpjMfl8lc2O49SvCLldbENGMwLJ72vidWf7CxB4ifcSDqmaPseS2rXIMtmdYva9kRJLWuY632TDPE5jf436HyxFlJjlAAdCrADvrjZ8OXHt6pEOGGPhjUP3alxZUc9ys78oo/R0rD5E1O3u+oXdboZaPGWrD15oLctU2EikhnjlUtGHQuCYwCPZf394jZDwNc2pdht75uMF3LZ2ji4I72LxQpGhZoT25YLMKySzdN1aVSpJBCOD2shVa7w5IcyaC3ojKDegex1T2HbTtRkxYpruq8MpannbTc1EcB4D3jx3UxaeLPK1fFSpgcfhsxBkcH/AC6V+epWirR5CKFZ42gn+OPpv7uHCQq31GDymeP9XymnarTwed27JbPk0LzXcrfIElmeRy8jKgJEUfsxCRKSqIFUdgd8YuHDPmzZIUpB5QB4ZAZ9+BQhxIoC4wR+SvDXvNf/2Q==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'lnc.factory.tokenhub.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped BTC',\n symbol: 'WBTC',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%23201A2D' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M22.818 9.586l-.6.6a8.494 8.494 0 010 11.464l.6.6a9.352 9.352 0 000-12.678v.014zM10.2 9.638a8.494 8.494 0 0111.464 0l.6-.6a9.352 9.352 0 00-12.678 0l.614.6zm-.562 12.018a8.494 8.494 0 010-11.458l-.6-.6a9.352 9.352 0 000 12.678l.6-.62zm12.018.554a8.494 8.494 0 01-11.464 0l-.6.6a9.352 9.352 0 0012.678 0l-.614-.6zm-1.942-8.286c-.12-1.252-1.2-1.672-2.566-1.8V10.4h-1.056v1.692h-.844V10.4H14.2v1.736h-2.142v1.13s.78-.014.768 0a.546.546 0 01.6.464v4.752a.37.37 0 01-.128.258.366.366 0 01-.272.092c.014.012-.768 0-.768 0l-.2 1.262h2.122v1.764h1.056V20.12h.844v1.73h1.058v-1.744c1.784-.108 3.028-.548 3.184-2.218.126-1.344-.506-1.944-1.516-2.186.614-.302.994-.862.908-1.778zm-1.48 3.756c0 1.312-2.248 1.162-2.964 1.162v-2.328c.716.002 2.964-.204 2.964 1.166zm-.49-3.28c0 1.2-1.876 1.054-2.472 1.054v-2.116c.596 0 2.472-.188 2.472 1.062z'/%3E%3Cpath d='M15.924 26.852C9.89 26.851 5 21.959 5 15.925 5 9.892 9.892 5 15.925 5c6.034 0 10.926 4.89 10.927 10.924a10.926 10.926 0 01-10.928 10.928zm0-21c-5.559.004-10.062 4.513-10.06 10.072.002 5.559 4.51 10.064 10.068 10.064 5.559 0 10.066-4.505 10.068-10.064A10.068 10.068 0 0015.924 5.852z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 8,\n id: 'wbtc.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Huobi BTC',\n symbol: 'HBTC',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'hbtc.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Celo Dollar',\n symbol: 'cUSD',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTEwMCA1MGMwLTI3LjYxNDItMjIuMzg1OC01MC01MC01MHMtNTAgMjIuMzg1OC01MCA1MCAyMi4zODU4IDUwIDUwIDUwIDUwLTIyLjM4NTggNTAtNTB6IiBmaWxsPSIjNDVjZDg1Ii8+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibTY5Ljg4MDUgNjIuNjQzOGMtMS41NjcxIDMuMzkzMS0zLjkzNzUgNi4zNTMyLTYuOTA2MSA4LjYyNDEtMi45Njg1IDIuMjcwOC02LjQ0NTggMy43ODQxLTEwLjEzMDcgNC40MDg3LTMuNjg1LjYyNDYtNy40NjY3LjM0MTctMTEuMDE3Ny0uODI0MS0zLjU1MTEtMS4xNjU4LTYuNzY0Ni0zLjE3OTQtOS4zNjIzLTUuODY2Ni0yLjU5NzgtMi42ODcxLTQuNTAxNS01Ljk2NjktNS41NDY1LTkuNTU1NC0xLjA0NDktMy41ODg1LTEuMTk5Ni03LjM3NzUtLjQ1MDctMTEuMDM5My43NDg5LTMuNjYxNyAyLjM3ODktNy4wODU3IDQuNzQ4OS05Ljk3NTggMi4zNzAxLTIuODkgNS40MDg3LTUuMTU4OSA4Ljg1MjktNi42MTAzbDIuMjY2OCA1LjM3OTJjLTIuNTcgMS4wODMxLTQuODM3NSAyLjc3NjEtNi42MDYgNC45MzI3LTEuNzY4NSAyLjE1NjUtMi45ODQ4IDQuNzExNS0zLjU0MzYgNy40NDM5LS41NTg5IDIuNzMyNC0uNDQzNSA1LjU1OTguMzM2MyA4LjIzNzYuNzc5OCAyLjY3NzcgMi4yMDAzIDUuMTI1MSA0LjEzODggNy4xMzAyIDEuOTM4NCAyLjAwNTIgNC4zMzYzIDMuNTA3OCA2Ljk4NjEgNC4zNzc3czUuNDcxNyAxLjA4MSA4LjIyMTUuNjE0OWMyLjc0OTctLjQ2NjEgNS4zNDQ0LTEuNTk1MyA3LjU1OTUtMy4yODk4IDIuMjE1Mi0xLjY5NDUgMy45ODQtMy45MDMzIDUuMTUzNC02LjQzNTNsNS45MTg5LjMwNDJ6Ii8+PHBhdGggZD0ibTU2LjEwNjEgMjQuNXYtNGg0LjUwMDV2NGMyIDAgNS4xNjY3LjY2NjcgNi41IDF2NC41Yy0xOS0zLTE1LjUwMTEgMy44NDYyLTggNSA2LjcyMTcgMS4wMzM5IDExIDIgMTEuNSA5IC40IDUuNi01LjgzMzMgNy42NjY3LTkgOHYzLjVoLTV2LTMuNWMtMi40IDAtNi42NjY3LTEuNjY2Ny04LjUtMi41di01LjVjNC41IDIuNSAxNyA0LjUgMTcgMHMtMTYuNTAxMS0zLTE4LjAwMDUtMTFjLTEuMDAyMy01LjM0NzUgNS4zMzMzLTcuODMzMyA5LTguNXoiLz48L2c+PC9zdmc+',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'cusd.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'LiNEAR',\n symbol: 'LINEAR',\n icon:\n \"data:image/svg+xml,%3Csvg width='40' height='40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M30.74 28.78c.21-.36.32-.78.32-1.21v-6.33c0-.24-.06-.46-.17-.66-.12-.21-.28-.38-.48-.49l-16.86-9.77c-.35-.2-.73-.31-1.13-.32-.64 0-1.24.26-1.69.72-.45.45-.7 1.07-.71 1.71v6.39c0 .24.06.47.18.67.11.21.28.37.48.48l16.82 9.71c.36.22.77.32 1.19.32.41 0 .82-.12 1.19-.33.36-.21.66-.52.86-.89zm.32-16.27c0-.42-.1-.84-.29-1.21-.2-.38-.49-.7-.85-.93-.36-.22-.78-.34-1.21-.34-.42 0-.84.12-1.21.34l-4.97 2.81c-.04.02-.08.07-.1.12-.03.04-.04.1-.04.14 0 .06.01.11.04.16.02.04.06.08.1.1l8.05 4.62c.05.02.1.04.15.04.05 0 .1-.02.15-.05.04-.02.08-.06.11-.11.02-.04.04-.1.03-.15l.04-5.54zM10.05 27.5c-.01.43.08.86.28 1.23.2.38.49.7.85.93.36.22.78.34 1.2.34.42 0 .83-.12 1.2-.34l4.92-2.85c.04-.02.08-.06.1-.11.03-.04.05-.1.05-.15 0-.05-.02-.11-.05-.15-.02-.05-.06-.09-.1-.12l-8.05-4.6c-.05-.03-.09-.04-.15-.04-.05 0-.1.01-.15.04-.05.02-.08.07-.11.12-.02.04-.04.09-.04.14l.05 5.56z' fill='url(%23paint0_linear_186_370)'/%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_186_370' x1='11.135' y1='11.152' x2='30.145' y2='30.457' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%231BB3CC'/%3E%3Cstop offset='1' stop-color='%23824ACC'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'linear-protocol.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked NEAR',\n symbol: 'STNEAR',\n icon:\n \"data:image/svg+xml,%3Csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='96' height='96' rx='48' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M48.0006 20L41.2575 26.7431L48.0006 33.4862L54.7437 26.7431L48.0006 20ZM37.281 30.7188L30.7144 37.2853L47.9998 54.5707L65.2851 37.2853L58.7186 30.7188L47.9998 41.4376L37.281 30.7188ZM26.7384 41.261L19.9953 48.0041L47.9995 76.0083L76.0037 48.0041L69.2606 41.2611L47.9995 62.5221L26.7384 41.261Z' fill='%23231B51'/%3E%3C/svg%3E\",\n reference: 'https://metapool.app',\n reference_hash: null,\n decimals: 24,\n id: 'meta-v2.pool.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'NearX',\n symbol: 'NearX',\n icon:\n \"data:image/svg+xml,%0A%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3848L21.3848 17.1421L19.3669 15.1243C18.5576 17.0303 17.0303 18.5576 15.1243 19.3669L17.1421 21.3848ZM9.43294 19.5793C7.45322 18.909 5.82115 17.4848 4.87848 15.6484L3.24264 17.2843L7.48528 21.5269L9.43294 19.5793ZM4.63306 8.8757C5.44239 6.96975 6.96975 5.44239 8.8757 4.63306L7.24264 3L3 7.24264L4.63306 8.8757ZM15.6484 4.87848L17.3848 3.14214L21.6274 7.38478L19.5793 9.43294C18.909 7.45322 17.4848 5.82115 15.6484 4.87848Z' fill='black'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E\",\n reference: 'https://near.staderlabs.com',\n reference_hash: null,\n decimals: 24,\n id: 'v2-nearx.staderlabs.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'refLove Finance Token',\n symbol: 'refLove',\n icon:\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyODggMzI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyODggMzI0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzAwQzA4Qjt9Cjwvc3R5bGU+CjxnPgoJPHBhdGggZD0iTTE3My40LDE5MS40VjI2OEgyNTBMMTczLjQsMTkxLjR6IE0xMDcuMiwxMjUuMmwzMCwzMGwzMC4zLTMwLjNWNjkuMmgtNjAuNFYxMjUuMnogTTEwNy4yLDE1Mi4zVjI2OGg2MC40VjE1MmwtMzAuMywzMC4zCgkJTDEwNy4yLDE1Mi4zeiBNMTc3LjEsNjkuMmgtMy43VjExOUwyMTIsODAuNUMyMDEuOCw3My4yLDE4OS42LDY5LjIsMTc3LjEsNjkuMnogTTM4LDE3NS41VjI2OGg2My4zVjE0Ni40bC0xNy4xLTE3LjFMMzgsMTc1LjV6CgkJIE0zOCwxNDguNWw0Ni4yLTQ2LjJsMTcuMSwxNy4xVjY5LjJIMzhWMTQ4LjV6IE0yMzYuOCwxMjguOUwyMzYuOCwxMjguOWMwLTEyLjUtMy45LTI0LjctMTEuMi0zNC44bC01Mi4xLDUydjQyLjRoMy43CgkJQzIxMC4xLDE4OC41LDIzNi44LDE2MS44LDIzNi44LDEyOC45eiIvPgoJPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIyMTAuMiw1NiAyNTAsOTUuOCAyNTAsNTYgCSIvPgo8L2c+Cjwvc3ZnPgo=',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'v010.refve.testnet',\n },\n {\n decimals: 18,\n icon:\n 'data:image/png;base64,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',\n name: 'Ether',\n reference: null,\n reference_hash: null,\n spec: 'ft-1.0.0',\n symbol: 'ETH',\n id: 'aurora',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USDT',\n symbol: 'USDT',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'usdt.itachicara.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USDC',\n symbol: 'USDC',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'usdc.itachicara.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked CORN',\n symbol: 'xCORN',\n icon:\n \"data:image/svg+xml,%3Csvg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.43 32L99.7144 61.4389L150.43 90.8705L201.145 61.4389L150.43 32Z' fill='%235C65A5'/%3E%3Cpath d='M201.146 61.4388L150.431 90.8703L201.146 120.309L251.854 90.8703L201.146 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 61.4388L49 90.8703L99.7152 120.309L150.43 90.8703L99.7152 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M150.43 90.8707L99.7144 120.31L150.43 149.749L201.145 120.31L150.43 90.8707Z' fill='%235C65A5'/%3E%3Cpath d='M99.7152 120.31L49 90.8707V149.749L99.7152 179.187V120.31Z' fill='%235C65A5'/%3E%3Cpath d='M150.43 149.748L99.7144 120.309V179.187L150.43 208.626V149.748Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 179.187L49 149.748V208.626L99.7152 238.058V179.187Z' fill='%233B4274'/%3E%3Cpath d='M150.43 208.626L99.7144 179.187V238.057L150.43 267.496V208.626Z' fill='%235C65A5'/%3E%3Cpath d='M150.431 267.496L201.146 238.057L150.431 208.626V267.496Z' fill='%233B4274'/%3E%3Cpath d='M224.085 213.702L209.447 198.197L194.809 213.702H167.656L195.643 182.183L167.656 150.665H194.809L209.447 166.933L224.085 150.665H251.086L223.175 182.183L251.086 213.702H224.085Z' fill='%233B4274'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'xcorn.corndao.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tether USD',\n symbol: 'USDt',\n icon:\n \"data:image/svg+xml,%3Csvg width='111' height='90' viewBox='0 0 111 90' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.4825 0.862305H88.0496C89.5663 0.862305 90.9675 1.64827 91.7239 2.92338L110.244 34.1419C111.204 35.7609 110.919 37.8043 109.549 39.1171L58.5729 87.9703C56.9216 89.5528 54.2652 89.5528 52.6139 87.9703L1.70699 39.1831C0.305262 37.8398 0.0427812 35.7367 1.07354 34.1077L20.8696 2.82322C21.6406 1.60483 23.0087 0.862305 24.4825 0.862305ZM79.8419 14.8003V23.5597H61.7343V29.6329C74.4518 30.2819 83.9934 32.9475 84.0642 36.1425L84.0638 42.803C83.993 45.998 74.4518 48.6635 61.7343 49.3125V64.2168H49.7105V49.3125C36.9929 48.6635 27.4513 45.998 27.3805 42.803L27.381 36.1425C27.4517 32.9475 36.9929 30.2819 49.7105 29.6329V23.5597H31.6028V14.8003H79.8419ZM55.7224 44.7367C69.2943 44.7367 80.6382 42.4827 83.4143 39.4727C81.0601 36.9202 72.5448 34.9114 61.7343 34.3597V40.7183C59.7966 40.8172 57.7852 40.8693 55.7224 40.8693C53.6595 40.8693 51.6481 40.8172 49.7105 40.7183V34.3597C38.8999 34.9114 30.3846 36.9202 28.0304 39.4727C30.8066 42.4827 42.1504 44.7367 55.7224 44.7367Z' fill='%23009393'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'usdtt.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked CORN',\n symbol: 'xCORN',\n icon:\n \"data:image/svg+xml,%3Csvg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.43 32L99.7144 61.4389L150.43 90.8705L201.145 61.4389L150.43 32Z' fill='%235C65A5'/%3E%3Cpath d='M201.146 61.4388L150.431 90.8703L201.146 120.309L251.854 90.8703L201.146 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 61.4388L49 90.8703L99.7152 120.309L150.43 90.8703L99.7152 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M150.43 90.8707L99.7144 120.31L150.43 149.749L201.145 120.31L150.43 90.8707Z' fill='%235C65A5'/%3E%3Cpath d='M99.7152 120.31L49 90.8707V149.749L99.7152 179.187V120.31Z' fill='%235C65A5'/%3E%3Cpath d='M150.43 149.748L99.7144 120.309V179.187L150.43 208.626V149.748Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 179.187L49 149.748V208.626L99.7152 238.058V179.187Z' fill='%233B4274'/%3E%3Cpath d='M150.43 208.626L99.7144 179.187V238.057L150.43 267.496V208.626Z' fill='%235C65A5'/%3E%3Cpath d='M150.431 267.496L201.146 238.057L150.431 208.626V267.496Z' fill='%233B4274'/%3E%3Cpath d='M224.085 213.702L209.447 198.197L194.809 213.702H167.656L195.643 182.183L167.656 150.665H194.809L209.447 166.933L224.085 150.665H251.086L223.175 182.183L251.086 213.702H224.085Z' fill='%233B4274'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'xcorn.v1.corndao.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tiptoken',\n symbol: 'TT',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'tiptoken.testnet',\n },\n];\n\nexport const DefaultMainnetTokenList = [\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped NEAR fungible token',\n symbol: 'wNEAR',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'wrap.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USD Coin',\n symbol: 'USDC',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 6,\n id: 'a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tether USD',\n symbol: 'USDT.e',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2326A17B'/%3E%3Cpath fill='%23FFF' d='M17.922 17.383v-.002c-.11.008-.677.042-1.942.042-1.01 0-1.721-.03-1.971-.042v.003c-3.888-.171-6.79-.848-6.79-1.658 0-.809 2.902-1.486 6.79-1.66v2.644c.254.018.982.061 1.988.061 1.207 0 1.812-.05 1.925-.06v-2.643c3.88.173 6.775.85 6.775 1.658 0 .81-2.895 1.485-6.775 1.657m0-3.59v-2.366h5.414V7.819H8.595v3.608h5.414v2.365c-4.4.202-7.709 1.074-7.709 2.118 0 1.044 3.309 1.915 7.709 2.118v7.582h3.913v-7.584c4.393-.202 7.694-1.073 7.694-2.116 0-1.043-3.301-1.914-7.694-2.117'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 6,\n id: 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Dai Stablecoin',\n symbol: 'DAI',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23F4B731' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cpath d='M9.277 8h6.552c3.985 0 7.006 2.116 8.13 5.194H26v1.861h-1.611c.031.294.047.594.047.898v.046c0 .342-.02.68-.06 1.01H26v1.86h-2.08C22.767 21.905 19.77 24 15.83 24H9.277v-5.131H7v-1.86h2.277v-1.954H7v-1.86h2.277V8zm1.831 10.869v3.462h4.72c2.914 0 5.078-1.387 6.085-3.462H11.108zm11.366-1.86H11.108v-1.954h11.37c.041.307.063.622.063.944v.045c0 .329-.023.65-.067.964zM15.83 9.665c2.926 0 5.097 1.424 6.098 3.528h-10.82V9.666h4.72z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped Ether',\n symbol: 'WETH',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: '1INCH Token',\n symbol: '1INCH',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '111111111117dc0aa78b770fa6a738034120c302.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Graph Token',\n symbol: 'GRT',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'c944e90c64b2c07662a292be6244bdf05cda44a7.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Skyward Finance Token',\n symbol: 'SKYWARD',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.skyward.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Banana',\n symbol: 'BANANA',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🍌%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'berryclub.ek.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Cucumber',\n symbol: 'CUCUMBER',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🥒%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'farm.berryclub.ek.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'HuobiToken',\n symbol: 'HT',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '6f259637dcd74c767781e37bc6133cd6a68aa161.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Gitcoin',\n symbol: 'GTC',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'de30da39c46104798bb5aa3fe8b9e0e1f348163f.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Uniswap',\n symbol: 'UNI',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23FF007A' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M12.261 5.767c-.285-.044-.297-.05-.163-.07.257-.04.865.015 1.284.114.977.233 1.866.828 2.816 1.885l.252.28.36-.057c1.52-.245 3.067-.05 4.36.547.356.164.917.491.987.576.023.026.064.199.091.383.096.637.048 1.125-.146 1.49-.106.198-.112.26-.041.43a.416.416 0 00.372.236c.322 0 .668-.52.828-1.243l.064-.287.126.143c.692.784 1.235 1.853 1.328 2.613l.025.199-.117-.18c-.2-.31-.4-.522-.658-.693-.464-.307-.955-.411-2.255-.48-1.174-.062-1.839-.162-2.497-.377-1.121-.365-1.686-.852-3.018-2.599-.591-.776-.957-1.205-1.32-1.55-.827-.786-1.639-1.198-2.678-1.36z' fill-rule='nonzero'/%3E%3Cpath d='M22.422 7.5c.03-.52.1-.863.242-1.176.056-.124.109-.226.117-.226a.773.773 0 01-.055.204c-.103.304-.12.72-.049 1.203.09.614.142.702.79 1.365.305.311.659.703.787.872l.233.306-.233-.219c-.285-.267-.941-.79-1.086-.864-.097-.05-.112-.049-.172.01-.055.056-.067.138-.074.529-.012.608-.095 1-.296 1.39-.108.21-.125.166-.027-.073.073-.178.08-.256.08-.845 0-1.184-.141-1.468-.966-1.956a9.046 9.046 0 00-.764-.396 2.916 2.916 0 01-.374-.182c.023-.023.827.211 1.15.336.482.185.561.209.62.186.039-.015.058-.129.077-.464zm-9.607 2.025c-.579-.797-.937-2.02-.86-2.934l.024-.283.132.024c.248.045.675.204.875.326.548.333.786.772 1.027 1.898.071.33.164.703.207.83.068.203.328.678.54.987.152.222.05.327-.286.297-.514-.047-1.21-.527-1.659-1.145zm8.905 5.935c-2.707-1.09-3.66-2.036-3.66-3.632 0-.235.008-.427.017-.427.01 0 .115.077.233.172.549.44 1.164.628 2.865.876 1.001.147 1.565.265 2.085.437 1.652.548 2.674 1.66 2.918 3.174.07.44.029 1.265-.086 1.7-.09.344-.367.963-.44.987-.02.006-.04-.071-.046-.178-.028-.568-.315-1.122-.798-1.537-.549-.471-1.286-.847-3.089-1.572zm-1.9.452a4.808 4.808 0 00-.131-.572l-.07-.206.129.144c.177.2.318.454.436.794.091.259.101.336.1.757 0 .414-.011.5-.095.734a2.32 2.32 0 01-.571.908c-.495.504-1.13.782-2.048.898-.16.02-.624.054-1.033.075-1.03.054-1.707.164-2.316.378a.488.488 0 01-.174.042c-.024-.025.39-.272.733-.437.483-.233.963-.36 2.04-.539.532-.089 1.082-.196 1.221-.239 1.318-.404 1.995-1.446 1.778-2.737z' fill-rule='nonzero'/%3E%3Cpath d='M21.06 18.116c-.36-.773-.442-1.52-.245-2.216.021-.074.055-.135.075-.135a.73.73 0 01.189.102c.166.112.498.3 1.383.782 1.105.603 1.735 1.07 2.164 1.602.375.467.607.999.719 1.647.063.367.026 1.25-.068 1.62-.297 1.166-.988 2.082-1.972 2.616a2.53 2.53 0 01-.288.143c-.014 0 .038-.133.117-.297.33-.692.369-1.366.118-2.116-.153-.459-.466-1.02-1.097-1.966-.734-1.1-.914-1.394-1.095-1.782zm-10.167 4.171c1.005-.848 2.254-1.45 3.393-1.635.49-.08 1.308-.048 1.762.068.728.186 1.38.604 1.719 1.101.33.486.473.91.62 1.852.06.372.123.745.142.83.11.488.327.879.595 1.075.425.311 1.158.33 1.878.05a.981.981 0 01.236-.074c.026.026-.336.269-.592.397a2.014 2.014 0 01-.983.238c-.66 0-1.208-.335-1.665-1.02-.09-.135-.292-.538-.45-.897-.482-1.1-.72-1.436-1.28-1.803-.489-.32-1.118-.377-1.591-.145-.622.305-.795 1.1-.35 1.603.177.2.507.373.777.406a.83.83 0 00.939-.83c0-.332-.128-.52-.448-.665-.437-.197-.907.033-.905.444.001.175.077.285.253.365.113.05.115.055.023.036-.401-.084-.495-.567-.172-.888.387-.386 1.188-.216 1.463.31.116.221.129.662.028.928-.225.595-.883.907-1.55.737-.454-.116-.639-.241-1.186-.805-.951-.98-1.32-1.17-2.692-1.384l-.263-.041.3-.253z' fill-rule='nonzero'/%3E%3Cpath d='M6.196 3.35l.096.117c3.708 4.54 5.624 6.896 5.746 7.064.2.278.125.527-.219.723-.191.109-.585.219-.781.219-.223 0-.474-.107-.657-.28-.129-.123-.65-.901-1.853-2.768a188.53 188.53 0 00-1.712-2.633c-.049-.046-.048-.045 1.618 2.936 1.046 1.872 1.4 2.533 1.4 2.622 0 .18-.05.274-.272.522-.37.413-.535.877-.655 1.837-.134 1.077-.51 1.837-1.554 3.138-.61.762-.71.902-.865 1.209-.194.386-.247.603-.269 1.091-.023.516.022.85.18 1.343.138.432.282.718.65 1.288.318.493.501.859.501 1.002 0 .114.022.114.515.003 1.179-.266 2.136-.735 2.675-1.309.333-.355.411-.551.414-1.038.001-.318-.01-.385-.096-.568-.14-.298-.395-.546-.957-.93-.737-.504-1.051-.91-1.138-1.467-.072-.457.011-.78.419-1.634.421-.884.526-1.26.597-2.151.045-.576.108-.803.274-.985.172-.19.328-.255.755-.313.696-.095 1.139-.275 1.503-.61.316-.292.448-.573.468-.995l.016-.32-.177-.206c-.254-.296-2.355-2.614-6.304-6.956l-.106-.115-.212.165zM7.91 19.732a.566.566 0 00-.174-.746c-.228-.152-.583-.08-.583.118 0 .06.033.104.108.143.127.065.136.139.037.288-.101.152-.093.286.023.377.186.146.45.065.59-.18zm5.524-7.176c-.327.1-.644.447-.743.81-.06.221-.026.61.064.73.145.194.286.245.666.242.744-.005 1.39-.324 1.466-.723.062-.327-.223-.78-.614-.98-.202-.102-.631-.143-.839-.079zm.87.68c.115-.163.064-.34-.13-.458-.372-.227-.934-.04-.934.312 0 .174.293.365.561.365.18 0 .424-.107.503-.219z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '1f9840a85d5af5bf1d1762f925bdaddc4201f984.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped BTC',\n symbol: 'WBTC',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%23201A2D' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M22.818 9.586l-.6.6a8.494 8.494 0 010 11.464l.6.6a9.352 9.352 0 000-12.678v.014zM10.2 9.638a8.494 8.494 0 0111.464 0l.6-.6a9.352 9.352 0 00-12.678 0l.614.6zm-.562 12.018a8.494 8.494 0 010-11.458l-.6-.6a9.352 9.352 0 000 12.678l.6-.62zm12.018.554a8.494 8.494 0 01-11.464 0l-.6.6a9.352 9.352 0 0012.678 0l-.614-.6zm-1.942-8.286c-.12-1.252-1.2-1.672-2.566-1.8V10.4h-1.056v1.692h-.844V10.4H14.2v1.736h-2.142v1.13s.78-.014.768 0a.546.546 0 01.6.464v4.752a.37.37 0 01-.128.258.366.366 0 01-.272.092c.014.012-.768 0-.768 0l-.2 1.262h2.122v1.764h1.056V20.12h.844v1.73h1.058v-1.744c1.784-.108 3.028-.548 3.184-2.218.126-1.344-.506-1.944-1.516-2.186.614-.302.994-.862.908-1.778zm-1.48 3.756c0 1.312-2.248 1.162-2.964 1.162v-2.328c.716.002 2.964-.204 2.964 1.166zm-.49-3.28c0 1.2-1.876 1.054-2.472 1.054v-2.116c.596 0 2.472-.188 2.472 1.062z'/%3E%3Cpath d='M15.924 26.852C9.89 26.851 5 21.959 5 15.925 5 9.892 9.892 5 15.925 5c6.034 0 10.926 4.89 10.927 10.924a10.926 10.926 0 01-10.928 10.928zm0-21c-5.559.004-10.062 4.513-10.06 10.072.002 5.559 4.51 10.064 10.068 10.064 5.559 0 10.066-4.505 10.068-10.064A10.068 10.068 0 0015.924 5.852z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 8,\n id: '2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'ChainLink Token',\n symbol: 'LINK',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%232A5ADA' cx='16' cy='16' r='16'/%3E%3Cpath d='M16 6l-1.799 1.055L9.3 9.945 7.5 11v10l1.799 1.055 4.947 2.89L16.045 26l1.799-1.055 4.857-2.89L24.5 21V11l-1.799-1.055-4.902-2.89L16 6zm-4.902 12.89v-5.78L16 10.22l4.902 2.89v5.78L16 21.78l-4.902-2.89z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '514910771af9ca656af840dff83e8264ecf986ca.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Octopus Network Token',\n symbol: 'OCT',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 113.39 113.39' style='enable-background:new 0 0 113.39 113.39;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23014299;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E%3Ccircle class='st0' cx='56.69' cy='56.69' r='56.69'/%3E%3Cg%3E%3Cpath class='st1' d='M44.25,59.41c-1.43,0-2.59,1.16-2.59,2.59v20.28c0,1.43,1.16,2.59,2.59,2.59c1.43,0,2.59-1.16,2.59-2.59V62 C46.84,60.57,45.68,59.41,44.25,59.41z'/%3E%3Cpath class='st1' d='M56.69,59.41c-1.45,0-2.62,1.17-2.62,2.62v26.47c0,1.45,1.17,2.62,2.62,2.62s2.62-1.17,2.62-2.62V62.02 C59.31,60.58,58.14,59.41,56.69,59.41z'/%3E%3Cpath class='st1' d='M79.26,78.87c-0.33,0.15-0.64,0.28-0.95,0.38c0,0-0.01,0-0.01,0c-0.59,0.19-1.13,0.29-1.63,0.31h-0.06 c-1,0.03-1.84-0.27-2.59-0.75c-0.49-0.32-0.91-0.73-1.25-1.23c-0.3-0.43-0.53-0.93-0.71-1.51c0-0.01-0.01-0.02-0.01-0.03 c-0.22-0.74-0.34-1.61-0.34-2.59V62.02c0-1.45-1.17-2.62-2.62-2.62c-1.45,0-2.62,1.17-2.62,2.62v11.43c0,4.5,1.64,8.03,4.63,9.96 c1.5,0.97,3.21,1.45,5.04,1.45c1.68,0,3.45-0.41,5.25-1.22c1.32-0.59,1.9-2.14,1.31-3.46C82.13,78.86,80.57,78.27,79.26,78.87z'/%3E%3Cpath class='st1' d='M68.33,45.9c0-2.15-1.75-3.9-3.9-3.9c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9 C66.58,49.8,68.33,48.05,68.33,45.9z'/%3E%3Cpath class='st1' d='M48.96,41.99c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9s3.9-1.75,3.9-3.9S51.11,41.99,48.96,41.99z'/%3E%3Cpath class='st1' d='M56.69,22.28c-15.17,0-27.52,12.34-27.52,27.52v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 c0-12.26,9.98-22.24,22.24-22.24c12.26,0,22.24,9.98,22.24,22.24v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 C84.21,34.62,71.87,22.28,56.69,22.28z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'f5cfbc74057c610c8ef151a439252680ac68c6dc.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Ref Finance Token',\n symbol: 'REF',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.v2.ref-finance.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'HAPI',\n symbol: 'HAPI',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='Layer_2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='600px' height='600px' viewBox='0 0 600 600' enable-background='new 0 0 600 600' xml:space='preserve'%3E %3Cg%3E %3Cg%3E %3Cpath fill='%23141414' d='M263.7,122.8c-3.6,0.3-7.1,0.9-10.7,1.8c-24.5,6-40.3,18.1-50.4,31c24.5-4.7,49.9,1.3,67.3,7.4 c0.5,0.2,1,0.4,1.6,0.6c-2.7-4.2-5.2-9-7.2-14.4C261.2,141.1,261.6,131.6,263.7,122.8z'/%3E %3Cpath fill='%23141414' d='M201.2,197.7c-9.8-1.1-19.1-2.1-24.6-2.1c-0.7,0-1.4,0-2,0.1c-38.1,2.6-67.2,37.3-69.1,82.4 c-1.4,32.2,13.5,53.1,23.3,63.4c-1.5-12.5-0.1-25,4.3-37.3c11.7-32.6,34.3-42.1,60.6-53.1c10.8-4.5,22.5-9.5,34.3-16.6l50.1-39.6 c-10.1,2.2-24.4,4.5-42.9,5.3C227.1,200.6,213.9,199.1,201.2,197.7z'/%3E %3Cpath fill='%23141414' d='M319.1,176.5c-0.5,1.1,0.9,2.1,1.8,1.2c5.3-5.4,16.3-14.3,30.8-14.2c15.6,0.1,35.5,10.2,40.5,22.1 c4,9.8-6.6,16.5-6.6,16.5l0,0c-2.5-2.7-8-6.3-18.2-6.6c-15-0.5-25.3,12.1-24.1,12.9c7.5,4.7,17.3,3.7,23.1,3.5 c5.8-0.2,15.1-2.5,17.8-3.5c4.7-1.8,11.7-7.8,14.9-16.1c2.5-6.5,8.4-28.7-25.2-34.4C352.7,154.3,327,159.6,319.1,176.5z'/%3E %3Cpath fill='%23141414' d='M473.1,225.1c-0.5-0.6-1.1-1.3-1.7-2l-0.3-0.3c-3.9-4.4-7.6-8.3-9.4-10.1c1.2-4.2,4-16.2,1-26.1 c-2.3-7.7-6.8-15.5-9.2-19.4l-0.8-1.2h0c-0.4-0.6-0.8-1.2-1.1-1.7c-0.3-0.4-0.5-0.7-0.6-1l-0.2-0.7c-2.5-7-8.6-22.3-16.4-28.1 l59.4-91.7c2.3-3.5-2.1-7.5-5.4-5l-86.8,66.5c-8.7-12.3-21.1-21.8-21.8-22.4c-0.8-0.6-2-0.7-2.9-0.2c-0.9,0.5-1.4,1.6-1.3,2.6 c0,0.1,0.6,5.9-2.9,17.6c7.5,2.7,13.9,6,19.3,9.7l-4.5,3.5c-8.8-5.7-20-10.5-34.3-12.6c-17.7-2.6-31.9,1-42.1,10.7c0,0,0,0,0,0 c5.9,3.8,13.1,8.7,17,12.4c0.8,0.7,1.5,1.5,2.2,2.3c-3.1,0.9-6.2,1.9-9.3,2.9c-0.3-0.2-0.5-0.5-0.8-0.7c-1.9-1.7-4.4-3.4-7-5.3 c-5.4-3.8-11.7-8.3-15.8-14c-2.2-3.1-3.8-6.5-4.3-10.4c-0.3-2.4-1-4-2.2-4.9c0,0,0,0,0,0c0,0,0,0,0,0c-0.6-0.5-2.8-2-5.8,0.3 c-2,1.6-4.4,5.3-6.5,10.3c-5.2,12.3-8.7,32.1-1.8,46.1c1.2,2.3,2.4,4.5,3.7,6.6c-0.4,1-0.7,2.1-0.9,3.1c-0.6,3.4-0.9,7.8-1.2,12.7 c-19.8-8.3-50.5-17.5-78.5-10.7c-23.9,5.8-39.4,17.5-49.6,30c7.4-3.1,15.2-5,23.5-5.6c5.6-0.4,16.4,0.8,27.9,2.1 c11.8,1.3,25.3,2.8,32.9,2.4c19.2-0.8,33.7-3.3,43.5-5.6c0,5.4,0.1,11.1,0.4,16.9c0.7,16.8,2.5,34.3,5,46.5 c3.6,17.9,16.5,55.2,31.4,64.6c5.5,3.5,13.5,8.2,22.9,13.4c-2.5,6.4-5.1,15.1-5.1,23.5c0,15.2,5.2,26.6,11,37 c4.6,8.2,9.6,15.7,12.8,24c2.5,6.5-2.7,27.7-5.6,38.9c-1.2,4.5-1.9,7.3-1.7,7c3.7-5.1,7.5-10.8,11.3-16.8 c15.3-24.2,19.4-47,19.5-48l0.2-1.4l-1.1-1c-0.2-0.2-17.2-15.7-18.3-33.3c-0.4-6.9,1-11.5,4.3-13.8c0.5-0.3,1-0.6,1.6-0.9 c7.5,3.7,15,7.3,22.2,10.5c2.8,3.5,9,9.4,11.8,12c3.4,3.2,6.9,7.8,12.2,7.8c5.3,0,15.9,0,21.3,0s13.1,0,17.3-2.1 c4.2-2.1,10.9-5.6,11-12.6c0-1.5,0.4-3.9,0.9-6.8c3.7-4.9,4.1-10.6,4.8-19.2c0.5-5.7,1.7-15.5,3-25.9c2-15.7,4.1-32,3.9-37.9 c-0.2-8.2-1.1-14.3-1.4-16.2C475.3,249.4,479.5,232.4,473.1,225.1z M318,310.6c-13.3-8.4-25.6-44.6-29-61.2 c-4.8-23.9-6.9-68.5-3.9-86.8c2.7-16.7,49-34.5,81.7-35.6c1.9-0.1,3.8-0.1,5.6-0.1c1,0,2,0,3,0c-0.1,4.9,1.3,15.6,13.8,25.5 c13.9,11,30.4,5,30.4,5l12.1-18.7c4.5,3.5,9.4,12.7,13,22.1c-0.9-0.4-1.9-0.7-3.1-0.9c-8.1-1.3-31.6-0.9-24,31.3 c1,4,5.2,9.4,17.2,22.3c2.8,3,5.1,5.3,7,7.2c5.6,5.6,7.4,7.4,7.5,11.8c0,0.3-0.2,1.6-0.4,3c-0.8-0.6-1.9-1.1-3.4-1 c-3.6-0.2-33.7,5.6-42.4,15.1c-1.7,1.9-4.5,2.6-6.7,1.4c-0.1-0.1-0.2-0.1-0.3-0.2c-1.4-0.8-2.3-1.9-2.8-3.5 c-1.3-5.1,2.9-13.2,4.6-16c0.6-1,0.3-2.3-0.6-2.9c-1-0.6-2.3-0.3-2.9,0.6c-0.1,0.2-0.9,1.5-1.9,3.5c-3.3,6.6-8.2,12.2-14.3,16.3 c-9.8,6.6-24,15.2-35.5,18.2c-18,4.7-24.9-8.2-25.2-8.8c-0.5-1-1.8-1.4-2.8-0.9c-1,0.5-1.5,1.8-0.9,2.8 c0.1,0.1,6.3,12.1,21.5,12.1c0.6,0,1.4-0.1,2.2-0.2c4.3-0.5,8.6,0.5,12.3,2.7c3.5,2.1,8,4.7,12.5,7c12.6,6.3,14.7,6.2,19.5,5.4 c1.1-0.2,49.8-2.4,80.1-8.2l3.6,0.2c2.4,0.1,4.3,2.3,4,4.7l0,0.1c-0.2,1.4-1,2.6-2.2,3.3c-2.7,1.5-6.5,3.5-9.9,4.9 c-1.6,0.6-3.3,1.2-5.1,1.6c-5.5,1.3-11.1,1.6-11.1,1.6s-5.4,1.2-13.5,2.1c-3.4,0.4-7.2,0.7-11.3,0.9c-14,0.7-13,1.6-24.8,1 c-2.9-0.1-5.7-0.3-8.3-0.6c-2.5-0.3-3.2,3.4-0.7,4c6.1,1.5,13.3,2.6,21.3,2.5c1,0,1.9,0,2.9,0c12.8-0.1,24.4,7.5,29.4,19.3 c2.1,5,4.1,12,5.4,18.5c1.8,8.4-5.3,16.1-13.8,15.3c-12.5-1.3-26.6-4.8-34.6-8.3C365.3,338.1,332.4,319.8,318,310.6z M448.7,169.2 l1.2,1.9c2.4,4,5.9,10.5,7.9,16.9c3.1,10.4-1.4,24.4-1.4,24.5l-0.5,1.5l1.1,1.1c0,0.1,5,5.2,10.3,11.1l0.1,0.2 c0.6,0.7,1.2,1.3,1.8,2c3.7,4.3,1.9,17-0.1,23.9l-0.2,0.6l0.1,0.6c0,0,0.3,1.5,0.6,3.9c-2.7,0.3-4.7,2.7-4.4,5.5l0.8,7.5l-8.6,0.1 l-13.5-15.3c-1-1.2-1-3,0.2-4c0,0,0,0,0,0c7.1-6.4,8.1-9.5,8.3-10.7c0.9-5.4,1.2-7.4,1.2-8.1c0-6.1-2.9-9-8.7-14.8 c-1.9-1.9-4.2-4.2-6.9-7.1c-0.6-0.6-1.1-1.2-1.7-1.8c2.1,0.6,4.9,1.2,8.5,1.5c8.4,0.7,10.9-1.4,10.9-1.4s1.5-2.7-1.1-6.6 c-2.6-3.9-6.2-6.7-13.2-6.9c-5-0.2-9.5,3.7-11.7,6c-0.9-1-2.9-4.7-3.8-10.9c-1.5-9.7,2.1-14.2,4.7-16.4c4.6-3.9,10.9-7.7,14.4-7.5 c0.9,0.1,1.9,0.2,2.7,0.4C447.8,167.7,448.2,168.4,448.7,169.2z M463.4,332.9c-0.7,8.2-1.1,12.8-3.8,16.5c-2.3,3.1-7.3,0.8-6.6-3 c0.4-2.1,0.7-4.3,0.8-6.4c0.3-10.7-4.9-20.9-6.7-27.7c0,0,0-0.1,0-0.1c-0.9-3.8,1.2-7.7,4.8-9.3c1.6-0.7,3.4-1.6,5.3-2.6 c4.6-2.3,9.9,1.3,9.2,6.4l0,0.1C465.2,317.2,463.9,327.1,463.4,332.9z M385.1,249.4c1.8-1.3,4.4-0.8,5.6,1.2 c0.8,1.4,1.9,2.9,3.4,4.1c4.5,3.7,9.8,3.5,13.2,3.5c3.3,0,5.4-0.6,6-0.8c0,0,0,0,0,0c2.4-0.5,4.3,2,3.1,4.2 c-2.6,4.8-6.1,11.1-6.5,11.4c-0.7,0.5-22.8,5.1-25.6,5.4s-11.6,1.2-18.2-3c-2.8-1.7-5.5-3.7-7.7-5.3c-1.7-1.2-1.4-3.8,0.4-4.7 C368.8,260.4,378.7,253.9,385.1,249.4z M436.8,263.8l8.3,9.1c1.5,1.7,0.5,4.4-1.7,4.7c-5,0.6-10,1.2-14.9,1.7 c-2.3,0.2-3.9-2.3-2.7-4.3c1.9-3,4.3-7,6.5-10.8C433.2,262.6,435.5,262.4,436.8,263.8z M396.4,117.1l83.5-69.1l-76.9,76.9 c-2.5,2.4-6.6,1.6-8.1-1.5h0C393.9,121.2,394.5,118.5,396.4,117.1z'/%3E %3Cpath fill='%23141414' d='M196.6,258.1c-25.6,10.7-45.8,19.2-56.4,48.7c-15.1,42,9.4,88.5,62.5,120.1c-17.4-68,3.5-93.1,22.1-115.3 c6.4-7.7,12.5-15,16.9-23.7c12.9-25.8,12.3-50.5,11.1-62C233.7,242.5,214.1,250.8,196.6,258.1z'/%3E %3C/g%3E %3Cg%3E %3Cpath d='M201.6,477.1h-9.1l-2.8,17.1h-14.3l2.8-17.1h-9.1l-2.8,17.1h-9.3l-1.5,9.1h9.3l-2.3,14h-9.4l-1.5,9.1h9.4l-2.8,17.1h9.1 l2.8-17.1h14.3l-2.8,17.1h9.1l2.8-17.1h9.3l1.5-9.1h-9.3l2.3-14h9.4l1.5-9.1h-9.4L201.6,477.1z M186,517.4h-14.3l2.3-14h14.3 L186,517.4z'/%3E %3Cpolygon points='260.8,505.3 230,505.3 230,477.1 218,477.1 218,543.6 230,543.6 230,515.4 260.8,515.4 260.8,543.6 272.9,543.6 272.9,477.1 260.8,477.1 '/%3E %3Cpath d='M307.1,477.1l-23.4,66.4h12.8l5.5-16.4h25l5.5,16.4h12.8l-23.4-66.4H307.1z M305.3,517.5l9-26.8h0.5l9,26.8H305.3z'/%3E %3Cpath d='M394,480c-3.5-1.9-7.8-2.9-12.9-2.9h-24.9v66.4h12v-22.4H381c5.1,0,9.4-0.9,12.9-2.8s6.2-4.5,7.9-7.8 c1.8-3.3,2.7-7.1,2.7-11.3c0-4.2-0.9-8-2.7-11.3C400.1,484.5,397.4,481.9,394,480z M390.9,505.4c-0.9,1.8-2.3,3.2-4.2,4.3 c-1.9,1-4.3,1.6-7.3,1.6h-11.1v-24h11c3,0,5.5,0.5,7.4,1.5c1.9,1,3.3,2.4,4.2,4.2c0.9,1.8,1.4,3.9,1.4,6.2 S391.8,503.6,390.9,505.4z'/%3E %3Crect x='417.1' y='477.1' width='12' height='66.4'/%3E %3C/g%3E %3C/g%3E %3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'd9c2d319cd7e6177336b0a9c93c21cb48d84fb54.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'PARAS',\n symbol: 'PARAS',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.paras.near',\n },\n {\n spec: 'ft-1.0.0',\n name: '1MILNFT',\n symbol: '1MIL',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 146 146' xml:space='preserve'%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M0 0L0 31L31 31L31 0L0 0z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M31 0L31 31L32 31L31 0z'/%3E %3Cpath style='fill:%23000000; stroke:none;' d='M32 0L32 32L0 32L0 38L32 38L32 70L0 70L0 76L32 76L32 109L0 109L0 114L32 114L32 146L38 146L38 114L70 114L70 146L76 146L76 114C82.7843 114 102.446 110.653 107.397 115.603C112.241 120.448 109 139.378 109 146L114 146L114 114L146 114L146 109C139.378 109 120.448 112.241 115.603 107.397C110.653 102.446 114 82.7843 114 76L146 76L146 70L114 70L114 38L146 38L146 32C139.378 32 120.448 35.2414 115.603 30.3966C110.759 25.5518 114 6.6225 114 0L109 0L109 32L76 32L76 0L71 0L71 32L38 32L38 0L32 0z'/%3E %3Cpath style='fill:%23459f00; stroke:none;' d='M38 0L38 32L70 32L70 31L39 31L38 0z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M39 0L39 31L70 31L70 0L39 0z'/%3E %3Cpath style='fill:%230d2000; stroke:none;' d='M70 0L70 32L71 32L70 0z'/%3E %3Cpath style='fill:%233f0180; stroke:none;' d='M76 0L76 32L108 32L108 31L77 31L76 0z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M77 0L77 31L108 31L108 0L77 0z'/%3E %3Cpath style='fill:%232f0060; stroke:none;' d='M108 0L108 32L109 32L108 0z'/%3E %3Cpath style='fill:%231d4101; stroke:none;' d='M114 0L114 31L115 31L114 0z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M115 0L115 31L146 31L146 0L115 0z'/%3E %3Cpath style='fill:%239f017c; stroke:none;' d='M0 31L0 32L32 32L0 31z'/%3E %3Cpath style='fill:%23459f00; stroke:none;' d='M115 31L115 32L146 32L115 31z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M0 38L0 69L31 69L31 38L0 38z'/%3E %3Cpath style='fill:%2300d2df; stroke:none;' d='M31 38L31 69L0 69L0 70L32 70L31 38z'/%3E %3Cpath style='fill:%23be0094; stroke:none;' d='M38 38L38 70L39 70L38 38z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M39 38L39 69L70 69L70 38L39 38z'/%3E %3Cpath style='fill:%23200018; stroke:none;' d='M70 38L70 70L71 70L70 38z'/%3E %3Cpath style='fill:%23007880; stroke:none;' d='M76 38L76 70L77 70L76 38z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M77 38L77 69L108 69L108 38L77 38z'/%3E %3Cpath style='fill:%23015a60; stroke:none;' d='M108 38L108 70L109 70L108 38z'/%3E %3Cpath style='fill:%23400032; stroke:none;' d='M114 38L114 70L115 70L114 38z'/%3E %3Cpath style='fill:%23de00ad; stroke:none;' d='M115 38L115 39L146 39L115 38z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M115 39L115 70L146 70L146 39L115 39z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M39 69L39 70L70 70L39 69z'/%3E %3Cpath style='fill:%2300d2df; stroke:none;' d='M77 69L77 70L108 70L77 69z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M0 76L0 77L32 77L0 76z'/%3E %3Cpath style='fill:%235f00be; stroke:none;' d='M38 76L38 108L39 108L39 77L70 77L38 76z'/%3E %3Cpath style='fill:%230f001f; stroke:none;' d='M70 76L70 108L71 108L70 76z'/%3E %3Cpath style='fill:%23388000; stroke:none;' d='M76 76L76 108L77 108L76 76z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M77 76L77 77L108 77L77 76z'/%3E %3Cpath style='fill:%232a6000; stroke:none;' d='M108 76L108 108L109 108L108 76z'/%3E %3Cpath style='fill:%23003d40; stroke:none;' d='M114 76L114 108L115 108L114 76z'/%3E %3Cpath style='fill:%2300b4bf; stroke:none;' d='M115 76L115 77L146 77L115 76z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M0 77L0 108L32 108L32 77L0 77z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M39 77L39 108L70 108L70 77L39 77z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M77 77L77 108L108 108L108 77L77 77z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M115 77L115 108L146 108L146 77L115 77z'/%3E %3Cpath style='fill:%230f2000; stroke:none;' d='M0 108L0 109L32 109L0 108M76 108L76 109L108 109L76 108z'/%3E %3Cpath style='fill:%23001e20; stroke:none;' d='M115 108L115 109L146 109L115 108z'/%3E %3Cpath style='fill:%23810064; stroke:none;' d='M0 114L0 115L32 115L0 114z'/%3E %3Cpath style='fill:%23398000; stroke:none;' d='M38 114L38 115L70 115L38 114z'/%3E %3Cpath style='fill:%23800063; stroke:none;' d='M76 114L76 146L77 146L77 115L108 115L76 114z'/%3E %3Cpath style='fill:%23200041; stroke:none;' d='M114 114L114 146L115 146L114 114z'/%3E %3Cpath style='fill:%23410080; stroke:none;' d='M115 114L115 115L146 115L115 114z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M0 115L0 146L31 146L31 115L0 115z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M31 115L31 146L32 146L31 115z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M38 115L38 146L39 146L38 115z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M39 115L39 146L70 146L70 115L39 115z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M77 115L77 146L108 146L108 115L77 115z'/%3E %3Cpath style='fill:%2360004a; stroke:none;' d='M108 115L108 146L109 146L108 115z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M115 115L115 146L146 146L146 115L115 115z'/%3E %3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'a4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'marma j token',\n symbol: 'marmaj',\n icon:\n 'data:image/jpeg;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'marmaj.tkn.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked NEAR',\n symbol: 'STNEAR',\n icon:\n \"data:image/svg+xml,%3csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='96' height='96' rx='48' fill='white'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M48.0006 20L41.2575 26.7431L48.0006 33.4862L54.7437 26.7431L48.0006 20ZM37.281 30.7188L30.7144 37.2853L47.9998 54.5707L65.2851 37.2853L58.7186 30.7188L47.9998 41.4376L37.281 30.7188ZM26.7384 41.261L19.9953 48.0041L47.9995 76.0083L76.0037 48.0041L69.2606 41.2611L47.9995 62.5221L26.7384 41.261Z' fill='%23231B51'/%3e%3c/svg%3e\",\n reference: 'https://metapool.app',\n reference_hash: null,\n decimals: 24,\n id: 'meta-pool.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Cheddar',\n symbol: 'Cheddar',\n icon:\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA2NCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgNjQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDp1cmwoI1hNTElEXzE2Xyk7fQoJLnN0MXtmaWxsOiNGRkU5NTk7fQoJLnN0MntvcGFjaXR5OjAuMjt9Cgkuc3Qze2ZpbGw6IzQyNDI0Mjt9Cgkuc3Q0e29wYWNpdHk6MC45O2ZpbGw6dXJsKCNYTUxJRF8xN18pO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAgICA7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMV8pO30KCS5zdDZ7ZmlsbDp1cmwoI1hNTElEXzE4Xyk7fQoJLnN0N3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMTlfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDh7ZmlsbDp1cmwoI1hNTElEXzIwXyk7fQoJLnN0OXtvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMjFfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDEwe2ZpbGw6dXJsKCNTVkdJRF8yXyk7fQoJLnN0MTF7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzIyXyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QxMntmaWxsOnVybCgjWE1MSURfMjNfKTt9Cgkuc3QxM3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMjRfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDE0e2ZpbGw6dXJsKCNTVkdJRF8zXyk7fQoJLnN0MTV7ZmlsbDp1cmwoI1hNTElEXzI2Xyk7fQoJLnN0MTZ7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzI3Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QxN3tmaWxsOnVybCgjWE1MSURfMzFfKTt9Cgkuc3QxOHtvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMzNfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDE5e2ZpbGw6dXJsKCNTVkdJRF80Xyk7fQoJLnN0MjB7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzM0Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QyMXtmaWxsOnVybCgjWE1MSURfMzZfKTt9Cgkuc3QyMntvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMzdfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDIze2ZpbGw6dXJsKCNTVkdJRF81Xyk7fQoJLnN0MjR7ZmlsbDp1cmwoI1hNTElEXzM4Xyk7fQoJLnN0MjV7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzM5Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QyNntmaWxsOnVybCgjWE1MSURfNDBfKTt9Cgkuc3QyN3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfNDFfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDI4e2ZpbGw6dXJsKCNTVkdJRF82Xyk7fQoJLnN0Mjl7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzQyXyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cjwvc3R5bGU+CjxnIGlkPSJMYXllcl8xXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMTZfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0xODIxLjEzNTMiIHkxPSI5ODMuMTc0MyIgeDI9Ii0xODIxLjEzNTMiIHkyPSI5OTguMDU0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAtMTc5MC4yNzUzIC05NDYpIj4KCQk8c3RvcCAgb2Zmc2V0PSIxLjk3MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNGN0JDMDAiLz4KCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkNENzNFIi8+Cgk8L2xpbmVhckdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzY4XyIgY2xhc3M9InN0MCIgZD0iTTUyLjMsNDAuMnYxNC4xbC00MC4yLTYuMWMtMS41LTAuMy0yLjYtMS4zLTIuNi0yLjNjMC4xLTMuOC0wLjEtNy41LDAtMTEuMQoJCWMwLTAuNywwLjEtMS41LDEuMi0xLjdjMC43LTAuMSwxLjYsMC4yLDIuMywwLjNsNC45LDAuOGMwLDAuMSwwLDAuMywwLDAuNGMwLDEuNiwxLjcsMyw0LDMuMWMyLDAuMSwzLjYtMC44LDMuOS0yLjJMNDAuNiwzOAoJCWMtMC4xLDAuMi0wLjIsMC40LTAuMiwwLjVjMCwwLjcsMC45LDEuMywxLjksMS40YzEuMSwwLjEsMS45LTAuNCwxLjktMS4yYzAtMC4xLDAtMC4xLDAtMC4yQzQ0LjEsMzguNiw1Mi4zLDQwLjIsNTIuMyw0MC4yeiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTkuNSwzNC44YzAuMy0xLjItMC40LTIuNiwzLjUtMS41bDQuOSwwLjhjMC40LTEsMi0xLjYsMy44LTEuNGMyLjIsMC4xLDQsMS4zLDQsMi41YzAsMC4xLDAsMC4yLDAsMC4zCgkJTDQwLjUsMzhsMCwwYzAuMy0wLjMsMS0wLjQsMS43LTAuNGMxLDAuMSwxLjksMC41LDEuOSwxLjFsOC4yLDEuNkwzMC44LDI3LjVjLTItMS4yLTQuNS0xLjctNi43LTEuM2MtMi4yLDAuMy01LDAuOC03LjEsMS42CgkJYy0yLjUsMC45LTQuOCwyLjQtNi4yLDMuNmMtMC4xLDAuMS0wLjYsMC41LTAuOSwxLjFDOS41LDMzLDkuNSwzMy44LDkuNSwzNC44eiIvPgoJPGcgY2xhc3M9InN0MiI+CgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTI1LjQsMjdjMS42LDAsMy4zLDAuNCw0LjcsMS4zbDIxLDEyLjV2MTIuNmwtMzguOC01LjljLTAuOS0wLjItMS43LTAuOC0xLjYtMS40YzAtMi4yLDAtNC4zLDAtNi41CgkJCWMwLTEuNSwwLTMuMSwwLTQuN2MwLTAuMSwwLTAuMiwwLTAuNGwwLDBjMC0wLjUsMC4xLTEuMiwwLjMtMS42YzAuMi0wLjQsMC41LTAuNywwLjYtMC44YzEuNC0xLjEsMy42LTIuNSw1LjgtMy40CgkJCWMxLjYtMC42LDQtMS4xLDYuOC0xLjVDMjQuNiwyNywyNC45LDI3LDI1LjQsMjcgTTI1LjQsMjYuMWMtMC40LDAtMC45LDAtMS4zLDAuMWMtMi4yLDAuMy01LDAuOC03LjEsMS42CgkJCWMtMi41LDAuOS00LjgsMi40LTYuMiwzLjZjLTAuMSwwLjEtMC42LDAuNS0wLjksMS4xYy0wLjMsMC41LTAuMywxLjItMC40LDEuOWMwLDAuMiwwLDAuMywwLDAuNGMwLDMuNywwLjEsNy41LDAuMSwxMS4xCgkJCWMwLDEuMSwxLjEsMi4xLDIuNiwyLjNsNDAuMiw2LjFWNDAuMkwzMC44LDI3LjVDMjkuMiwyNi42LDI3LjMsMjYuMSwyNS40LDI2LjFMMjUuNCwyNi4xeiIvPgoJPC9nPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8xN18iIGN4PSItMzA0NS4xOTg3IiBjeT0iMjA0Ny40NDY5IiByPSI2Ljg2ODciIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuNDI1OCAwIDAgMC4zMjI1IC0xMjc5Ljk4MTMgLTYxNy4xODk5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzM1XyIgY2xhc3M9InN0NCIgZD0iTTE4LjQsNDMuOGMwLDEuMi0xLjMsMi4xLTMsMmMtMS42LTAuMS0zLTEuMi0zLTIuM3MxLjMtMi4xLDMtMkMxNyw0MS41LDE4LjQsNDIuNiwxOC40LDQzLjh6IgoJCS8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBjeD0iLTMwNjQuNDI3NSIgY3k9IjIwMTUuOTU3IiByPSIxNC4xMzIxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjQyNTggMCAwIDAuMzIyNSAtMTI3OS45ODEzIC02MTcuMTg5OSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0xNy44LDM0LjRjMCwxLjYsMS43LDMsNCwzLjFjMiwwLjEsMy42LTAuOCwzLjktMi4yaC0wLjFsLTAuMy0wLjFsMC40LDAuMWMwLTAuMSwwLTAuMiwwLTAuMwoJCWMwLTEuMy0xLjgtMi40LTQtMi41Yy0xLjgtMC4xLTMuNCwwLjUtMy44LDEuNEMxNy44LDM0LjIsMTcuOCwzNC40LDE3LjgsMzQuNHoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMThfIiBjeD0iLTEzMjguMjIwMiIgY3k9IjM0ODEuNzQ3MSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzA3OCAwLjIyMjggMC4yNDA5IDAuMTkwOSAtMTIyMS41MjUxIC0zNDAuNzk4NCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzMyXyIgY2xhc3M9InN0NiIgZD0iTTI2LjgsMjkuNGMwLDAuNS0wLjksMS0yLDAuOXMtMi0wLjYtMi0xLjJzMC45LTEsMi0wLjlDMjYsMjguMiwyNi44LDI4LjgsMjYuOCwyOS40eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8xOV8iIGN4PSItMzA3OS41NTMiIGN5PSIyMDQ0LjQxMSIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMzBfIiBjbGFzcz0ic3Q3IiBkPSJNMzUuMSw0My40YzAsMi4xLTIuMiwzLjUtNSwzLjNzLTUtMi01LTRjMC0yLjEsMi4yLTMuNSw1LTMuM0MzMi44LDM5LjYsMzUuMSw0MS40LDM1LjEsNDMuNHoiCgkJLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjBfIiBjeD0iLTMwNzYuMzYxNiIgY3k9IjIwMTEuMTY0OCIgcj0iMTAuOTExOCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC43NTAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojRDk5OTE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC40MDk4IiBzdHlsZT0ic3RvcC1jb2xvcjojRDU5NjEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC43MzUiIHN0eWxlPSJzdG9wLWNvbG9yOiNDOThEMEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0JBODIwNyIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8yOV8iIGNsYXNzPSJzdDgiIGQ9Ik0zNS44LDMzLjFjMCwwLjgtMS4zLDEuMy0yLjksMS4yYy0xLjYtMC4yLTIuOS0wLjgtMi45LTEuNmMwLTAuOCwxLjMtMS4zLDIuOS0xLjIKCQlDMzQuNiwzMS43LDM1LjgsMzIuMywzNS44LDMzLjF6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlhNTElEXzIxXyIgY3g9Ii0zMTAyLjMwMzUiIGN5PSIyMDU5Ljc2NjgiIHI9IjUuOTI4NSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3Q5IiBkPSJNNDIuMyw0Ny43YzAsMS0xLjIsMS44LTIuNiwxLjdjLTEuNC0wLjEtMi42LTEtMi42LTIuMWMwLTEuMSwxLjItMS44LDIuNi0xLjcKCQlDNDEuMSw0NS45LDQyLjMsNDYuOCw0Mi4zLDQ3Ljd6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzJfIiBjeD0iLTMxMDYuODA4OCIgY3k9IjIwMzAuMDM0MyIgcj0iOC44NDA4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjQyNTggMCAwIDAuMzIyNSAtMTI3OS45ODEzIC02MTcuMTg5OSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjYwMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNDNzczMTUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjM3NzQiIHN0eWxlPSJzdG9wLWNvbG9yOiNDMzcxMTMiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjY3MTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNCNzZDMEYiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk2NjkiIHN0eWxlPSJzdG9wLWNvbG9yOiNBMzY0MDciLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0ExNjMwNiIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNNDAuMiwzOC41YzAsMC43LDAuOSwxLjMsMS45LDEuNGMxLjEsMC4xLDEuOS0wLjQsMS45LTEuMmMwLTAuMSwwLTAuMSwwLTAuMmwwLDBjMC0wLjUtMC45LTEtMS45LTEuMQoJCWMtMC43LTAuMS0xLjQsMC4xLTEuNywwLjRsMCwwQzQwLjMsMzguMSw0MC4yLDM4LjMsNDAuMiwzOC41eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8yMl8iIGN4PSItMzExOS4yMjA1IiBjeT0iMjA0OC44OTk5IiByPSI0LjM5ODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuNDI1OCAwIDAgMC4zMjI1IC0xMjc5Ljk4MTMgLTYxNy4xODk5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzI1XyIgY2xhc3M9InN0MTEiIGQ9Ik00OC43LDQ0YzAsMC41LTAuNiwxLTEuMywwLjljLTAuNy0wLjEtMS4zLTAuNS0xLjMtMS4xYzAtMC41LDAuNi0xLDEuMy0wLjkKCQlDNDgsNDMsNDguNyw0My40LDQ4LjcsNDR6Ii8+CjwvZz4KPGcgaWQ9IkxheWVyXzFfMl8iPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF8yM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTIxMjYuNTcyIiB5MT0iMTAyNi43NzYxIiB4Mj0iLTIxMjYuNTcyIiB5Mj0iMTAzOS45Mzc5IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjc2NTIgLTEuNjc0MTIzZS0wMiAtMS44Nzk5NDdlLTAyIDAuODU5MyAtMTU3Ni4yMTU3IC04OTMuNDA4NSkiPgoJCTxzdG9wICBvZmZzZXQ9IjEuOTcwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Y3QkMwMCIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQ0Q3M0UiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfN18iIGNsYXNzPSJzdDEyIiBkPSJNNDcsMjdsLTAuNCwxMC45bC0yOC41LTUuMWMtMS4xLTAuMi0xLjgtMS0xLjgtMS44YzAuMi0yLjksMC4xLTUuOCwwLjMtOC42CgkJYzAtMC41LDAuMS0xLjIsMC45LTEuM2MwLjUtMC4xLDEuMiwwLjIsMS43LDAuM2wzLjQsMC43YzAsMC4xLDAsMC4yLDAsMC4zYzAsMS4yLDEuMiwyLjMsMi43LDIuNGMxLjQsMC4xLDIuNi0wLjYsMi44LTEuNgoJCWwxMC41LDIuMmMtMC4xLDAuMS0wLjIsMC4zLTAuMiwwLjRjMCwwLjUsMC41LDEuMSwxLjMsMS4yYzAuNywwLjEsMS4zLTAuNCwxLjMtMC45YzAtMC4xLDAtMC4xLDAtMC4yQzQxLjEsMjUuNiw0NywyNyw0NywyN3oiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNi41LDIyLjRjMC4yLTAuOS0wLjItMiwyLjUtMS4ybDMuNCwwLjdjMC4zLTAuNywxLjQtMS4yLDIuOC0xLjFjMS41LDAuMSwyLjgsMS4xLDIuOCwyYzAsMC4xLDAsMC4yLDAsMC4yCgkJbDEwLjUsMi4ybDAsMGMwLjItMC4zLDAuNy0wLjQsMS4zLTAuNGMwLjcsMC4xLDEuMywwLjQsMS4zLDAuOGw1LjgsMS4zTDMyLDE3Yy0xLjMtMC45LTMuMS0xLjMtNC44LTEuMWMtMS42LDAuMi0zLjYsMC41LTUuMSwxLjIKCQljLTEuOCwwLjYtMy40LDEuOC00LjUsMi43Yy0wLjEsMC4xLTAuNCwwLjQtMC42LDAuOEMxNi42LDIxLjEsMTYuNiwyMS43LDE2LjUsMjIuNHoiLz4KCTxnIGNsYXNzPSJzdDIiPgoJCTxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0yOC4xLDE2LjVjMS4yLDAsMi4zLDAuNCwzLjMsMWwxNC43LDkuOEw0NS45LDM3bC0yNy42LTQuOWMtMC42LTAuMS0xLjItMC42LTEuMi0xLjIKCQkJYzAuMS0xLjYsMC4xLTMuMywwLjItNC45YzAtMS4yLDAuMS0yLjQsMC4xLTMuNmMwLTAuMSwwLTAuMiwwLTAuM2wwLDBjMC0wLjQsMC4xLTAuOSwwLjItMS4zYzAuMS0wLjMsMC40LTAuNSwwLjQtMC42CgkJCWMxLTAuOCwyLjYtMS45LDQuMy0yLjVjMS4yLTAuNCwyLjktMC44LDQuOS0xLjFDMjcuNSwxNi41LDI3LjgsMTYuNSwyOC4xLDE2LjUgTTI4LjEsMTUuOGMtMC40LDAtMC42LDAtMSwwLjEKCQkJYy0xLjYsMC4yLTMuNiwwLjUtNS4xLDEuMmMtMS44LDAuNi0zLjQsMS44LTQuNSwyLjdjLTAuMSwwLjEtMC40LDAuNC0wLjYsMC44Yy0wLjIsMC40LTAuMywwLjktMC4zLDEuNGMwLDAuMSwwLDAuMiwwLDAuMwoJCQljLTAuMSwyLjktMC4xLDUuOC0wLjMsOC42YzAsMC44LDAuNywxLjYsMS44LDEuOGwyOC41LDUuMUw0NywyN0wzMS45LDE3QzMwLjgsMTYuMywyOS40LDE1LjgsMjguMSwxNS44TDI4LjEsMTUuOHoiLz4KCTwvZz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjRfIiBjeD0iLTM5OTEuOTUyOSIgY3k9IjI0MDEuOTY1MSIgcj0iNi44Njg3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QxMyIgZD0iTTIyLjcsMjkuNGMwLDAuOS0xLDEuNi0yLjIsMS40Yy0xLjItMC4yLTIuMS0wLjktMi4xLTEuOWMwLTEsMS0xLjYsMi4yLTEuNAoJCVMyMi43LDI4LjUsMjIuNywyOS40eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJTVkdJRF8zXyIgY3g9Ii00MDExLjE4MTYiIGN5PSIyMzcwLjQ3NTMiIHI9IjE0LjEzMjEiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzAzNyAtNC4zNDYyMDhlLTAzIC03LjU4NzcyMWUtMDMgMC4yNDg0IC0xMTcyLjY1NDggLTU4NS4xMjkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QxNCIgZD0iTTIyLjQsMjIuMmMwLDEuMiwxLjIsMi4zLDIuNywyLjRjMS40LDAuMSwyLjYtMC42LDIuOC0xLjZoLTAuMWgtMC4ybDAuMywwLjFjMC0wLjEsMC0wLjIsMC0wLjIKCQljMC0xLTEuMy0xLjktMi44LTJjLTEuMy0wLjEtMi40LDAuNC0yLjgsMS4xQzIyLjUsMjIsMjIuNCwyMi4xLDIyLjQsMjIuMnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjZfIiBjeD0iLTE3NjcuOTQ2NSIgY3k9IjQ1OTMuOTUyMSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMjI0OCAwLjE2ODUgMC4xNjczIDAuMTQ5NSAtMTEzNy40NjU2IC0zNzEuNjE3OCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzVfIiBjbGFzcz0ic3QxNSIgZD0iTTI5LjEsMTguNGMwLDAuNC0wLjYsMC43LTEuNCwwLjdjLTAuNy0wLjEtMS4zLTAuNC0xLjMtMC45YzAtMC40LDAuNi0wLjcsMS40LTAuNwoJCUMyOC40LDE3LjYsMjkuMSwxNy45LDI5LjEsMTguNHoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjdfIiBjeD0iLTQwMjYuMzA3MSIgY3k9IjIzOTguOTI5MiIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC4zMDM3IC00LjM0NjIwOGUtMDMgLTcuNTg3NzIxZS0wMyAwLjI0ODQgLTExNzIuNjU0OCAtNTg1LjEyOSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF80XyIgY2xhc3M9InN0MTYiIGQ9Ik0zNC42LDI5LjNjLTAuMSwxLjUtMS43LDIuNy0zLjcsMi41Yy0yLTAuMi0zLjYtMS42LTMuNS0zLjFjMC4xLTEuNSwxLjctMi43LDMuNy0yLjUKCQlDMzMsMjYuMywzNC42LDI3LjcsMzQuNiwyOS4zeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8zMV8iIGN4PSItNDAyMy4xMTU3IiBjeT0iMjM2NS42ODMxIiByPSIxMC45MTE4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNzUwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Q5OTkxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNDA5OCIgc3R5bGU9InN0b3AtY29sb3I6I0Q1OTYxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNzM1IiBzdHlsZT0ic3RvcC1jb2xvcjojQzk4RDBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTgyMDciLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfM18iIGNsYXNzPSJzdDE3IiBkPSJNMzUuNCwyMS4zYzAsMC42LTEsMS0yLjEsMC45Yy0xLjEtMC4xLTIuMS0wLjYtMi4xLTEuM3MxLTEsMi4xLTAuOQoJCUMzNC41LDIwLjIsMzUuNCwyMC43LDM1LjQsMjEuM3oiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzNfIiBjeD0iLTQwNDkuMDU3OSIgY3k9IjI0MTQuMjg1MiIgcj0iNS45Mjg1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QxOCIgZD0iTTM5LjYsMzIuN2MwLDAuOC0wLjksMS4zLTEuOSwxLjNjLTEtMC4xLTEuOC0wLjgtMS44LTEuNnMwLjktMS4zLDEuOS0xLjMKCQlDMzguOSwzMS4yLDM5LjcsMzEuOSwzOS42LDMyLjd6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzRfIiBjeD0iLTQwNTMuNTYzIiBjeT0iMjM4NC41NTI1IiByPSI4Ljg0MDgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzAzNyAtNC4zNDYyMDhlLTAzIC03LjU4NzcyMWUtMDMgMC4yNDg0IC0xMTcyLjY1NDggLTU4NS4xMjkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC42MDAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQzc3MzE1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zNzc0IiBzdHlsZT0ic3RvcC1jb2xvcjojQzM3MTEzIi8+CgkJPHN0b3AgIG9mZnNldD0iMC42NzE4IiBzdHlsZT0ic3RvcC1jb2xvcjojQjc2QzBGIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45NjY5IiBzdHlsZT0ic3RvcC1jb2xvcjojQTM2NDA3Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBMTYzMDYiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QxOSIgZD0iTTM4LjQsMjUuNmMwLDAuNSwwLjUsMS4xLDEuMywxLjJjMC43LDAuMSwxLjMtMC40LDEuMy0wLjljMC0wLjEsMC0wLjEsMC0wLjJsMCwwYzAtMC40LTAuNi0wLjgtMS4zLTAuOAoJCWMtMC41LTAuMS0xLDAuMS0xLjMsMC40bDAsMEMzOC40LDI1LjMsMzguNCwyNS41LDM4LjQsMjUuNnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzRfIiBjeD0iLTQwNjUuOTc0NiIgY3k9IjI0MDMuNDE4MiIgcj0iNC4zOTg1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzFfIiBjbGFzcz0ic3QyMCIgZD0iTTQ0LjMsMjkuOWMwLDAuNC0wLjQsMC43LTEsMC43cy0xLTAuNC0xLTAuOWMwLTAuNCwwLjQtMC43LDEtMC43CgkJQzQzLjgsMjkuMSw0NC4zLDI5LjQsNDQuMywyOS45eiIvPgo8L2c+CjxnIGlkPSJMYXllcl8xXzNfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzZfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0yNDIyLjUxNzMiIHkxPSIxMDA1LjY1NDYiIHgyPSItMjQyMi41MTczIiB5Mj0iMTAxNC43NjQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjYyODcgLTMuOTI5MDMwZS0wMiAtNS4wNDc5OThlLTAyIDAuODA3NyAtMTQ0MC42ODE1IC04OTIuMDUxMykiPgoJCTxzdG9wICBvZmZzZXQ9IjEuOTcwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Y3QkMwMCIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQ0Q3M0UiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTRfIiBjbGFzcz0ic3QyMSIgZD0iTTQwLjYsMTcuMmwtMC42LDcuMmwtMTYuNy0zLjhjLTAuNi0wLjItMS4xLTAuNy0xLTEuM2MwLjItMS45LDAuMy0zLjksMC40LTUuOAoJCWMwLTAuNCwwLjEtMC44LDAuNS0wLjljMC40LTAuMSwwLjcsMC4xLDEsMC4ybDIsMC41YzAsMC4xLDAsMC4yLDAsMC4yYy0wLjEsMC44LDAuNiwxLjUsMS41LDEuNmMwLjgsMC4xLDEuNS0wLjQsMS43LTEuMWw2LjIsMS41CgkJYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAuM2MwLDAuNCwwLjMsMC43LDAuNywwLjhzMC44LTAuMiwwLjktMC41di0wLjFDMzcuMiwxNi4yLDQwLjYsMTcuMiw0MC42LDE3LjJ6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjIuOCwxMy43YzAuMi0wLjUsMC0xLjMsMS41LTAuN2wyLDAuNWMwLjItMC40LDAuOS0wLjgsMS43LTAuN2MwLjksMC4xLDEuNiwwLjcsMS41LDEuM2MwLDAuMSwwLDAuMSwwLDAuMgoJCWw2LjIsMS41bDAsMGMwLjItMC4yLDAuNC0wLjMsMC43LTAuMmMwLjQsMC4xLDAuNywwLjMsMC43LDAuNWwzLjQsMUwzMiwxMC4zYy0wLjgtMC42LTEuOC0wLjktMi44LTAuOGMtMSwwLjItMi4yLDAuNC0zLjEsMC43CgkJYy0xLjEsMC40LTIuMSwxLjItMi44LDEuN2MwLDAtMC4zLDAuMy0wLjQsMC41QzIyLjksMTIuOCwyMi44LDEzLjIsMjIuOCwxMy43eiIvPgoJPGcgY2xhc3M9InN0MiI+CgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTI5LjgsOS45YzAuNywwLDEuMywwLjMsMS45LDAuN2w4LjQsNi43bC0wLjUsNi41bC0xNi4xLTMuN2MtMC40LTAuMS0wLjYtMC40LTAuNi0wLjgKCQkJYzAuMS0xLjEsMC4yLTIuMiwwLjMtMy4zYzAuMS0wLjgsMC4xLTEuNiwwLjItMi40YzAtMC4xLDAtMC4xLDAtMC4ybDAsMGMwLTAuMywwLjEtMC42LDAuMi0wLjhjMC4xLTAuMiwwLjMtMC40LDAuMy0wLjQKCQkJYzAuNi0wLjUsMS42LTEuMywyLjYtMS42YzAuNy0wLjMsMS43LTAuNSwzLTAuNkMyOS40LDkuOSwyOS42LDkuOSwyOS44LDkuOSBNMjkuOSw5LjVjLTAuMiwwLTAuNCwwLTAuNiwwYy0xLDAuMi0yLjIsMC40LTMuMSwwLjcKCQkJYy0xLjEsMC40LTIuMSwxLjItMi44LDEuN2MwLDAtMC4zLDAuMy0wLjQsMC41Yy0wLjEsMC4zLTAuMiwwLjUtMC4yLDFjMCwwLjEsMCwwLjIsMCwwLjJjLTAuMiwxLjktMC4zLDMuOS0wLjQsNS44CgkJCWMtMC4xLDAuNSwwLjQsMS4xLDEsMS4zbDE2LjYsMy45bDAuNi03LjNMMzIsMTAuM0MzMS40LDkuOCwzMC42LDkuNiwyOS45LDkuNUwyOS45LDkuNXoiLz4KCTwvZz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzdfIiBjeD0iLTYzMDAuMDcxMyIgY3k9IjMxODQuNDk5MyIgcj0iNi44Njg3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjE3OTYgLTYuODIyNTU0ZS0wMyAtMS4zOTA2NjJlLTAyIDAuMTY1NiAtMTA2MS43Nzg2IC01NTIuMjIzMykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8xM18iIGNsYXNzPSJzdDIyIiBkPSJNMjYuMSwxOC41Yy0wLjEsMC42LTAuNiwxLjEtMS4zLDFjLTAuNy0wLjEtMS4yLTAuNi0xLjItMS4zYzAuMS0wLjYsMC42LTEuMSwxLjMtMQoJCUMyNS43LDE3LjMsMjYuMiwxNy45LDI2LjEsMTguNXoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iU1ZHSURfNV8iIGN4PSItNjMxOS4zMDAzIiBjeT0iMzE1My4wMDk1IiByPSIxNC4xMzIxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjE3OTYgLTYuODIyNTU0ZS0wMyAtMS4zOTA2NjJlLTAyIDAuMTY1NiAtMTA2MS43Nzg2IC01NTIuMjIzMykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDIzIiBkPSJNMjYuMywxMy43Yy0wLjEsMC44LDAuNiwxLjUsMS41LDEuNmMwLjgsMC4xLDEuNS0wLjQsMS43LTEuMWgtMC4xaC0wLjFoMC4yYzAtMC4xLDAtMC4xLDAtMC4yCgkJYzAuMS0wLjYtMC42LTEuMy0xLjUtMS4zYy0wLjgtMC4xLTEuNCwwLjItMS43LDAuN0MyNi4zLDEzLjUsMjYuMywxMy42LDI2LjMsMTMuN3oiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzhfIiBjeD0iLTI4OTUuMTQ2NyIgY3k9IjcyMzAuOTM4NSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTM5NSAwLjEwOTUgOS4zMzg2MjdlLTAyIDAuMTAxOSAtMTA0OS4wOTQyIC00MDkuMzQ3OCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzEyXyIgY2xhc3M9InN0MjQiIGQ9Ik0zMC4zLDExLjJjMCwwLjMtMC40LDAuNC0wLjksMC40cy0wLjgtMC40LTAuOC0wLjZzMC40LTAuNCwwLjktMC40CgkJQzMwLDEwLjYsMzAuMywxMC45LDMwLjMsMTEuMnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzlfIiBjeD0iLTYzMzQuNDI1OCIgY3k9IjMxODEuNDYzNCIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC4xNzk2IC02LjgyMjU1NGUtMDMgLTEuMzkwNjYyZS0wMiAwLjE2NTYgLTEwNjEuNzc4NiAtNTUyLjIyMzMpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTFfIiBjbGFzcz0ic3QyNSIgZD0iTTMzLjIsMTguNWMtMC4xLDEuMS0xLjEsMS44LTIuMiwxLjZzLTIuMS0xLjEtMi0yLjJjMC4xLTEuMSwxLjEtMS44LDIuMi0xLjYKCQlDMzIuNCwxNi42LDMzLjMsMTcuNSwzMy4yLDE4LjV6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlhNTElEXzQwXyIgY3g9Ii02MzMxLjIzNDQiIGN5PSIzMTQ4LjIxNzMiIHI9IjEwLjkxMTgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNzUwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Q5OTkxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNDA5OCIgc3R5bGU9InN0b3AtY29sb3I6I0Q1OTYxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNzM1IiBzdHlsZT0ic3RvcC1jb2xvcjojQzk4RDBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTgyMDciLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTBfIiBjbGFzcz0ic3QyNiIgZD0iTTMzLjksMTMuMmMwLDAuNC0wLjYsMC42LTEuMywwLjVjLTAuNi0wLjEtMS4yLTAuNC0xLjItMC45YzAtMC40LDAuNi0wLjYsMS4zLTAuNQoJCVMzMy45LDEyLjksMzMuOSwxMy4yeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF80MV8iIGN4PSItNjM1Ny4xNzYzIiBjeT0iMzE5Ni44MTkzIiByPSI1LjkyODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzlfIiBjbGFzcz0ic3QyNyIgZD0iTTM2LDIwLjljMCwwLjUtMC41LDAuOS0xLjIsMC44Yy0wLjYtMC4xLTEuMS0wLjUtMS0xLjFjMC0wLjUsMC41LTAuOSwxLjItMC44CgkJQzM1LjYsMTkuOSwzNi4xLDIwLjMsMzYsMjAuOXoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iU1ZHSURfNl8iIGN4PSItNjM2MS42ODE2IiBjeT0iMzE2Ny4wODY3IiByPSI4Ljg0MDgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNjAwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0M3NzMxNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzc3NCIgc3R5bGU9InN0b3AtY29sb3I6I0MzNzExMyIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNjcxOCIgc3R5bGU9InN0b3AtY29sb3I6I0I3NkMwRiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTY2OSIgc3R5bGU9InN0b3AtY29sb3I6I0EzNjQwNyIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQTE2MzA2Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0zNS41LDE2LjFjMCwwLjQsMC4zLDAuNywwLjcsMC44YzAuNCwwLjEsMC44LTAuMiwwLjktMC41di0wLjFsMCwwYzAtMC4zLTAuNC0wLjUtMC43LTAuNQoJCWMtMC40LDAtMC42LDAtMC43LDAuMmwwLDBDMzUuNiwxNS45LDM1LjUsMTYsMzUuNSwxNi4xeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF80Ml8iIGN4PSItNjM3NC4wOTMzIiBjeT0iMzE4NS45NTI0IiByPSI0LjM5ODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzhfIiBjbGFzcz0ic3QyOSIgZD0iTTM4LjksMTkuMWMwLDAuMy0wLjMsMC40LTAuNiwwLjRjLTAuNCwwLTAuNS0wLjMtMC41LTAuNnMwLjMtMC40LDAuNi0wLjQKCQlDMzguNywxOC41LDM4LjksMTguOCwzOC45LDE5LjF6Ii8+CjwvZz4KPC9zdmc+Cg==',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'token.cheddar.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Pulse',\n symbol: 'PULSE',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNi41NTAzNSAxOS4xMjM5TDkuMTcxNjYgMTQuOTQ5MkM5LjMyNzMxIDE0LjcwMTMgOS41OTk0OCAxNC41NTA4IDkuODkyMiAxNC41NTA4SDE4LjQxNEMxOS41NDEyIDE0LjU1MDggMjAuNTYxNCAxMy44ODM2IDIxLjAxMzMgMTIuODUwOUMyMS4zNjQ3IDEyLjA0NzYgMjAuNzc2MSAxMS4xNDc3IDE5Ljg5OTMgMTEuMTQ3N0gxMS45NzQyTDExLjU0ODggMTEuMjU0TDEzLjY0NjEgNy40NDA3OEMxMy43OTU2IDcuMTY4OTEgMTQuMDgxMyA3IDE0LjM5MTUgN0gyMi4wNzU0QzI1LjA1NDMgNyAyNy4xMTA3IDkuOTgyNzkgMjYuMDUxMyAxMi43NjdMMjUuODYzMSAxMy4yNjEzQzI0LjU0NDQgMTYuNzI2OSAyMS4yMjE4IDE5LjAxNzYgMTcuNTEzOCAxOS4wMTc2SDYuOTc1NzVMNi41NTAzNSAxOS4xMjM5Wk04LjM2ODg0IDE5Ljk3NDdDNy4wNTA0MiAxOS45NzQ3IDUuODM2NTUgMjAuNjkyNSA1LjIwMTE4IDIxLjg0NzdDNC42MTIyMyAyMi45MTg1IDUuMzg2OTQgMjQuMjI4NyA2LjYwOTAzIDI0LjIyODdIMTAuODA0NEwxMy40NjMxIDE5Ljg2ODRMMTMuMTQ0MSAxOS45NzQ3SDguMzY4ODRaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMjBfMykiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8yMF8zIiB4MT0iMTguMDI2NiIgeTE9IjUuNTI5MjYiIHgyPSIyLjI2ODYxIiB5Mj0iMzAuMTExNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjREQ1OUZGIi8+CjxzdG9wIG9mZnNldD0iMC40NzM5NTgiIHN0b3AtY29sb3I9IiM1MDY5RkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAyNUZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==',\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '52a047ee205701895ee06a375492490ec9c597ce.factory.bridge.near',\n },\n {\n decimals: 18,\n icon:\n 'data:image/png;base64,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',\n name: 'Ether',\n reference: null,\n reference_hash: null,\n spec: 'ft-1.0.0',\n symbol: 'ETH',\n id: 'aurora',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Pixeltoken',\n symbol: 'PXT',\n icon:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAANdJREFUWIXll70RwjAMhWUuNGwARVgEmuyQJRgo7AA7uGESGioaGlpTcK+w7nR+gcIyfJ1zys/7dHKSsO53SSqyqHlzEZFu7gm364Wq22z3VF07BpB8CANXn971JRP+Dejk8fSgLoz6kgm/Btjk58MqW4/TM6svmfBrQIOkSAiO92W2Hmc+gF8D6BV6h17qhOxUWPg18C16OizaN2AlxXTEFEWkxZ2QRe8DoJQctG8AIDH4vS8iFjY5aM8Au8Ox+DdgvRUBO+8W/g0AbUIf/5TqBsLf/x2/ADJHSOenTxC2AAAAAElFTkSuQmCC',\n reference: '',\n reference_hash: '',\n decimals: 6,\n id: 'pixeltoken.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Debio',\n symbol: 'DBIO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIxOTAgOTcgNDIwIDQyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgODAwIDgwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48c3R5bGU+LnN0MHtmaWxsOiMzNjM2MzZ9LnN0M3tmaWxsOiNmZjU2ZTB9PC9zdHlsZT48L2RlZnM+PGNpcmNsZSBjbGFzcz0ic3QzIiBjeD0iNDAwIiBjeT0iMzA3LjM5IiByPSIyMDguNTgiLz48cGF0aCBkPSJNNDczLjk5IDIxMS4zczIuMzQgNTYuMjUtNzcuMzQgOTguNDMtNzAuMzEgOTMuNzQtNzAuMzEgOTMuNzQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNlNmU2ZTY7c3Ryb2tlLXdpZHRoOjM3LjQ5NzU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMzI2LjAxIDIxMS4zcy0yLjM0IDU2LjI1IDc3LjM0IDk4LjQzIDcwLjMxIDkzLjc0IDcwLjMxIDkzLjc0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS13aWR0aDozNy40OTc1O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwIi8+PGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNDAwIiBjeT0iMjE2LjQyIiByPSIyMC40OSIvPjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjQwMCIgY3k9IjM5OC4zNiIgcj0iMjAuNDkiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMzYuMzQyIDY1OC4wNzUpIiBjbGFzcz0ic3QzIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlO2ZvbnQtc2l6ZToxMTIuNDkyNXB4O2ZvbnQtZmFtaWx5OidBcnRlZ3JhU2Fucy1TZW1pQm9sZCciPkRlQmlvPC90ZXh0Pjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'dbio.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Aurora',\n symbol: 'AURORA',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 288 288' style='enable-background:new 0 0 288 288;' xml:space='preserve'%3E %3Cstyle type='text/css'%3E .st0%7Bfill:%2370D44B;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E %3Cpath class='st0' d='M144,0L144,0c79.5,0,144,64.5,144,144v0c0,79.5-64.5,144-144,144h0C64.5,288,0,223.5,0,144v0 C0,64.5,64.5,0,144,0z'/%3E %3Cpath class='st1' d='M144,58.8c7.6,0,14.5,4.3,17.9,11.1l56.2,112.5c4.9,9.9,0.9,21.9-9,26.8c-2.8,1.4-5.8,2.1-8.9,2.1H87.8 c-11,0-20-9-20-20c0-3.1,0.7-6.2,2.1-8.9l56.2-112.5C129.5,63,136.4,58.7,144,58.8 M144,45c-12.8,0-24.5,7.2-30.2,18.7L57.6,176.2 c-8.3,16.7-1.6,36.9,15.1,45.3c4.7,2.3,9.9,3.6,15.1,3.6h112.5c18.6,0,33.8-15.1,33.8-33.7c0-5.2-1.2-10.4-3.6-15.1L174.2,63.7 C168.5,52.2,156.8,45,144,45z'/%3E %3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'aaaaaa20d9e0e2461697782ef11675f668207961.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Meta Token',\n symbol: '$META',\n icon:\n \"data:image/svg+xml,%3csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='96' height='96' rx='48' fill='white'/%3e%3cpath d='M29.2241 28.7456C28.396 27.9423 27.0094 28.5289 27.0091 29.6825L27 66.6773C26.9997 67.8501 28.4257 68.4286 29.2426 67.5872L48.6529 47.5943L29.2241 28.7456Z' fill='%23231B51'/%3e%3cpath d='M66.7759 28.7456C67.604 27.9423 68.9906 28.5289 68.9909 29.6825L69 66.6773C69.0003 67.8501 67.5743 68.4286 66.7574 67.5872L47.3471 47.5943L66.7759 28.7456Z' fill='%23231B51'/%3e%3c/svg%3e\",\n reference: 'https://metapool.app',\n reference_hash: null,\n decimals: 24,\n id: 'meta-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Potato 🥔',\n symbol: 'POTATO',\n icon:\n 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAcAAACAwEBAQEAAAAAAAAAAAAHCAAGCQUEAwL/xAA9EAABAgUDAgMFBQYFBQAAAAABAgMABAUGEQcSITFBCBNhFCJRcYEJMpGhwRYjQ1JTYhUkY3KCkqKx0fD/xAAbAQEBAQADAQEAAAAAAAAAAAAGBQQAAgcDAf/EAC0RAAEDAwIDBwQDAAAAAAAAAAEAAgMEBREhMRJxsQYiQVFhodETFIGRMlLw/9oADAMBAAIRAxEAPwDVOPBXa9RrYpMzXbgqcvT6fKI3vTD6whCBnHJPxJAA7k4j4XVdFEsu3p+6bjnkSlOpzKn33VdgOwHck4AA5JIEZceILxKXRrdcqmlzLkjQWHtkhTkL91AJwFrx95w9z26DiMFdXsoWcTtT5LbRUT6x+Bt4lMjqZ47pqaqDtE0go6FMoO3/ABSebJUv4lDXYfAq5/tED5OsGvN0PpmZ2/aw1nB2SbnsyR9GtsCrT6hNtFBeG9Z56QwFp0BHkIJbGTziPNbp2grJn4Y4gemiaQW+ko4/4gn1XytrV3WymOEftTUnQgkf5xaZgKGevvgmC3aHibq0q43K35R0vMqODNyadq0+pRnB+hHyMVn9mGvL3ITyRHGrNvrlmlPlrcQMgAZjJBeLnRkPEhx6nI/RXxkhoqrulg6H9hNxb1yUO6qairUCoszksvjc2eUn+VQ6pPoeY6cIxbN0XJaNQTXrUqLksr+KwsHY4AeULQevOR6djDLaa6825e3l0qrBNJrJwnyXFfunlf6av0PPwzD20dpqe4Yim7knseXwfdH6+yy0uXxd5vuOfz0RRiRIkJ1EUiRIkcXEg32j+sM41UadpVSptSZaUZTUKihJx5jy8+Uk/wC1OVY6e+D2EJxZSQ4/57+FLcOcH5wVvH3MODxI3M2snA9iCc9h7IzAiteY2N7m07l549IBX6Rz3u59E9s0DWwNx5Z/aYWyfIC0FCQcd/SDda9Yl1PNygeTvACto6gdoWi1ayZdafMzjHvesGK0a9LqcamSU7sDHygQ/LXZKpVEPEEf5Qh5IBIziPs/JsTKfJWgE44J7xWaLX2HWkqCvePeLC1PtutjaoZ+eMRSjmY9mCoDonscqrWqBLNqUlDQOevHSKJWqWiVJWvCNp91Y4wYLM8lD5G4jd1Hr/7jgVKlJmUlKkBQJx07RCrI3MdxRbK1STbB66mk3iKnaNMtW3fcwubkMhtqeOVOsdhvPVSfXqPXoGcl5hibYbmpV5DrLqQttxCgpKkkZBBHUQjlStIomS60kJCx73HPHT/zBC0e1VndPp5q2LmeUugzLm1t1XJk1nuP7Ceo7dR3yy7M9q3NIpK46bBx8PQ+nTltJvVkjkBnpBr4jz5evXmmliR+W3EOoS42sKQsBSVA5BB7x+o9NQtZmfaWWBMUrVGTvRpsmXr8ihW4D+MyA2of9Pln6wqlvzyZZaAOB3OY2K8SWicjrpppO2uoNN1WXzNUt9fGyYSD7pPZKgSk/MHtGN9z0GtWLck5QK5IuykzKPKaeadSUqQpJwQR9IJXmjPGSBodflM7HWtdGGE6t0+ETaLVm1EbFY3CL9b9wqldoDgwcAAmARSK2kBOxQ7DB7Ra5Kv7AHEqICfePxgTNTa4S3gD25CZW371WlCUqdOO6R8YuzV8MSEmqemlLLbeCvYNxwTjoPnC32zXlOIBW5tJGR24+EE62K22paf3wyMd+nETpIzCdFhlgGdUe5B/25CXSjhSQQon8o6XsaVpUSk89sRTrbrSHNqQ4B+oi9Sc2y+BhSTn1jTA1s41UmYujOi56qOl9KdyMLx2GRFauS1y4ytKW+SODiCahlopBbPIj4Tsg3NMKKwncOwEflRa8jiZuukdcWu12Xk0C1NmpKZb03up9WelLfcPb+iT+aSfUfAQwEJhe0g6w77dTni3MyTgcQtBwpCk8jnsehhltHdQ29R7Nl6s8UpqEsfZp5AwMOpA94DsFAg/UjtDfsjeH1Ef2VQe83Y+Y8vx05KRe6ENxVxDQ7+h8/z15q8wr3jC8ItN1rpbt5WlLNMXZJs4W2lISmooT0So/wBQDgKPUAJPYhoYkMJoWzs4HqFBM+neHsOqwIuGi1qzarMU2fl3pd+WcU2424kpUhSSQUkHoQRzHToddUrAUo5/SH++0K8OErVaWrWK2JAJeb2tVlptIAPZExgDr0Sr/ifiYzglku06dLSgQAcEQOuVAGkgjUe6e2q4fXYDnTojBS6sAjd5nHz4xF8tisKacC9/JPIBgO0ad3NpSgnBxk/OLjSKh5DiVKcBB5BzBeSHQhXCQ8apiqDcqm9qku8n4HHMXu3LxX56GSMhffPSF6olWS4AC/nP3jnrF4o1bRJlBS4CfnEwAwu0WWSBrgmeoNYZeQkKUCVDuesdxxLb7e5B/CAfbF3pccCUufnBHkrkBZSC4Mnjr1ipFUhzMPUCopXNflq5F2UKUK5ualkKQ5NEF0FZwSO4HbrHl8NFamLf1QnLX3EytYlVKCT2cbBUk/huH1j3XDVGHZZw7xlPQ94qGh815viCo6EqyfKmSfl5DkdrTltxjfH/AGHucH2X0nBdRyMf/U+2ydOJEiR62gy8tUpkhWqbNUiqSqJmTnWVy77KxlLjawUqSfQgkRj14tfD/UNE9RpqnNtuOUidJmaZMlPDjBP3Sf5k/dV9D0IjY+Bvr1ojbeu1iTVqVpttqcQFO02e2ZVKv44PxKT0UnuPUAjFXUv3LNNwqFurTRy5P8Tv8rFqh1Myyg2pRz9eIu0jPMLZLvmgJbG4/qfyzFa1Q06uXS28J+1bkp7krO054tuoPQjqFJPdJBBBHUGPFQ6upQ8l1eUqGMHpAaqpC08QXolLUMlaMIn0+rOJSh5pStigFAjvFnkKzM7AS8MYxgfpA6l6mllpHlDcn4DpjHSOvLVxsYUlwEJGEjOT9YlOiydlrJBCLluXC8wtKlqIyeOeYupvaYclHGWZravGEneRj8CD+EL9LXO42sAPAkfEx1F3gplKQFErPGOekZ3UxcdFkeADkoxzd7TMvSEomZ9bz4Tt8wnlRx1P/wB2gg+CijzV0ak1u939ypajyvs7ayOC89xgHpwlKsj+4QrDU9WbqqMpQaFLPztRn3Ey8uwyncpa1HAAEabeHzSdGjmmdPtV9aHKm6TOVN1Bylc0sDcEnulICUg9wnPeFXZ62H6omeNuqNXqqEURjbu7oiVEiRIcogpEiRI4uIHeJ/ww234gbaK0JakbnkGz7BPlPCxyfJdwMlBJyD1SeRwSDkvfmml3aX3LNW7c9HmJCdlV7XGnU8+hBHCknqCMgxuzFE1V0S041mpYpt9W+1NLaSUy8437kzL5/kcHOM87TlJ7iJ1ZQCo7zND1VWgubqQ8LtW9FiZLVSYSSlSiQeAOmY9iKw6lJAVjPTmHZ1B+zNuBibemtObvkZ6VKiW5aogsPIT2G9IKVH1wn5QMX/s/fEPLPeS1asm+gHhbdUlwn/uUD+UH32yRp1Yf9ySeK8QPGeMflLxL1Wa90pJB7+96xa7bpFxXZVJajUanzE/PTiw2zLsIK1rUemABDMaffZv6jT8427fNbpdCkwQXEML9qfUM8gAYQPmVH5GHU0i0A000WkizZ1FBnnEbH6lNEOTTo7grwNqeB7qQBwOI10tpc45c3A9fhYa29RtGGHiP+8UN/Ct4VZPSCTReF4tszd3TTWEpACm6agjlCD3cPRSx8hxkqY+JEhFFE2FoYwaItNM+d5e86r//2Q==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'v1.dacha-finance.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Flux Token',\n symbol: 'FLX',\n icon:\n \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='140px' height='140px' viewBox='0 0 140 140' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3EFlux Logo New%3C/title%3E%3Cdefs%3E%3CradialGradient cx='50%25' cy='0%25' fx='50%25' fy='0%25' r='248.533062%25' gradientTransform='translate(0.500000,0.000000),scale(1.000000,0.393939),rotate(90.000000),translate(-0.500000,-0.000000)' id='radialGradient-1'%3E%3Cstop stop-color='%23FE84FC' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%232ED1FF' offset='100%25'%3E%3C/stop%3E%3C/radialGradient%3E%3C/defs%3E%3Cg id='logos' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='Group' transform='translate(-143.000000, -251.000000)'%3E%3Cg id='Group-2' transform='translate(0.000000, 251.000000)'%3E%3Cg id='Flux-Logo' transform='translate(143.000000, 0.000000)'%3E%3Cg id='Flux-Logo-New' transform='translate(70.000000, 70.000000) rotate(90.000000) translate(-70.000000, -70.000000) '%3E%3Ccircle id='Oval' fill='%23FFFFFF' cx='70' cy='70' r='70'%3E%3C/circle%3E%3Crect id='Rectangle' fill='%230F0E25' transform='translate(70.000000, 83.000000) rotate(90.000000) translate(-70.000000, -83.000000) ' x='57' y='50' width='26' height='66' rx='13'%3E%3C/rect%3E%3Cpath d='M50,30 C57.1797017,30 63,35.8202983 63,43 L63,96 L63,96 L50,96 C42.8202983,96 37,90.1797017 37,83 L37,43 C37,35.8202983 42.8202983,30 50,30 Z' id='Rectangle' fill='%230F0E25'%3E%3C/path%3E%3Cpath d='M63,44 L76,44 C83.1797017,44 89,49.8202983 89,57 L89,97 C89,104.179702 83.1797017,110 76,110 C68.8202983,110 63,104.179702 63,97 L63,44 L63,44 Z' id='Rectangle' fill='url(%23radialGradient-1)'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '3ea8ea4237344c9931214796d9417af1a1180770.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'nUSDO',\n symbol: 'nUSDO',\n icon:\n 'data:image/png;base64,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',\n reference: '',\n reference_hash: '',\n decimals: 8,\n id: 'v3.oin_finance.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'oinfinance',\n symbol: 'OIN',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 974.66 974.66'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bisolation:isolate;%7D.cls-2%7Bfill:%235a8dff;%7D.cls-3%7Bfill:%23fff;%7D.cls-4,.cls-5%7Bfill:%231b57f6;%7D.cls-5%7Bmix-blend-mode:multiply;%7D%3C/style%3E%3C/defs%3E%3Cg class='cls-1'%3E%3Cg id='图层_1' data-name='图层 1'%3E%3Ccircle class='cls-2' cx='487.33' cy='484.76' r='473.82'/%3E%3Ccircle class='cls-3' cx='487.33' cy='484.76' r='358.99'/%3E%3Cpath class='cls-4' d='M487.33,98.08c-213.55,0-386.67,173.12-386.67,386.68S273.78,871.43,487.33,871.43,874,698.31,874,484.76,700.88,98.08,487.33,98.08ZM368.59,297.83a9,9,0,0,1,12.71-.14,287,287,0,0,0,137.53,75,110.56,110.56,0,0,1,51.78,28.2,9,9,0,0,1-12.49,12.93,92.54,92.54,0,0,0-43.3-23.61,304.9,304.9,0,0,1-146.09-79.66A9,9,0,0,1,368.59,297.83Zm216.7,197.36a9,9,0,0,1,17.93,1.3c-1.86,25.6-15.92,49.6-38.58,65.86-18.31,13.13-40.08,19.87-63.28,19.87a130.41,130.41,0,0,1-32.7-4.3,9,9,0,0,1,4.52-17.4c29.91,7.76,58.67,3.23,81-12.78C572.48,534.61,583.82,515.45,585.29,495.19Zm-9.7-47.57a15.39,15.39,0,1,1,12.8,17.6A15.39,15.39,0,0,1,575.59,447.62Zm-244-118.07a9,9,0,0,1,12.71,0,335.48,335.48,0,0,0,163.36,90.53c30.07,6.9,50.7,33.19,48,61.16-1.64,17.07-9.08,30.42-21.52,38.59-8.23,5.41-18.1,8.14-28.9,8.14a76.36,76.36,0,0,1-23.39-3.91,9,9,0,1,1,5.52-17.1c14.54,4.69,27.64,3.93,36.9-2.15,7.73-5.08,12.39-13.82,13.49-25.29,2-20.88-15.76-37.71-34.1-41.92a353.42,353.42,0,0,1-172.1-95.35A9,9,0,0,1,331.59,329.55Zm-30,41.34a9,9,0,0,1,12.71-.23c36.29,35,81.18,62.68,133.43,82.22a9,9,0,0,1-3.15,17.41,8.89,8.89,0,0,1-3.14-.58c-54.58-20.41-101.55-49.38-139.62-86.11A9,9,0,0,1,301.56,370.89ZM452.39,512.8a15.39,15.39,0,1,1-12.8-17.6A15.38,15.38,0,0,1,452.39,512.8ZM278.9,429.48a9,9,0,0,1,12.54-2.07c38.33,27.47,67.76,43.32,105.66,61.43a9,9,0,1,1-7.75,16.21c-38.8-18.53-69-34.79-108.38-63A9,9,0,0,1,278.9,429.48Zm-4.46,60.34A9,9,0,0,1,287,487.67c45.31,32,91.6,55,137.57,68.37a9,9,0,0,1-2.5,17.62,8.76,8.76,0,0,1-2.51-.36c-47.9-13.9-96-37.78-142.94-70.95A9,9,0,0,1,274.44,489.82Zm18.28,73.95a9,9,0,0,1,12.38-2.89c44.19,27.46,93.91,45,123.06,51.75,27.43,6.32,56.78,9,65.69,9,77.91,0,141.29-63.38,141.29-141.29,0-65.78-46.6-123.81-110.81-138L516,340.57l0-.24a257.48,257.48,0,0,1-100.58-53,9,9,0,1,1,11.69-13.66A239.17,239.17,0,0,0,528.3,324.87l8.22,1.9,0,.16c68.06,19,116.62,82.18,116.62,153.46,0,87.82-71.45,159.27-159.27,159.27-9.61,0-40.9-2.87-69.72-9.51-30.5-7-82.46-25.38-128.52-54A9,9,0,0,1,292.72,563.77ZM493.85,688.36l-9-.07c-5.35-.12-10.74-.42-16.1-.9a302.94,302.94,0,0,1-109.22-31.85,9,9,0,1,1,8.2-16,284.85,284.85,0,0,0,102.64,29.94,225.63,225.63,0,0,0,23.34.87l7.29-.11c101.46-3.78,182.84-87.49,182.84-189.86,0-89.16-63.2-167.31-150.26-185.83l-.12,0-.11,0a206.73,206.73,0,0,1-49.14-18.68A9,9,0,0,1,492.69,260,188.85,188.85,0,0,0,537.56,277h0c95.18,20.37,164.23,105.85,164.23,203.35C701.82,595.07,608.53,688.36,493.85,688.36Z'/%3E%3Cpath class='cls-5' d='M144.68,484.76c0-206.19,161.39-374.67,364.73-386-7.27-.41-14.58-.64-21.94-.64-213.56,0-386.68,173.12-386.68,386.68S273.91,871.43,487.47,871.43c7.36,0,14.67-.23,21.94-.64C306.07,859.42,144.68,690.94,144.68,484.76Z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 8,\n id: '9aeb50f542050172359a0e1a25a9933bc8c01259.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Myria',\n symbol: 'MYRIA',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MDAgNjAwIj48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtLjEzKSI+PHBhdGggc3R5bGU9ImZpbGw6bm9uZSIgZD0iTTAgMGg2MDB2NjAwSDB6Ii8+PC9jbGlwUGF0aD48c3R5bGU+LmNscy00e2ZpbGw6I2ZmZn08L3N0eWxlPjwvZGVmcz48ZyBzdHlsZT0iY2xpcC1wYXRoOnVybCgjY2xpcC1wYXRoKSI+PHBhdGggZD0iTTYwMCAzMDAuMTNjMCAxNjUuNjktMTM0LjMxIDMwMC0zMDAgMzAwUzAgNDY1LjgxIDAgMzAwLjEzIDEzNC4zMS4xMyAzMDAgLjEzczMwMCAxMzQuMzEgMzAwIDMwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtLjEzKSIgc3R5bGU9ImZpbGw6Izg2MmFlOSIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTQ3MS4xMSA0MjEuMjFhMTcuNzUgMTcuNzUgMCAwIDAgMi4wNy04IDcuMjQgNy4yNCAwIDAgMCAwLTEuMVYyNjMuNDdhOTUuMzYgOTUuMzYgMCAwIDAtMTQyLjYxLTgxLjcybC0xLjQ5Ljg1LTEyNi42NCA3My4xMi0xLjExLjY1YTE4LjE4IDE4LjE4IDAgMCAwLTUuNzcgNS43NWMtLjE1LjIxLS4yNi40MS0uMzkuNjNhMTguMzMgMTguMzMgMCAwIDAgNi43MSAyNWwyNDMuODQgMTQwLjgzYTE4LjMzIDE4LjMzIDAgMCAwIDI1LTYuNzFjLjEzLS4yMi4yNC0uNDIuMzUtLjY1TTIxMi41NCAyNzEuOTNsMTQuNzQtOC41MyA2Mi44NC0zNi4yNiA0OS4zOC0yOC41MSAxLjYtLjkxYTc2LjM0IDc2LjM0IDAgMCAxIDExMyA2NS4yNnYxNDguNDNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0uMTMpIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMTI4Ljg5IDQyMS4yMWExNy43NyAxNy43NyAwIDAgMS0yLjA4LTggNy41IDcuNSAwIDAgMSAwLTEuMVYyNjMuNDdhOTUuMzYgOTUuMzYgMCAwIDEgMTQyLjYxLTgxLjcybDEuNDkuODUgMTI2LjY1IDczLjExIDEuMTEuNjVhMTguMTcgMTguMTcgMCAwIDEgNS43NyA1Ljc1Yy4xNS4yMS4yNi40MS4zOS42M2ExOC4zMyAxOC4zMyAwIDAgMS02LjcxIDI1TDE1NC4yOCA0MjguNThhMTguMzMgMTguMzMgMCAwIDEtMjUtNi43MWMtLjEzLS4yMi0uMjQtLjQyLS4zNS0uNjVtMjU4LjUzLTE0OS4yOS0xNC43NC04LjUzLTYyLjgzLTM2LjI2LTQ5LjM5LTI4LjUyLTEuNi0uOTFhNzYuMzQgNzYuMzQgMCAwIDAtMTEzIDY1LjI2djE0OC40NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLS4xMykiLz48L2c+PC9zdmc+',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'myriadcore.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'xRef Finance Token',\n symbol: 'xREF',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNjIiIHZpZXdCb3g9IjAgMCA1NiA2MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEuODU2OTMgMTcuODg1NkMxLjg1NjkzIDE2LjAyNzggMi44ODY5MiAxNC4zMjMyIDQuNTMxNTEgMTMuNDU5MkwyNS45MjE2IDIuMjIxNzJDMjcuMzc3NSAxLjQ1NjgzIDI5LjExNjUgMS40NTY4MyAzMC41NzI0IDIuMjIxNzJMNTEuOTYyNCAxMy40NTkyQzUzLjYwNyAxNC4zMjMyIDU0LjYzNyAxNi4wMjc4IDU0LjYzNyAxNy44ODU2VjQ1LjYzMDRDNTQuNjM3IDQ3LjYwMjEgNTMuNDc4MiA0OS4zODk4IDUxLjY3ODMgNTAuMTk0N0wzMC4yODgyIDU5Ljc2MDZDMjguOTg5NCA2MC4zNDE0IDI3LjUwNDYgNjAuMzQxNSAyNi4yMDU3IDU5Ljc2MDZMNC44MTU3IDUwLjE5NDdDMy4wMTU3NCA0OS4zODk4IDEuODU2OTMgNDcuNjAyMSAxLjg1NjkzIDQ1LjYzMDRMMS44NTY5MyAxNy44ODU2WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEyNDYxXzIwNzUpIiBzdHJva2U9IiMwMEM2QTIiIHN0cm9rZS13aWR0aD0iMiIvPgo8cGF0aCBkPSJNMTMuNjk3OCAyMC4zMzJMMjguMjQ3MSAxNEwyOC4yMjAyIDMwLjU0MTdMMjAuMjgwMyAyMy43MTE2TDEyLjMxMzUgMzAuOTI5NVYyMi4zNjU0QzEyLjMxNTIgMjEuNDkyMiAxMi44NTM4IDIwLjY5OTMgMTMuNjk3OCAyMC4zMzJaIiBmaWxsPSIjMDBDNkEyIiBmaWxsLW9wYWNpdHk9IjAuNSIvPgo8cGF0aCBkPSJNMTQuMTAyMyA0Mi43NjQ1TDI4LjI0NzEgNDYuODYyNkwyOC4yMjAyIDM0LjU5NDRMMjAuMjc5NCAyNy45NDE0TDEyLjMxMzUgMzQuOTcyMlY0MC41Mjc0QzEyLjMxMzUgNDEuNTUxNSAxMy4wMzY3IDQyLjQ1NTkgMTQuMTAyMyA0Mi43NjQ1WiIgZmlsbD0iIzAwQzZBMiIgZmlsbC1vcGFjaXR5PSIwLjUiLz4KPHBhdGggZD0iTTQzLjY0NDUgNDIuNzYzM0wyOC4yNzQ0IDQ2Ljg2MzJMMjguMjQ2OCAzNC41MTU3TDQzLjIyMSAyMi40NjQ4QzQzLjIyMSAyMi40NjQ4IDQ1Ljc5MyAyNC4zOTk2IDQ1LjAzNzMgMjcuODE5NkM0My43MDQ4IDMzLjg1MTEgMzUuMTc5NiAzNS45ODY5IDM1LjE3OTYgMzUuOTg2OUw0My45MDk2IDQxLjE1NjFDNDQuNjE1NSA0MS41NzggNDQuNDU1NCA0Mi41NDcgNDMuNjQ0NSA0Mi43NjMzWiIgZmlsbD0iIzQ1RkZERSIvPgo8cGF0aCBkPSJNMzguNTkwMyAxOC45NzkzTDI4LjI3MzQgMTRMMjguMjQ2OCAzMC40MzE1TDQwLjY5NSAyMC4zNTA5QzQwLjY5NSAyMC4zNTA5IDQwLjQyNzEgMjAuMDU5NyAzOS42OTAxIDE5LjU4MDVDMzkuNDI4OSAxOS40MTE0IDM4LjU5MDMgMTguOTc5MyAzOC41OTAzIDE4Ljk3OTNaIiBmaWxsPSIjNDVGRkRFIi8+CjxwYXRoIGQ9Ik00MC41NTEgMTYuMDEwMUw0Ni42NjAyIDE4LjI4MDVDNDYuOTY3NSAxOC4zOTQzIDQ3LjE2OCAxOC42NjU2IDQ3LjE2OCAxOC45NjVWMjMuMTIwN0M0Ny4xNjggMjMuNDM4OCA0Ni43MjYgMjMuNTgyMiA0Ni41MDQyIDIzLjMzNDNMNDAuMjU1MyAxNi4zNjg3QzQwLjA4OTMgMTYuMTgzMSA0MC4zMDYyIDE1LjkxODEgNDAuNTUxIDE2LjAxMDFaIiBmaWxsPSIjNDVGRkRFIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTI0NjFfMjA3NSIgeDE9IjI4LjI0NyIgeTE9IjEiIHgyPSIyOC4yNDciIHkyPSI2MC42NzM1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMTEzMjAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAxMzIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'xtoken.ref-finance.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Solana',\n symbol: 'SOL',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MCIgeDI9IjUwIiB5MT0iMjciIHkyPSI3NCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMTRlNmFkIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjYTk2NGRlIi8+PC9saW5lYXJHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGQ9Im0wIDBoMTAwdjEwMGgtMTAweiIvPjwvY2xpcFBhdGg+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIj48cGF0aCBkPSJtNTAgMGM5Ljg4OTEgMCAxOS41NTYxIDIuOTMyNDUgMjcuNzc4NSA4LjQyNjUyIDguMjIyNSA1LjQ5NDA4IDE0LjYzMTEgMTMuMzAyOTggMTguNDE1NSAyMi40MzkyOHM0Ljc3NSAxOS4xODk3IDIuODQ1MyAyOC44ODg3Yy0xLjkyOTMgOS42OTkxLTYuNjkxMyAxOC42MDgyLTEzLjY4NCAyNS42MDA4LTYuOTkyNiA2Ljk5MjctMTUuOTAxNyAxMS43NTQ3LTI1LjYwMDggMTMuNjg0LTkuNjk5IDEuOTI5Ny0xOS43NTI0LjkzOTEtMjguODg4Ny0yLjg0NTNzLTE2Ljk0NTItMTAuMTkzLTIyLjQzOTI4LTE4LjQxNTVjLTUuNDk0MDctOC4yMjI0LTguNDI2NTItMTcuODg5NC04LjQyNjUyLTI3Ljc3ODUgMC0xMy4yNjA4IDUuMjY3ODQtMjUuOTc4NSAxNC42NDQ3LTM1LjM1NTMgOS4zNzY4LTkuMzc2ODYgMjIuMDk0NS0xNC42NDQ3IDM1LjM1NTMtMTQuNjQ0N3oiIGZpbGw9IiMwMDAiLz48ZyBmaWxsPSJ1cmwoI2EpIiBmaWxsLW9wYWNpdHk9Ii45MiI+PHBhdGggZD0ibTMwLjM4MDYgNjIuNzg4OWMuMzEzMS0uMzIzNC44MzQ5LS41MzkgMS4zNTY3LS41MzloNDYuMjMwN2MuODM0OSAwIDEuMjUyMyAxLjA3NzkuNjI2MiAxLjcyNDdsLTkuMTgzNiA5LjQ4NjRjLS4zMTMuMzIzNC0uODM0OC41MzktMS4zNTY2LjUzOWgtNDYuMTI2NGMtLjgzNDggMC0xLjI1MjItMS4wNzgtLjYyNjEtMS43MjQ4eiIvPjxwYXRoIGQ9Im0zMC4zODA2IDI3LjUzOWMuMzEzMS0uMzIzNC44MzQ5LS41MzkgMS4zNTY3LS41MzloNDYuMjMwN2MuODM0OSAwIDEuMjUyMyAxLjA3OC42MjYxIDEuNzI0OGwtOS4xODM1IDkuNDg2M2MtLjMxMzEuMzIzNC0uODM0OC41MzktMS4zNTY2LjUzOWgtNDYuMTI2NGMtLjgzNDkgMC0xLjI1MjMtMS4wNzgtLjYyNjEtMS43MjQ4eiIvPjxwYXRoIGQ9Im02OS41MTUgNDUuMDAxOGMtLjMxMzEtLjMyMzQtLjgzNDktLjUzOS0xLjM1NjctLjUzOWgtNDYuMjMwN2MtLjgzNDggMC0xLjI1MjIgMS4wNzgtLjYyNjEgMS43MjQ4bDkuMTgzNSA5LjQ4NjRjLjMxMzEuMzIzMy44MzQ5LjUzODkgMS4zNTY3LjUzODloNDYuMjMwNmMuODM0OSAwIDEuMjUyNC0xLjA3OC42MjYyLTEuNzI0OHoiLz48L2c+PC9nPjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'sol.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'TerraUSD',\n symbol: 'UST',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTgxLjA5NiAxMy43MjItLjAxLS4wMS4wMTQtLjAwOGE0NC4xNzQgNDQuMTc0IDAgMCAwIC0yOC43NjUtMTAuNTc0IDQ0LjE2NyA0NC4xNjcgMCAwIDAgLTE4LjAxIDMuODI1Yy0zLjcwNSAxLjU2NS02LjcxNSAzLjYzNS05LjE5NSA2Ljg4NS0xMi43NCAxNi44MyAyOS45NiAyOS4wNiA1Mi43OSAyOS4xMDQgMTAuNDkyIDcuNTI4IDEzLjQ0Ni0yMS4yMzYgMy4xNzctMjkuMjIyeiIgZmlsbD0iIzBkM2NhNCIvPjxwYXRoIGQ9Im0zNi44OTMgMTQuMDYzYy01Ljg2MyA4LjgxNi0yNS40MDMgMTUuMDI3LTI4LjYxNSAxNC4wNTdsLS4wMTktLjA0Yy4xMzItLjI2OC4yNjgtLjUzMi40LS43OTVhNDYuNjcyIDQ2LjY3MiAwIDAgMSA4LjQ4LTExLjU4IDQ3LjIxIDQ3LjIxIDAgMCAxIDkuMTg1LTcuMTUxYzIuNzM3LTEuNTg0IDUuNTM2LTEuNjg4IDYuNDU4LTEuNzIgOC43MDguMTc3IDQuMTYgNy4xNiA0LjExIDcuMjI5em0tNC44MDYgNjIuMzAzYy40MTggMi43NzItLjAwOSAxMy43MTMtLjU4IDE0LjYzNC0uNDg2LjAzMi0xLjUwMy4wOTUtNC40NDgtMS41NTdhNDYuODI3IDQ2LjgyNyAwIDAgMSAtOS45Mi03LjU3MyA0Ni45NTIgNDYuOTUyIDAgMCAxIC04LjQ4LTExLjU4IDQ2LjUyNCA0Ni41MjQgMCAwIDEgLTUuMjIzLTIxLjVjMC0yLjU4MS4yMDgtNS4xMTguNjEyLTcuNTg3YTQ2LjUxMSA0Ni41MTEgMCAwIDEgMi4yNjUtOC41OThjMy4zNzYgNC40ODMgNy4yNzggOC41NDQgMTAuNTk1IDEzLjA3MyAzLjE1OSA0LjMxNSA3LjUwNiAxMS4zNDQgOC4zODYgMTIuODUgNS41IDkuMzE2IDYuMzc2IDE1LjA3NCA2Ljc5MyAxNy44Mzh6bS0zLjMxMi0zOC44NTdjLTIuMDA2LTE1LjMxIDI5LjA1NS0yNS45NzkgNDIuNzA1LTI2LjM4MiAxLjYzOC4wMTggNi42MTYuMDc3IDkuNTI1IDIuNDM2IDUzLjQ5NSA1MC45MzctNDYuOTU3IDY0LjI0LTUyLjIzIDIzLjk0N3oiIGZpbGw9IiM1NDk0ZjgiLz48cGF0aCBkPSJtMjAuNDU3IDkyLjM1YzAgMS44MjUgMS4yNyAzLjMwNCAyLjg0NSAzLjMxMyAzNy40OTYuMjU5IDczLjY5NC0xLjQ2IDczLjY5NC03LjA4MyAwLTE3LjAwNy03Ni41MzkgMy43Ny03Ni41MzkgMy43N3oiIGZpbGw9IiM3NjAxMDEiLz48cGF0aCBkPSJtMjMuMzIgNDQuMTg3YTIuODYzIDIuODYzIDAgMCAwIC0yLjg2MyAyLjg2M3Y0NS4zYzAgMS41NzQgMS4yNyAyLjg1IDIuODQ1IDIuODU4IDM3LjQ5Ni0uMjc2IDczLjc0LTEyLjY4NyA3My42OTQtNi42M3YtNTEuMDI0Yy4wNDUtNi4wNTMtMzYuMTg5IDYuMzUzLTczLjY3NiA2LjYzNHoiIGZpbGw9IiNkZTMwMzAiLz48cGF0aCBkPSJtODQgODBjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxMS41IDAgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzNCAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2OC0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMi02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzNjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzNjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ni0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzNC02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0ibTI4LjU5MyA3MS41NGEyMDQuMTEyIDIwNC4xMTIgMCAwIDAgNy4wNjYtLjM3NiAyNTEuNzQ1IDI1MS43NDUgMCAwIDAgNi43MDYtLjU3MmMxLjEzLS4xMDkgMi4yNy0uMjIyIDMuNDQ1LS4zNSAxLjE3LS4xMjYgMi4zNjgtLjI1OCAzLjYxMi0uNDEyIDEuMjQzLS4xNSAyLjUzNi0uMzEzIDMuODg5LS40OSAxLjM1Mi0uMTczIDIuNzYzLS4zNzIgNC4yMzgtLjU5di0yNy41M2MtMTAuNTMyIDEuNTU2LTIyLjMxNyAyLjg3Mi0zNC4yMjkgMi45NThhMi44NjMgMi44NjMgMCAwIDAgLTIuODYzIDIuODY0djI0LjY1M2MxLjQ4NCAwIDIuODk1LS4wMTggNC4yNDctLjA1IDEuMzUzLS4wMTggMi42NDYtLjA2IDMuODktLjEwNXoiIGZpbGw9IiMxYTNhYjkiLz48cGF0aCBkPSJtMjMuMDUzIDQ2LjQ4IDEuMjIxIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OHptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjIuMTI2em01LjEzNS0uMjkyIDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzNS0uMjkxIDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzNC0uMjkyIDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bTUuMTMzLS4yOTIgMS4yMiAxLjg2Mi0yLjIyMi4xMjZ6bS0yOC4wNDcgNS4wMjYgMS4yMiAxLjg2Mi0yLjIyMi4xMjd6bTUuMTM1LS4yOTEgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM1LS4yOTIgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM0LS4yOTEgMS4yMjEgMS44NjItMi4yMjMuMTI3em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyIDEuODYyLTIuMjIzLjEyN3ptLTI4LjA0NyA1LjAyNiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptNS4xMzQtLjI5IDEuMjIxIDEuODYyLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptNS4xMzUtLjI5MyAxLjIyIDEuODYzLTIuMjIyLjEyNnptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzMi0uMjkyIDEuMjIxIDEuODYyLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptLTI4LjA0MiA1LjAyNiAxLjIyIDEuODYyLTIuMjIzLjEyNyAxLjAwMy0xLjk5em01LjEzNC0uMjkxIDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MyAxLjIyMSAxLjg2My0yLjIyMy4xMjd6bTUuMTM1LS4yOSAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzQtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bS0yOC4wNDggNS4wMjYgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM0LS4yOTEgMS4yMjEgMS44NjMtMi4yMjMuMTI2em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjMuMTI2IDEuMDAzLTEuOTg5em01LjEzNS0uMjkzIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzNC0uMjkxIDEuMjIxIDEuODYyLTIuMjIzLjEyN3ptNS4xMzMtLjI5MiAxLjIyMSAxLjg2My0yLjIyMy4xMjZ6bS0zMC42NTUgOS4wNDEgMS4yMjIgMS44NjMtMi4yMjMuMTI2IDEuMDAyLTEuOTg5em01LjEzNi0uMjkxIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzNC0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyMSAxLjg2My0yLjIyMy4xMjZ6bTUuMTM1LS4yOTEgMS4yMjEgMS44NjItMi4yMjMuMTI2IDEuMDAyLTEuOTg5em01LjEzNS0uMjkyIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzMy0uMjkyIDEuMjIgMS44NjMtMi4yMjMuMTI2em0tMjguMTk2LTIuMjY2IDEuMjIxIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OHptNS4xMzUtLjI5IDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzQtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bTUuMTM1LS4yOTIgMS4yMjEgMS44NjItMi4yMjMuMTI2em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'ust.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Celo',\n symbol: 'CELO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGgxMDB2MTAwaC0xMDB6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGQ9Im01MCAwYzkuODg5MSAwIDE5LjU1NjEgMi45MzI0NSAyNy43Nzg1IDguNDI2NTIgOC4yMjI1IDUuNDk0MDggMTQuNjMxMSAxMy4zMDI5OCAxOC40MTU1IDIyLjQzOTI4czQuNzc1IDE5LjE4OTcgMi44NDUzIDI4Ljg4ODdjLTEuOTI5MyA5LjY5OTEtNi42OTEzIDE4LjYwODItMTMuNjg0IDI1LjYwMDgtNi45OTI2IDYuOTkyNy0xNS45MDE3IDExLjc1NDctMjUuNjAwOCAxMy42ODQtOS42OTkgMS45Mjk3LTE5Ljc1MjQuOTM5MS0yOC44ODg3LTIuODQ1M3MtMTYuOTQ1Mi0xMC4xOTMtMjIuNDM5MjgtMTguNDE1NWMtNS40OTQwNy04LjIyMjQtOC40MjY1Mi0xNy44ODk0LTguNDI2NTItMjcuNzc4NSAwLTEzLjI2MDggNS4yNjc4NC0yNS45Nzg1IDE0LjY0NDctMzUuMzU1MyA5LjM3NjgtOS4zNzY4NiAyMi4wOTQ1LTE0LjY0NDcgMzUuMzU1My0xNC42NDQ3eiIgZmlsbD0iI2ZiY2M1YyIvPjxnIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Im00My41NDIxIDczLjcyNDljMy40MDg1LjAwODMgNi43NDI5LS45OTQ4IDkuNTgxMS0yLjg4MjUgMi44MzgxLTEuODg3NiA1LjA1MjQtNC41NzQ4IDYuMzYyNi03LjcyMTVzMS42NTczLTYuNjExNC45OTc1LTkuOTU1NWMtLjY1OTktMy4zNDQtMi4yOTcxLTYuNDE3Mi00LjcwNDMtOC44MzAzLTIuNDA3My0yLjQxMzItNS40NzY0LTQuMDU3OS04LjgxODktNC43MjU5LTMuMzQyNC0uNjY4MS02LjgwNzktLjMyOTQtOS45NTc4Ljk3My0zLjE0OTkgMS4zMDI1LTUuODQyNSAzLjUxMDItNy43MzcxIDYuMzQzOC0xLjg5NDYgMi44MzM1LTIuOTA1OSA2LjE2NTQtMi45MDU5IDkuNTc0IDAgNC41NjEgMS44MDkgOC45MzU5IDUuMDMwMiAxMi4xNjQ5IDMuMjIxMiAzLjIyOTEgNy41OTE2IDUuMDQ4OCAxMi4xNTI2IDUuMDZ6bTAgNi4yNzUxYy00LjY0OTYuMDA4My05LjE5NzMtMS4zNjI5LTEzLjA2NzMtMy45NC0zLjg3MDEtMi41NzcyLTYuODg4Ny02LjI0NDQtOC42NzM4LTEwLjUzNzgtMS43ODUyLTQuMjkzMy0yLjI1NjYtOS4wMTk3LTEuMzU0Ni0xMy41ODFzMy4xMzY5LTguNzUyNSA2LjQyMTctMTIuMDQzM2MzLjI4NDgtMy4yOTA3IDcuNDcyMS01LjUzMzEgMTIuMDMxOC02LjQ0MzMgNC41NTk3LS45MTAxIDkuMjg2OS0uNDQ3MiAxMy41ODM0IDEuMzMwMnM3Ljk2OTIgNC43ODk0IDEwLjU1MzMgOC42NTQ5YzIuNTg0IDMuODY1NSAzLjk2MzQgOC40MTA2IDMuOTYzNCAxMy4wNjAzLjAwNTUgMy4wODQtLjU5NzIgNi4xMzg5LTEuNzczNiA4Ljk4OTgtMS4xNzYzIDIuODUwOS0yLjkwMzQgNS40NDE5LTUuMDgyMiA3LjYyNDZzLTQuNzY2NiAzLjkxNDQtNy42MTU0IDUuMDk1OS01LjkwMjYgMS43ODk3LTguOTg2NyAxLjc4OTd6Ii8+PHBhdGggZD0ibTU2LjUgNjAuNzI0OWMzLjQwODYuMDA4MyA2Ljc0MjktLjk5NDggOS41ODExLTIuODgyNHM1LjA1MjUtNC41NzQ5IDYuMzYyNi03LjcyMTZjMS4zMTAyLTMuMTQ2NyAxLjY1NzMtNi42MTEzLjk5NzUtOS45NTU0LS42NTk5LTMuMzQ0MS0yLjI5NzEtNi40MTcyLTQuNzA0My04LjgzMDQtMi40MDczLTIuNDEzMS01LjQ3NjQtNC4wNTc4LTguODE4OC00LjcyNTktMy4zNDI1LS42NjgtNi44MDgtLjMyOTQtOS45NTc5Ljk3MzEtMy4xNDk5IDEuMzAyNC01Ljg0MjUgMy41MTAyLTcuNzM3MSA2LjM0MzdzLTIuOTA1OSA2LjE2NTQtMi45MDU5IDkuNTc0YzAgNC41NjEgMS44MDkgOC45MzU5IDUuMDMwMiAxMi4xNjVzNy41OTE2IDUuMDQ4OCAxMi4xNTI2IDUuMDU5OXptMCA2LjI3NTFjLTQuNjQ3OSAwLTkuMTkxMy0xLjM3ODItMTMuMDU1OS0zLjk2MDUtMy44NjQ1LTIuNTgyMi02Ljg3NjYtNi4yNTI0LTguNjU1My0xMC41NDY0LTEuNzc4Ni00LjI5NDEtMi4yNDQtOS4wMTkyLTEuMzM3Mi0xMy41Nzc3LjkwNjctNC41NTg2IDMuMTQ0OS04Ljc0NTkgNi40MzE0LTEyLjAzMjRzNy40NzM4LTUuNTI0NyAxMi4wMzI0LTYuNDMxNGM0LjU1ODUtLjkwNjggOS4yODM2LS40NDE0IDEzLjU3NzcgMS4zMzcyIDQuMjk0IDEuNzc4NyA3Ljk2NDIgNC43OTA4IDEwLjU0NjQgOC42NTUzIDIuNTgyMiAzLjg2NDYgMy45NjA1IDguNDA4IDMuOTYwNSAxMy4wNTU5LS4wMTExIDYuMjI5Mi0yLjQ5MDYgMTIuMi02Ljg5NTMgMTYuNjA0N3MtMTAuMzc1NSA2Ljg4NDItMTYuNjA0NyA2Ljg5NTN6Ii8+PHBhdGggZD0ibTU3LjY4ODkgNjcuODU3MWMxLjYyMzQtMS45NzM4IDIuNzg2LTQuMjg0OCAzLjQwMzQtNi43NjQ3IDIuNDczNy0uNjM0MSA0Ljc4MTItMS43OTUgNi43NjQ3LTMuNDAzNC0uMDk4MyAyLjg5MDUtLjcyNDkgNS43Mzg2LTEuODQ4NyA4LjQwMzQtMi42NDQxIDEuMDg1MS01LjQ2MjUgMS42ODMtOC4zMTk0IDEuNzY0N3ptLTE3LjQzNy0yNy42MDVjLTIuNDM1NC42MzQ2LTQuNzAxNiAxLjc5NjQtNi42Mzg2IDMuNDAzMy4wNzI1LTIuODkzNi43MDAxLTUuNzQ2NCAxLjg0ODctOC40MDMzIDIuNjU4NS0xLjE0MzcgNS41MTA0LTEuNzcxMSA4LjQwMzQtMS44NDg4LTEuNjIzNCAxLjk3MzgtMi43ODYgNC4yODQ4LTMuNDAzNCA2Ljc2NDd6Ii8+PC9nPjwvZz48L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'celo.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Celo Dollar',\n symbol: 'cUSD',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTEwMCA1MGMwLTI3LjYxNDItMjIuMzg1OC01MC01MC01MHMtNTAgMjIuMzg1OC01MCA1MCAyMi4zODU4IDUwIDUwIDUwIDUwLTIyLjM4NTggNTAtNTB6IiBmaWxsPSIjNDVjZDg1Ii8+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibTY5Ljg4MDUgNjIuNjQzOGMtMS41NjcxIDMuMzkzMS0zLjkzNzUgNi4zNTMyLTYuOTA2MSA4LjYyNDEtMi45Njg1IDIuMjcwOC02LjQ0NTggMy43ODQxLTEwLjEzMDcgNC40MDg3LTMuNjg1LjYyNDYtNy40NjY3LjM0MTctMTEuMDE3Ny0uODI0MS0zLjU1MTEtMS4xNjU4LTYuNzY0Ni0zLjE3OTQtOS4zNjIzLTUuODY2Ni0yLjU5NzgtMi42ODcxLTQuNTAxNS01Ljk2NjktNS41NDY1LTkuNTU1NC0xLjA0NDktMy41ODg1LTEuMTk5Ni03LjM3NzUtLjQ1MDctMTEuMDM5My43NDg5LTMuNjYxNyAyLjM3ODktNy4wODU3IDQuNzQ4OS05Ljk3NTggMi4zNzAxLTIuODkgNS40MDg3LTUuMTU4OSA4Ljg1MjktNi42MTAzbDIuMjY2OCA1LjM3OTJjLTIuNTcgMS4wODMxLTQuODM3NSAyLjc3NjEtNi42MDYgNC45MzI3LTEuNzY4NSAyLjE1NjUtMi45ODQ4IDQuNzExNS0zLjU0MzYgNy40NDM5LS41NTg5IDIuNzMyNC0uNDQzNSA1LjU1OTguMzM2MyA4LjIzNzYuNzc5OCAyLjY3NzcgMi4yMDAzIDUuMTI1MSA0LjEzODggNy4xMzAyIDEuOTM4NCAyLjAwNTIgNC4zMzYzIDMuNTA3OCA2Ljk4NjEgNC4zNzc3czUuNDcxNyAxLjA4MSA4LjIyMTUuNjE0OWMyLjc0OTctLjQ2NjEgNS4zNDQ0LTEuNTk1MyA3LjU1OTUtMy4yODk4IDIuMjE1Mi0xLjY5NDUgMy45ODQtMy45MDMzIDUuMTUzNC02LjQzNTNsNS45MTg5LjMwNDJ6Ii8+PHBhdGggZD0ibTU2LjEwNjEgMjQuNXYtNGg0LjUwMDV2NGMyIDAgNS4xNjY3LjY2NjcgNi41IDF2NC41Yy0xOS0zLTE1LjUwMTEgMy44NDYyLTggNSA2LjcyMTcgMS4wMzM5IDExIDIgMTEuNSA5IC40IDUuNi01LjgzMzMgNy42NjY3LTkgOHYzLjVoLTV2LTMuNWMtMi40IDAtNi42NjY3LTEuNjY2Ny04LjUtMi41di01LjVjNC41IDIuNSAxNyA0LjUgMTcgMHMtMTYuNTAxMS0zLTE4LjAwMDUtMTFjLTEuMDAyMy01LjM0NzUgNS4zMzMzLTcuODMzMyA5LTguNXoiLz48L2c+PC9zdmc+',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'cusd.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'ABR',\n symbol: 'ABR',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEyMSIgdmlld0JveD0iMCAwIDEyMSAxMjEiIHdpZHRoPSIxMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI2MC41IiBjeT0iNjAuNSIgZmlsbD0iIzBlMGIwZiIgZmlsbC1ydWxlPSJub256ZXJvIiByPSI2MC41Ii8+PGNpcmNsZSBjeD0iNjAuNSIgY3k9IjYwLjUiIHI9IjYwIiBzdHJva2U9IiMyZDJjMmUiIHN0cm9rZS1vcGFjaXR5PSIuODEiLz48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Im04MS4xNjg3IDUyLjIxNDctMTEuNjUzLTExLjY1MjloLTE3LjY1NTlsLTUuNjQ5MyA1LjY0OTl2LTIwLjEyNzdoLTYuMDAzN3YzNS42NjQ4IDcuNzY4NmwxMS42NTMgMTEuNjUyOWgxNy42NTU5bDUuNjUwMi01LjY0OTl2MjAuMTI3N2g2LjM1NjN2LTMzLjU0NjJ6bS0xNC40NzgxIDIyLjk1MjZoLTExLjY1MjJsLTguNDc1My04LjQ3NDh2LTQuOTQzNy02LjcwOTJsOC40NzUzLTguNDc0OGgxMS42NTIybDguNDc1MyA4LjQ3NDh2Ny40MTU1IDQuMjM3NHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtMzEuNzMzNCA3Mi42OTUydi0zMi4xMzM3aC02LjAwMjh2MzQuOTU4NmwyMC40ODEgMjAuNDgwOGgyMC40ODAxdi02LjAwM2gtMTcuNjU1OXoiIGZpbGw9IiM2ZGQiLz48cGF0aCBkPSJtNTUuMDM4OCAyNS43MzA1djYuMDAzaDE3LjY1NTlsMTcuMzAyNCAxNy4zMDI3djMyLjEzMzdoNi4wMDI4di0zNC45NTg2bC0yMC40ODEtMjAuNDgwOHoiIGZpbGw9IiM2ZGQiLz48L2c+PC9nPjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'abr.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Utopia',\n symbol: 'UTO',\n icon:\n \"data:image/svg+xml,%3Csvg id='Layer_1' data-name='Layer 1' xmlns='http://www.w3.org/2000/svg' viewBox='-40 -40 600 600'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%239f9f9f%7D.cls-2%7Bfill:%23fefefe%7D.cls-4%7Bfill:%23030303%7D %3C/style%3E%3C/defs%3E%3Cpath d='M371.65 15v23.92l-.47.71C368.82 41.48 366 41 363.36 41q-36.94.09-73.88 0h-176c-3.06 0-6.31.67-9.1-1.37l-.47-.71V15ZM55.21 355.33H31.66a2.81 2.81 0 0 1-.26-.3.82.82 0 0 1-.13-.37v-24H6.67V136.41h24.6l.69.44c2 2.64 1.38 5.75 1.39 8.67q.07 73.11 0 146.2c0 12.44.26 12.68 12.64 12.76 3 0 6-.29 8.85 1a3 3 0 0 1 1.23 1.1 12.38 12.38 0 0 1 1.18 6.17q.1 18 0 36.05c0 2.09.17 4.28-1.36 6.06ZM420.4 452.82v23.51c-3.87.66-178.64.93-195 .29v-23.8l.47-.71c2.79-2 6-1.37 9.1-1.37q75.33-.09 150.68 0c9.25 0 18.49-.06 27.74 0 2.25 0 4.6-.25 6.54 1.37ZM176.66 428H128v-23.83H79.16v-24.9l.39-.66c1.9-1.69 4.27-1.4 6.51-1.42 10.55-.08 21.09 0 31.63-.05 6.6-.05 7.89-1.5 8.12-8.1.16-4.52-.77-9.14 1.06-13.53a2.94 2.94 0 0 1 1.1-1.14 58.19 58.19 0 0 1 24.44-.12 3 3 0 0 1 1.2 1.07c1.29 2.36 1.19 4.95 1.2 7.5v30.75c.05 6.74 1.61 8.24 8.36 8.37 3.7.08 7.41-.1 11.1.23 2.23.2 3.9 1.14 4.1 3.54a107.23 107.23 0 0 1-.06 20 3.93 3.93 0 0 1-1 1.85c-.2.17-.43.31-.65.44Z'/%3E%3Cpath d='M225.4 452.82h-48.74V428c1.46-1.94 3.61-2 5.74-2.06 6.36-.1 12.72-.14 19.08.09 6.33-.23 12.67-.21 19-.07 1.93 0 4-.19 5.56 1.42 2.71 7.57 1.34 15.33 1 23-.04 1.09-.97 1.72-1.64 2.44ZM31.27 136.41V87.67h23.94l.7.45c1.36 1.51 1.34 3.39 1.35 5.22q.18 18.9 0 37.8a11.41 11.41 0 0 1-1 5 3.12 3.12 0 0 1-1.12 1.24c-7.1 2.15-14.32 1.17-21.51.74-1.03-.12-1.63-1.04-2.36-1.71Z'/%3E%3Cpath d='M55.21 87.67v-24.8h23.95l.69.44a3.53 3.53 0 0 1 1 1.84c.36 7.46 1.36 14.94-.69 22.33A3 3 0 0 1 79 88.65c-7.08 2-14.25 1.13-21.4.67-1.07-.06-1.67-.99-2.39-1.65ZM469.14 404.07V428h-24.8l-.71-.47a5.34 5.34 0 0 1-1.24-3.54q-.37-8.07 0-16.15a7 7 0 0 1 1.61-4.3 8.54 8.54 0 0 1 5.24-1.52c5-.13 10-.14 15 0 1.86.09 3.65.41 4.9 2.05Z'/%3E%3Cpath d='M79.16 62.87V38.92H104c.79.8 1.71 1.56 1.76 2.78.29 7 1.2 14-.69 20.86a3 3 0 0 1-1.13 1.23C96.52 66 89 64.92 81.56 64.53c-1.07-.06-1.68-1-2.4-1.66ZM444.34 428v24.8H420.4c-.67-.72-1.62-1.34-1.66-2.38-.33-7.7-1.67-15.44 1-23 1.15-1.33 2.78-1.33 4.32-1.4 5.11-.22 10.23-.18 15.35 0 1.9.03 3.68.36 4.93 1.98ZM79.16 379.27H55.21v-23.94c.52-.48.95-1.21 1.63-1.34a70.78 70.78 0 0 1 21.55-.16c1.55.19 2.36 1.57 2.5 3.09a109.82 109.82 0 0 1 0 19.53 4.76 4.76 0 0 1-1.73 2.82ZM444.34 111.61h24.8v73.54c-1.36 1.8-3.33 2-5.35 2-5 .13-9.94.18-14.9 0-5.5-.2-6.49-1.05-6.55-6.57-.18-14.62-.28-29.24.06-43.86-.24-6.35-.22-12.7-.12-19.06 0-2-.09-4 1.36-5.63ZM395.59 62.87h24.81v24.8c-.15.23-.3.46-.44.69a3.62 3.62 0 0 1-1.84 1c-7.43.4-14.88 1.3-22.25-.61a3 3 0 0 1-1.2-1.1c-1.72-8.12-2.21-16.24.23-24.32Z'/%3E%3Cpath d='M420.4 87.67h23.94v23.94c-.79.79-1.55 1.71-2.77 1.76-7 .29-14 1.2-20.87-.69a3.11 3.11 0 0 1-1.23-1.13c-2.14-7.1-1.16-14.3-.74-21.49.07-1.06 1-1.67 1.67-2.39ZM371.65 38.92h23.94v23.95c-.79.79-1.55 1.7-2.77 1.75-7 .3-14 1.2-20.87-.68a3.18 3.18 0 0 1-1.23-1.13c-2.13-7.1-1.16-14.31-.73-21.49.06-1.07 1.01-1.67 1.66-2.4Z'/%3E%3Cpath class='cls-1' d='M371.65 38.92v23.95c-.9 1.57-2.44 1.81-4 2-1.85.17-3.7.15-5.55.15q-124.27 0-248.55-.06c-3.25 0-6.93 1.15-9.57-2.05V38.92Z'/%3E%3Cpath class='cls-2' d='M104 62.87h267.65c1.92 1.47 2 3.6 2.07 5.74.1 3.68-.12 7.36.14 11 .28 4.05 1.77 5.54 5.81 5.83 3.53.25 7.07 0 10.6.14 2 .07 4 .3 5.32 2.07 1.93 1.47 2 3.6 2.08 5.74.11 3.53-.09 7.07.15 10.6.23 3.35 2 5.16 5.38 5.38 3.82.24 7.64 0 11.45.15 2.15.06 4.28.15 5.75 2.07 1.92 1.47 2 3.6 2.07 5.75.1 3.67-.12 7.35.13 11 .28 4 1.78 5.54 5.82 5.83 3.53.25 7.07 0 10.6.14 2 .06 4 .29 5.32 2.06v48.74h24.8v72.69c-1.25 1.62-3 2-4.92 2-3 .11-6 .06-9 .08-7.41.08-8.77 1.36-8.79 8.67-.05 14.34 0 28.68 0 43 0 3.27-.09 6.54 0 9.8.21 5.2 1.79 6.74 7.07 6.93 3.4.12 6.81 0 10.22.09 2 .06 4 .29 5.35 2.06v24.8c-1.45 1.93-3.59 2-5.71 2.05-6.32.1-12.64.16-19-.11-8 .24-16 .29-24 0-6.61.26-13.22.21-19.84.11a11 11 0 0 1-4.52-.85 3.53 3.53 0 0 1-1.28-.81c-1.44-2.28-1.36-4.85-1.38-7.4 0-3.11.09-6.23-.06-9.34-.22-4.62-1.65-6.06-6.2-6.29a67.32 67.32 0 0 0-7.65 0c-4.07.28-5.5 1.71-5.74 5.85-.22 3.68 0 7.37-.11 11.05-.06 2.4-.11 4.83-1.82 6.81-4.08 1.73-8.36.85-12.56 1s-8.19.09-12.28-.15c-6.36.26-12.72.22-19.08.12a11 11 0 0 1-4.54-.85 3.47 3.47 0 0 1-1.28-.82c-1.36-2.15-1.35-4.57-1.37-7 0-3.26.09-6.53-.07-9.79-.22-4.59-1.67-6-6.26-6.25-2.4-.12-4.82-.09-7.23 0-5.4.14-6.83 1.53-7 6.83-.11 3.54 0 7.09-.08 10.63-.07 2.27-.19 4.55-1.89 6.36-2.12 1.1-4.43.92-6.69.92q-29.41.09-58.84 0c-2.41 0-4.85.08-7.08-1.09-2.15-1.51-2.23-3.84-2.31-6.12-.14-3.56 0-7.12-.09-10.68-.17-5.33-1.6-6.72-7-6.86-2.13-.06-4.27-.09-6.41 0-4.58.25-6 1.68-6.19 6.35-.18 5.55.05 11.11-.27 16.67.34 6.24.22 12.48.14 18.72a11 11 0 0 1-1 4.55 2.94 2.94 0 0 1-1 1.19c-7.82 2.28-15.77 1.2-23.67.74-2.42-.14-2.95-2.34-3.11-4.45-.3-4 0-8-.22-11.93-.23-5.19-1.87-6.82-7-7-3.12-.14-6.25 0-9.38-.11-2-.07-4-.27-5.36-2.05-1.78-1.35-2-3.28-2.07-5.32-.09-3.82.1-7.65-.12-11.46-.24-4.14-1.67-5.57-5.75-5.83a69.87 69.87 0 0 0-8.92 0c-4.09.26-5.51 1.69-5.75 5.83-.23 3.81 0 7.64-.12 11.46 0 2-.29 4-2.07 5.32-.52.48-1 1.22-1.62 1.35a70.79 70.79 0 0 1-21.6.17c-2.15-.26-2.53-2.44-2.67-4.35-.32-4.26 0-8.53-.23-12.78-.22-5.2-1.85-6.83-7-7-4.26-.17-8.52 0-12.78-.2-3.1-.17-4.62-1.69-4.78-4.79-.22-4 0-8-.21-11.93-.23-5.18-1.86-6.8-7-7-3.12-.14-6.25 0-9.38-.11-2-.07-4-.28-5.36-2.05a5.39 5.39 0 0 1-2-4.1c-.09-1.71-.14-3.41-.14-5.12V145.58c0-3.16-.87-6.66 2.07-9.22 1.37-1.78 3.35-2 5.37-2 3.14-.11 6.27 0 9.4-.11 5.22-.22 6.91-1.8 7-7 .18-10.54 0-21.07.1-31.61 0-2.78-.52-5.79 2.08-7.93 1.47-1.93 3.6-2 5.74-2.08 3.68-.1 7.36.13 11-.13 4-.29 5.54-1.78 5.82-5.83.26-3.66 0-7.34.14-11 .15-2.2.21-4.33 2.21-5.8ZM469.14 404.07h-24.8l-.71-.47a5.84 5.84 0 0 1-1.28-3.92c-.19-5.76-.23-11.51 0-17.26.07-1.4.18-2.84 1.39-3.84 7.57-2.59 15.3-1.31 23-1 1 0 1.66 1 2.37 1.65Z'/%3E%3Cpath class='cls-1' d='M469.14 379.27h-24.8c-1.66-.8-1.87-2.36-1.95-3.92-.26-5.33-.25-10.66 0-16a5.23 5.23 0 0 1 1.95-4h24.8Z'/%3E%3Cpath d='M469.14 330.53h-24.36c-.65-3.68-.88-58.4-.29-72.69h24.65Z'/%3E%3Cpath class='cls-1' d='M55.21 136.41v170.18H31.72a2.76 2.76 0 0 1-.3-.29.64.64 0 0 1-.15-.36V136.41Z'/%3E%3Cpath d='M55.21 306.59H78.7a1.67 1.67 0 0 1 .31.28.73.73 0 0 1 .14.36v23.15h24.21a4.48 4.48 0 0 1 .45.45.8.8 0 0 1 .14.36v24.14h24v23.94H79.16v-23.94H55.21Z' fill='%23a1a1a1'/%3E%3Cpath class='cls-1' d='M420.4 428v24.8h-195V428c.7-1.53 2.11-1.78 3.55-1.94a48.57 48.57 0 0 1 5.12-.17h177.66c2.95.11 6.36-.98 8.67 2.11ZM152.71 355.33h23.49a1.72 1.72 0 0 1 .31.29.7.7 0 0 1 .14.36v23.29h24.8c2 1.24 2 3.31 2 5.26q.24 19.08 0 38.16c0 2-.25 4-2 5.33h-24.8v-23.5a1.7 1.7 0 0 0-.3-.3.62.62 0 0 0-.36-.14h-23.28Z'/%3E%3Cpath class='cls-1' d='M127.91 355.33V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h24.15v24.8Z'/%3E%3Cpath class='cls-2' d='M201.46 428v-48.73c1.48-1.95 3.64-2 5.79-2 6-.09 11.95-.17 17.92.12 7-.27 14-.31 20.93-.08 5.06.17 5.88 1.07 6.13 6.13.21 4-.06 8 .17 12 .27 4.69 1.92 6.25 6.65 6.56 11.72.77 13-.4 13-12.27 0-12.46 0-12.47 12.37-12.48h30.76c2.41 0 4.86-.13 7.15.88a3.53 3.53 0 0 1 1.27.77c2.32 4.12 1.32 8.63 1.39 13 .15 9.66.55 10.16 10.16 10.16h.85c7.68 0 8.7-1 8.75-8.55v-8.54a11.49 11.49 0 0 1 1.24-5.78 3 3 0 0 1 1.23-1 13.24 13.24 0 0 1 5.42-.92c14.31 0 28.63-.21 42.94.11 6.25-.24 12.51-.16 18.76-.12a14.32 14.32 0 0 1 6.23 1.14c1.93 1.13 1.76 3.1 1.84 4.9.2 4 0 7.93.14 11.88.2 5 1.73 6.58 6.68 6.8 3.26.15 6.51 0 9.77.1 2 .07 4 .29 5.33 2.06V428H201.46Z'/%3E%3Cpath class='cls-1' d='M79.16 87.67v48.74H55.21V87.67ZM104 62.87v24.8H79.16v-24.8ZM444.34 136.41H420.4v-24.8h23.94ZM395.59 87.67h-23.94v-24.8h23.94ZM420.4 111.61h-24.81V87.67h24.81Z'/%3E%3Cpath d='M322.9 379.27h-48.27a2.07 2.07 0 0 0-.31.27.68.68 0 0 0-.16.36v24h-23.67c.06.06-.06 0-.14-.14a.7.7 0 0 1-.14-.36v-24.15H225.4c-.46-.52-1.24-.92-1.33-1.59-.92-7.32-1.93-14.66.63-21.89l.7-.46h72.7c4-3.06 20.75-3.06 24.8 0 3.1 4.03 3.1 20.08 0 23.96ZM274.15 257.84H225.4V209.1c1.37-1.8 3.35-2 5.37-2q19-.19 38 0c2 0 4 .24 5.37 2 1.8 1.36 2 3.34 2 5.37q.19 19 0 38c.03 2.03-.14 4.01-1.99 5.37ZM395.59 257.84h-48.74V209.1c1.36-1.8 3.34-2 5.36-2q19-.19 38 0c2 0 4 .24 5.37 2 1.81 1.36 2 3.34 2 5.37q.21 19 0 38c.03 2.03-.18 4.01-1.99 5.37Z'/%3E%3Cpath class='cls-1' d='M395.59 257.84V209.1H420c.64 3.58.85 35.66.29 48.74Z'/%3E%3Cpath d='M444.34 404.07H420.4v-24.8c-3-4-3-19.92 0-23.94h23.94v48.74ZM395.59 379.27h-48.74c-.36-.45 0 .24-.35-.23-2.73-3.92-2.49-20 .35-23.71h24.8c4-3 19.93-3 23.94 0 3.04 4.02 3.04 19.93 0 23.94Z'/%3E%3Cpath class='cls-1' d='M274.15 209.1H225.4v-23.5c3.58-.64 35.65-.85 48.75-.3ZM395.59 209.1h-48.74v-23.5c3.58-.64 35.65-.85 48.74-.3ZM274.15 257.84V209.1h23.5c.64 3.58.85 35.65.3 48.74ZM322.9 355.33h-24.8V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h24.15ZM395.59 355.33h-23.94V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h23.29Z'/%3E%3Cpath d='M201.46 355.33V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h23.29v24.8c-4.01 3-19.93 3-23.94-.03Z'/%3E%3Cpath class='cls-1' d='M127.78 136.53v23.73h-23.64v-23.73ZM346.85 355.33v23.94c-4 3-19.93 3-24 0v-23.94ZM152.83 111.49V87.76h23.64v23.73Z'/%3E%3Cpath d='M322.9 379.27h24v24.35a2.07 2.07 0 0 1-.29.3.67.67 0 0 1-.37.15H322.9Z'/%3E%3Cpath class='cls-1' d='M127.79 136.27V111.7h24.91v24.57ZM201.45 379.25v-23.91h23.94v23.91ZM395.57 379.25v-23.91h24.86v23.91Z'/%3E%3Cpath class='cls-4' d='M469.17 404.08v-73.61h23.92v73.61ZM469.17 257.76v-72.61h23.92v72.61Z'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 8,\n id: 'utopia.secretskelliessociety.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'DEIP Token',\n symbol: 'DEIP',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgeD0iLjg5MiIgeT0iLjkxIiB3aWR0aD0iNDMuMTYxIiBoZWlnaHQ9IjQzLjE2MSIgcng9IjIxLjU4MSIgZmlsbD0iI0Y4RkVGQSIvPjxwYXRoIGQ9Ik05LjcgMTAuNmgxNC41MzRjNi41NjcgMCAxMS44OTIgNS4zMjMgMTEuODkyIDExLjg5IDAgNi41NjgtNS4zMjQgMTEuODkyLTExLjg5MiAxMS44OTJIOS43VjEwLjZaIiBmaWxsPSJ1cmwoI2EpIi8+PGNpcmNsZSBjeD0iMjIuNDczIiBjeT0iMjIuNDkxIiByPSI0Ljg0NSIgZmlsbD0iIzAwMCIvPjxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD0iYSIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguMjE2IDExLjY5NTUgLTExLjkyNjc3IC4yMjAyOCAyMi42OTcgMjIuNjg3KSI+PHN0b3Agb2Zmc2V0PSIuMzU5IiBzdG9wLWNvbG9yPSIjRTlGRjAwIi8+PHN0b3Agb2Zmc2V0PSIuNzYiIHN0b3AtY29sb3I9IiMyNjM4MDAiLz48c3RvcCBvZmZzZXQ9IjEiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'deip-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wootrade Network',\n symbol: 'WOO',\n icon:\n \"data:image/svg+xml,%3Csvg width='125' height='83' viewBox='0 0 125 83' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M102.422 0H122.958L113.203 30.9433H92.9243L102.422 0ZM75.982 29.4048L86.0788 53.3388L89.8436 41.0299H109.951L98.5713 78.0422C97.6301 80.9485 94.9776 82.9145 91.8972 82.9145H80.4314C77.6078 82.9145 75.0408 81.2049 73.9285 78.5551L61.2648 47.8682L48.8578 78.5551C47.831 81.2904 45.2641 83 42.3549 83H30.718C27.6376 83 24.9851 80.9485 24.0439 78.0422L0 5.85842e-05H20.1934L36.2797 53.3388L46.8898 29.3193C49.2857 23.3358 55.0185 19.4038 61.4359 19.4038C67.8533 19.4038 73.6718 23.3358 75.982 29.4048Z' fill='%2320252F'/%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'LiNEAR',\n symbol: 'LINEAR',\n icon:\n \"data:image/svg+xml,%3Csvg width='40' height='40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M30.74 28.78c.21-.36.32-.78.32-1.21v-6.33c0-.24-.06-.46-.17-.66-.12-.21-.28-.38-.48-.49l-16.86-9.77c-.35-.2-.73-.31-1.13-.32-.64 0-1.24.26-1.69.72-.45.45-.7 1.07-.71 1.71v6.39c0 .24.06.47.18.67.11.21.28.37.48.48l16.82 9.71c.36.22.77.32 1.19.32.41 0 .82-.12 1.19-.33.36-.21.66-.52.86-.89zm.32-16.27c0-.42-.1-.84-.29-1.21-.2-.38-.49-.7-.85-.93-.36-.22-.78-.34-1.21-.34-.42 0-.84.12-1.21.34l-4.97 2.81c-.04.02-.08.07-.1.12-.03.04-.04.1-.04.14 0 .06.01.11.04.16.02.04.06.08.1.1l8.05 4.62c.05.02.1.04.15.04.05 0 .1-.02.15-.05.04-.02.08-.06.11-.11.02-.04.04-.1.03-.15l.04-5.54zM10.05 27.5c-.01.43.08.86.28 1.23.2.38.49.7.85.93.36.22.78.34 1.2.34.42 0 .83-.12 1.2-.34l4.92-2.85c.04-.02.08-.06.1-.11.03-.04.05-.1.05-.15 0-.05-.02-.11-.05-.15-.02-.05-.06-.09-.1-.12l-8.05-4.6c-.05-.03-.09-.04-.15-.04-.05 0-.1.01-.15.04-.05.02-.08.07-.11.12-.02.04-.04.09-.04.14l.05 5.56z' fill='url(%23paint0_linear_186_370)'/%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_186_370' x1='11.135' y1='11.152' x2='30.145' y2='30.457' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%231BB3CC'/%3E%3Cstop offset='1' stop-color='%23824ACC'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'linear-protocol.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USN',\n symbol: 'USN',\n icon:\n \"data:image/svg+xml;charset=UTF-8,%3Csvg width='38' height='38' viewBox='0 0 38 38' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='38' height='38' rx='19' fill='black'/%3E%3Cpath d='M14.8388 10.6601C14.4203 10.1008 13.6748 9.86519 12.9933 10.0768C12.3119 10.2885 11.85 10.8991 11.85 11.5883V14.7648H8V17.9412H11.85V20.0589H8V23.2353H11.85V28H15.15V16.5108L23.1612 27.2165C23.5797 27.7758 24.3252 28.0114 25.0067 27.7997C25.6881 27.5881 26.15 26.9775 26.15 26.2882V23.2353H30V20.0589H26.15V17.9412H30V14.7648H26.15V10.0001H22.85V21.3658L14.8388 10.6601Z' fill='white'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'usn',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Huobi BTC',\n symbol: 'HBTC',\n icon:\n \"data:image/svg+xml,%3C%3Fxml version='1.0' standalone='no'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' id='body_1' width='32' height='32'%3E%3Cg transform='matrix(1.3333334 0 0 1.3333334 0 0)'%3E%3Cimage x='0' y='0' xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA/tJREFUWIXtln9oVWUYxz/vOc67iWtNS9IkjcSui8RUsv40TbLfVoZE5R+li1JJioqYFlKI/bBQo+417A+pTSgkiH5p0ETIBIvaaosiRcRqYVM3t3Oe97zv0x+eO27jXt1kWoFfOJzDeX59npf3fc6B8/o/atNXOmKocgVnEmSt3vOvAaxr1stEdN5QAQwbbIAV7kO0dqgABrUCDR9rpVhdJqIO4KUdmjmnAEnCMon0Uom18/ltekXVSNafM4CVH+h4SVglkUdEDwELgoBHNu7RG846wIomb2xCXoQLpMdhRX8GrnWWwMDWV5v9mLMK0JuYx8QyX3ocNlZEtAWY3HPcE51w47z4rU9t1zM60qc9BYu36ExreQWArgTjNB5WEbaqMjE+AVZcZAzhyMBPA74ZUoBFeT/aJrwPZJAE0+sA9o2p9aPiKCYMg2dC53NrFlUdHWzhAQEk1mzGMAFVzFEBpxjDrrg3qg3CYOr6+pqDUT477tlc9iHgOqAW6AT2YGisXNp++HQAppzhttf9LcaYjwDoEUy3ABAYbtz+QvXOOHdVqLjVwNNAqXkQA+sM4ZpM/Q+uXJ2yG8cmZpVYEFFspyCxYkW7vHO7JV8XKK4RWN2v+ALgMNCUvl+tuEbJ15WtU9Iwe63WiWWWWLBdFht5rCgS66YP114YefVPAgsLrMBc4DmD+Q5oAT4vSrcw9R84gLXMEQtiQdLuJVa1lrfi3JQaoKHIvQK4tbK+fU2mvm1/EAY3pxDfFvk0pHEDAxDLlWIViRy2O0FEEdG25jdrDip6O1BdKk+Uy272zjdhOATcVWSvTuMGCJBQJYkpLo6I/pSap5cI2Zne64C7USabwPwB+CKfUnFlV6BDrCLdCTbWwtVd6KafuzXGfBnlspOAN4wJLq+sb9+lXh/tl79/XHkAm+hesWB7fd8KxHHfP0BHkWsvsCWztK0LuBd4V9X/GOWzNZycB8XqoIRKDqLEmU+d0yNBwmgTa+H1tAnzOg1cv7vItRl4OX1uArqA2iAIurzzyj+1mxIquQL7N5pem/CimLB4D4y3ksw0ATuAA6nrTcAvcX7KJOABjNlmCPLe6QxOzoiCDpjA7BgwAEDizIZ4+PBPxFI4hljxT2SWtFtgOVDo8IiqzgXGovq44n8D3QtMTO0KLM8sabOl6pQdxQCjFmuV6+h+jz9P3NmXTJl/bN8ln0W57ArgtaImfgdC4OKiFB5YWVnfvqFcjVMCAIy43xtz8NiDelwacH6SwhFVZketY1uiXHZOCnF1idCWtPgXp8p/WoCCLrrDmuO//jWdxF+jQEXIOz2tY52+PdXEzs4AnUXf19B8nQkr9pmHv++/Ec/rv6e/AQ/TFRmUSxQZAAAAAElFTkSuQmCC' width='24' height='24'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '0316eb71485b0ab14103307bf65a021042c6d380.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'PembRock',\n symbol: 'PEM',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj48cGF0aCBmaWxsPSIjMUUxRTFGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMTMuMiAxNzAuNDJhODMuNTEgODMuNTEgMCAwIDAgNzAuNy04Mi42IDgzLjUgODMuNSAwIDAgMC01Ljc4LTMwLjYxbDEzLjY4LTIzLjg3aC0yOC4wOGE4My4xIDgzLjEgMCAwIDAtNjMuMi0yOS4wNiA4My4xIDgzLjEgMCAwIDAtNjMuMiAyOS4wNkg4LjU4TDIyLjcgNTcuNzhhODMuNSA4My41IDAgMCAwLTUuNTUgMzAuMDUgODMuNTEgODMuNTEgMCAwIDAgNzAuNiA4Mi41N2wxMi43NyAyMi4xMSAxMi42Ny0yMi4xWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI0VBRUNFRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAwLjUzIDcuOTJBNzguNjYgNzguNjYgMCAwIDAgNDAuNjEgMzUuNmwtMS4xOCAxLjE3SDE2LjY1TDI4LjIzIDU3LjFsLS42OCAxLjc3Yy0zLjQgOC44Ny02LjA3IDE4LjEtNi4wNyAyOC4yIDAgMzkuNzcgMjkuMDMgNzMuMTQgNjYuOTQgNzlsMS44Ni4zIDEwLjM0IDE3Ljc5IDEwLjA2LTE3Ljc4IDEuODctLjNjMzcuOTUtNS44MSA2Ny4wMy0zOC44IDY3LjAzLTc4LjYxIDAtMTAuMy0yLjI0LTIwLjEzLTUuNzgtMjkuMTVsLS42OS0xLjc4IDExLjE4LTE5Ljc3aC0yMi42NWwtMS4xOC0xLjE3YTc4LjY2IDc4LjY2IDAgMCAwLTU5LjkzLTI3LjY3Wk0zNS44NCAyOS4wNEE4Ni40OCA4Ni40OCAwIDAgMSAxMDAuNTQgMGE4Ni40OCA4Ni40OCAwIDAgMSA2NC42OCAyOS4wNGgzMi42N0wxODEuODEgNTcuMmMzLjQ2IDkuNDMgNS42NSAxOS42MyA1LjY1IDMwLjI2IDAgNDMuMTItMzEuMDIgNzguOTUtNzEuODMgODYuMTRMMTAwLjY1IDIwMGwtMTUuMy0yNi40MmMtNDAuNzctNy4yMy03MS43NC00My40NC03MS43NC04Ni41MyAwLTEwLjQgMi42Mi0xOS45OSA1LjkzLTI5LjI1TDMgMjkuMDRoMzIuODRaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjRjY4MjFGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zMS44NSA0NS40MSA2OC43NSAxMjAuNDIgOC4wNi0xNC4xMi0yNy40Ny00OC4xM2gyNC4zTDcyLjMzIDQ1LjRIMzEuODVabTQ5LjE5IDAgNDQuMTUgNzcuMzIgNy42Ny0xMy40NC0yOC4xOC00OS4zNGg4LjM3bDIzLjk5IDQyLjAyTDE0NSA4OGwtMTYuMDItMjguMDVoMTYuNDJsLTQuNDMgNy43NiA3LjgxIDEzLjcgMjAuNTctMzZIODEuMDRaTTU2LjMgNTkuOTVsMTYuNjIgMjkuMTFoOC42N0w2NC45NyA1OS45NUg1Ni4zWk00NC4yIDg0LjZhNTYuNjUgNTYuNjUgMCAwIDAgMzEuMDUgNTQuMTJsNi4zMiAxMS4wMWE2NC40NSA2NC40NSAwIDAgMS00NS4yOS02MS43YzAtNC45Ny41Ni05LjggMS42LTE0LjQ0bDYuMzMgMTEuMDJabTc5LjY1LTQ3LjlhNTUuNDYgNTUuNDYgMCAwIDAtMjMuNjYtNS4yNyA1NS40NSA1NS40NSAwIDAgMC0yMy42NSA1LjI2SDYxLjVhNjMuMjYgNjMuMjYgMCAwIDEgMzguNy0xMy4xNmMxNC41NCAwIDI3Ljk1IDQuOSAzOC43IDEzLjE2aC0xNS4wNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNGNjgyMUYiIGQ9Ik00NC4xIDg4LjAyYzAtMS4xNC4wNC0yLjI4LjEtMy40MWwtNi4zLTExLjAyYTY1LjI2IDY1LjI2IDAgMCAwLTEuNiAxNC40MyA2NC40NSA2NC40NSAwIDAgMCA0NS4yOCA2MS43MWwtNi4zMS0xMWE1Ni42NSA1Ni42NSAwIDAgMS0zMS4xNS01MC43Wm0xMTMuMTIgMGMwLTEuMTQtLjItMi4yOC0uMjctMy40MWw2LjI1LTExLjAyYTY1LjMxIDY1LjMxIDAgMCAxIDEuODQgMTQuNDMgNjQuNDUgNjQuNDUgMCAwIDEtNDUuMjkgNjEuNzFsNi4zMS0xMWE1Ni42NSA1Ni42NSAwIDAgMCAzMS4xNi01MC43WiIvPjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.pembrock.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Atocha Coin',\n symbol: 'ATO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMzYuODggMTM2Ljg4Ij48Y2lyY2xlIGN4PSI2OC40NCIgY3k9IjY4LjQ0IiByPSI2OC40NCIgc3R5bGU9ImZpbGw6Z29sZCIgZGF0YS1uYW1lPSJMYXllciAyIi8+PGcgZGF0YS1uYW1lPSJMYXllciAxIj48cGF0aCBkPSJNNzEuNjUgNzkuNXYyNC40MWMwIDEuMjcuMjQgMS40OSAxLjQ3IDEuMTcgMS4wOC0uMjkgMi4xMy0uNjggMy4xOC0xYTExLjU4IDExLjU4IDAgMCAwIDEuNS0uNTljMS40MS0uNzIgMi44NC0xLjQgNC4xOC0yLjIyYTI1LjU5IDI1LjU5IDAgMCAwIDUuNTktNC42NGMxLjM2LTEuNTIgMi41NC0zLjIgMy43OC00LjgyLjMzLS40My4xOS0uNzItLjM1LS43MS0uODYgMC0xLjcyLjEzLTIuNTguMjItLjQ5IDAtMSAuMTMtMS40Ny4xOWEuMzkuMzkgMCAwIDEtLjQ4LS4zN2wtLjMzLTJhMS41NSAxLjU1IDAgMCAwLS4wNy0uNDIgNS43OCA1Ljc4IDAgMCAxLS4zMy0yLjEzYy0uMDktMS0uMjUtMS45NC0uMzQtMi45Mi0uMDctLjc4LjA1LS44NC44My0uOTQgMS41OS0uMTkgMy4xOC0uNDQgNC43Ny0uNjVsMi43OS0uMzcgMS4xNC0uMTUgNC44Ny0uNzRjLjI3IDAgLjU0LS4wNS44LS4wOWwyLjE4LS4zNWEyLjc1IDIuNzUgMCAwIDEgLjU1LS4wOC40Ny40NyAwIDAgMSAuMzUuMTcgOS44NSA5Ljg1IDAgMCAxIC40NCAxLjFjLjI0LjY5LjQ2IDEuMzkuNjkgMi4wOGEyLjY5IDIuNjkgMCAwIDEgLjA5LjI4Yy4xNy44My4zMyAxLjY2LjUxIDIuNDkuMjYgMS4xNC41NCAyLjI3LjgxIDMuNC4zMSAxLjMxLjYgMi42My45MyAzLjkzLjE5Ljc1LjQ1IDEuNDkuNjUgMi4yNHMuNDUgMS44MS42NiAyLjcxYS40LjQgMCAwIDEtLjE0LjM0IDMuMzkgMy4zOSAwIDAgMS0uODEuMzVjLTEuMzYuMzYtMi43Mi42OS00LjA5IDFsLTIuNTEuNjVjLS42My4xNy0uNzcuMDgtLjkyLS41NHEtLjM5LTEuNTktLjgyLTMuMTdjMC0uMTQtLjIxLS4zNC0uMzItLjM0YS45MS45MSAwIDAgMC0uNTkuMjRjLS4yOS4zMy0uNDguNzQtLjc1IDEuMDgtLjkzIDEuMTgtMS45IDIuMzMtMi44MyAzLjUxYTMwIDMwIDAgMCAxLTQuNiA0LjMgMzkuNCAzOS40IDAgMCAxLTMuNzQgMi41OCAyNi41OSAyNi41OSAwIDAgMS0yLjcxIDEuNTljLTEuMDguNTMtMi4yIDEtMy4zMiAxLjQycy0yIC43OC0zLjA3IDEuMTFjLS43MS4yMy0xLjQ1LjM3LTIuMTcuNTUtLjIuMDUtLjQuMTQtLjYuMjFhNC41MSA0LjUxIDAgMCAxLS40NC4xNmMtLjYxLjE1LTEuMjMuMy0xLjg1LjQzYS42Mi42MiAwIDAgMC0uNTMuN2MwIC43OCAwIDEuNTctLjA2IDIuMzRhNS4yOCA1LjI4IDAgMCAxLS44IDIuNDkgMy44OCAzLjg4IDAgMCAxLTEuNTIgMS4zMiAxMi41NyAxMi41NyAwIDAgMS0xLjU0LjcxIDEuMjQgMS4yNCAwIDAgMS0uNzguMDcgNS44NiA1Ljg2IDAgMCAxLTMuNzMtMi45MiA4IDggMCAwIDEtLjQtMi42MiAxMCAxMCAwIDAgMSAwLTEuMjguNjcuNjcgMCAwIDAtLjYxLS43NGMtLjc1LS4xNC0xLjUtLjI2LTIuMjQtLjQ0cy0xLjU3LS40NC0yLjM1LS42OGMtLjUtLjE1LTEtLjI4LTEuNS0uNDctMS42My0uNjEtMy4yOC0xLjE5LTQuODktMS44NmExNS4xMiAxNS4xMiAwIDAgMS0yLjI3LTEuMjljLTEuMzgtLjg5LTIuNzgtMS43Ny00LjEtMi43Ni0xLS43Ni0xLjkyLTEuNjgtMi44OC0yLjUyYTM2LjMzIDM2LjMzIDAgMCAxLTQuODEtNS42OGMtLjU4LS43Ny0xLjEtMS41OC0xLjY4LTIuMzVhLjgxLjgxIDAgMCAwLS42LS4yOWMtLjE2IDAtLjM3LjI1LS40My40My0uMzEgMS0uNTcgMi4wNy0uODYgMy4xMXEtLjE5LjctLjQgMS4zOWMtLjExLjM1LS4zOS4zNC0uNjYuMjgtLjU4LS4xMy0xLjE2LS4yOC0xLjczLS40My0xLjYyLS40Mi0zLjI0LS44NC00Ljg2LTEuMjhhNi41NSA2LjU1IDAgMCAxLTEtLjQuMzQuMzQgMCAwIDEtLjEyLS4zYy4yMS0xIC40MS0xLjkzLjY2LTIuODkuMzMtMS4yNC43Mi0yLjQ3IDEtMy43Mi4zOC0xLjQ4LjcyLTMgMS4wOC00LjQ3LjIyLS44OS40Ni0xLjc4LjY4LTIuNjguMTgtLjcyLjM0LTEuNDUuNTItMi4xN3MuMzItMS4yMy41Mi0xLjgzLjM4LS41NS44OC0uNDJhNi43NCA2Ljc0IDAgMCAwIC45Mi4xNWMxLjIuMTUgMi4zOS4yOCAzLjU5LjQ0bDUuNi43NSA0LjYxLjU3Yy44NS4xMSAxLjY5LjI1IDIuNTMuMzYuMyAwIC40Ny4xOS40NC41MXYuNDNjLS4xMyAxLjI0LS4yMiAyLjQ5LS40IDMuNzJzLS40NSAyLjM4LS42NiAzLjU4Yy0uMDYuMzQtLjIzLjQ3LS41NS40MmwtMi4xNC0uMzVhMi4yIDIuMiAwIDAgMC0uNDcgMGMtLjQgMC0uNTcuMjItLjQyLjU5YTcuOTIgNy45MiAwIDAgMCAuNzEgMS4zNCAyNC45NCAyNC45NCAwIDAgMCAzLjUyIDQuMjFjLjkxLjg4IDEuODIgMS43NiAyLjc4IDIuNTdhMTkgMTkgMCAwIDAgNC4yOSAyLjY5YzEuMTEuNTEgMi4yMiAxIDMuMzcgMS40N3MyLjM4LjggMy41OCAxLjE4YTIgMiAwIDAgMCAuNTEuMDUuNDcuNDcgMCAwIDAgLjUyLS40IDIuOTEgMi45MSAwIDAgMCAuMDctLjU1Yy4wNy0zLjYuMTgtNy4xOS4yLTEwLjc5LjA1LTguMzIuMDYtMTYuNjQuMDgtMjVWNTQuODVjMC0uOS0uMi0xLjA5LTEuMS0xLjA5aC0xNmExMy41MSAxMy41MSAwIDAgMS0yLjc4LS4zOSAxLjMxIDEuMzEgMCAwIDEtLjczLS43IDMuNDUgMy40NSAwIDAgMS0uMzMtMS4zNXYtNC4zMWEzLjQ1IDMuNDUgMCAwIDEgLjMxLTEuMSAxIDEgMCAwIDEgLjk1LS42M2MxLjMtLjExIDIuNi0uMjQgMy45MS0uMjYgMy42MyAwIDcuMjUgMCAxMC44OC0uMDVoMy44M2MuNjYgMCAxLS4yNyAxLS45M1YzMi41NmExLjQzIDEuNDMgMCAwIDAtLjc1LTEuMzQgMTAuNDkgMTAuNDkgMCAwIDEtMy41NS0zLjU2IDcuNTcgNy41NyAwIDAgMS0xLjI5LTMuN2MtLjA2LTEuMTkgMC0yLjM5IDAtMy41OEE4LjM1IDguMzUgMCAwIDEgNTguNDEgMTdhOS41IDkuNSAwIDAgMSA0LTMuNzYgNi41MyA2LjUzIDAgMCAxIDIuNjgtMWMuNzMtLjA4IDEuNDQtLjMgMi4xNy0uMzRhNi4xNiA2LjE2IDAgMCAxIDEuNDIuMjJjLjEzIDAgLjI1LjA4LjM3LjA5YTEwLjM1IDEwLjM1IDAgMCAxIDUgMi4zNSA3LjYyIDcuNjIgMCAwIDEgMi4xOCAyLjhjLjQ2LjkzLjggMS45MyAxLjE3IDIuOWEyLjEyIDIuMTIgMCAwIDEgLjEuNjd2MS40NWE4LjEyIDguMTIgMCAwIDEtLjcxIDMuNTUgMTIuMzEgMTIuMzEgMCAwIDEtMi4xNyAzLjYzIDUuOCA1LjggMCAwIDEtMS45MyAxLjU3IDEuNjggMS42OCAwIDAgMC0xLjA2IDEuNzR2MTEuMjZjMCAuNjIuMjkuODYuOTIuODhIODUuNjljMS43NiAwIDMuNTIuMTQgNS4yOC4xNmExLjgyIDEuODIgMCAwIDEgMS42OCAxLjg1djQuNjFhMi4zMyAyLjMzIDAgMCAxLS41NyAxLjQ0IDEuMzUgMS4zNSAwIDAgMS0uNy40MSAyMC4wNyAyMC4wNyAwIDAgMS01LjE4LjM0SDcyLjY3Yy0uOTEgMC0xLjA3LjE2LTEuMDcgMS4wNnEuMDUgMTIuMzQuMDUgMjQuNjJabS00LjQ5LTUxLjU1YTUuNzQgNS43NCAwIDAgMCA1LjcxLTUuNjQgNS44MiA1LjgyIDAgMCAwLTYuMDgtNS42M2MtMi41Mi4wNS01LjExIDIuODMtNS4wNyA1LjcxYTUuNiA1LjYgMCAwIDAgNS40NCA1LjU2WiIvPjxwYXRoIGQ9Ik04MC45NCA3Ny41YTIwIDIwIDAgMCAxLTIuNjktLjM3IDcuMzMgNy4zMyAwIDAgMS00LjM0LTMgNy43IDcuNyAwIDAgMS0xLTYuMjQgNy43OCA3Ljc4IDAgMCAxIDMuNzYtNSAxMC4yNSAxMC4yNSAwIDAgMSA2LjM4LTEuNTEgOC4xIDguMSAwIDAgMSA2LjE3IDMuNEE3LjY1IDcuNjUgMCAwIDEgOTAuNTcgNzFhNi40NiA2LjQ2IDAgMCAxLTIuMTQgMy40NiAxMi4yNyAxMi4yNyAwIDAgMS0zLjQ2IDIuMjEgMTAuNjQgMTAuNjQgMCAwIDEtNC4wMy44M1ptMy01LjY2YTYuNjkgNi42OSAwIDAgMCAwLS44NSAyMi41IDIyLjUgMCAwIDAtMS4xNy00Ljc3IDEuODMgMS44MyAwIDAgMC0xLjQ4LTEuMzFjLTEuMjYtLjEzLTEuOTIgMS0xLjggMi4xOWEyMy43MiAyMy43MiAwIDAgMCAuNjQgMy40IDEzLjA3IDEzLjA3IDAgMCAwIC44NiAyLjM5IDEuNDggMS40OCAwIDAgMCAyLjMzLjU2IDEuODEgMS44MSAwIDAgMCAuNjEtMS42M1pNNDMuOTQgNzMuMzFhMy44NyAzLjg3IDAgMCAxIDItMy42QTguOTEgOC45MSAwIDAgMSA1MSA2OC4zOWE1LjU5IDUuNTkgMCAwIDAgLjYgMCAxIDEgMCAwIDAgMS0xIDEwIDEwIDAgMCAwLS4yNy0yLjU2IDEuMzMgMS4zMyAwIDAgMC0yLjM0LS41NGMtLjU3LjU1LTEgMS4yMS0xLjU3IDEuNzlhMi41NiAyLjU2IDAgMCAxLTIuMjIuOTQgMS40NyAxLjQ3IDAgMCAxLTEuMjEtMiAzLjkzIDMuOTMgMCAwIDEgMi0yLjA5IDEzLjI2IDEzLjI2IDAgMCAxIDIuNTctMS4wOCAxMC4zMSAxMC4zMSAwIDAgMSA1LjEzLS4yNyA3LjM1IDcuMzUgMCAwIDEgMi45MyAxLjM2QTMuMzggMy4zOCAwIDAgMSA1OSA2NS4zOWMuMDcgMS4yNy4wOCAyLjU0LjE1IDMuODEuMDYgMSAuMTYgMiAuMjYgM2ExLjIzIDEuMjMgMCAwIDAgLjg4IDEuMDVjLjY3LjI3Ljc0LjQ2LjU3IDEuMTRhMy44IDMuOCAwIDAgMS0yIDIuMzUgNC4zOCA0LjM4IDAgMCAxLTMuNjguNDUgMy4zIDMuMyAwIDAgMS0xLjE1LS42OWMtLjc0LS42OC0uODItLjc1LTEuNjItLjE5YTYuMjEgNi4yMSAwIDAgMS00LjY5IDEgNC4yMSA0LjIxIDAgMCAxLTMuMS0xLjgxIDMuMSAzLjEgMCAwIDEtLjY4LTIuMTlabTcuNy0yLjkxYTIgMiAwIDAgMC0xLjE3IDMuNDMgMS4yMiAxLjIyIDAgMCAwIDEuNzQtLjI0IDIuOSAyLjkgMCAwIDAgLjI2LTIuNjIuNzYuNzYgMCAwIDAtLjgyLS41N1oiLz48L2c+PC9zdmc+',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'atocha-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'SeatlabNFT',\n symbol: 'SEAT',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' x='0px' y='0px' width='32px' height='32px' viewBox='0 0 32 32' style='enable-background:new 0 0 32 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23050035;%7D .st1%7Bfill:url(%23SVGID_1_);%7D%0A%3C/style%3E%3Cg id='Layer_1'%3E%3Ccircle class='st0' cx='16' cy='16' r='16'/%3E%3C/g%3E%3Cg id='Isolation_Mode'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='6.2375' y1='16' x2='25.7625' y2='16'%3E%3Cstop offset='0' style='stop-color:%2300C2FF'/%3E%3Cstop offset='1' style='stop-color:%230067FF'/%3E%3C/linearGradient%3E%3Cpath class='st1' d='M14,6.1c-0.3,0-0.5,0.1-0.8,0.2L8.1,9.4L7.8,9.6L7.2,10c-0.5,0.3-0.9,0.6-0.9,1.7v4.1c0,0.9,0.3,1.6,0.9,1.9 l6.2,3.8c1,0.6,2.3-0.1,2.3-1.3v-2.9c0-0.7-0.4-1.4-1-1.8l-2.9-1.8l3-1.9c0.5-0.3,0.8-0.9,0.8-1.5V7.6C15.6,6.7,14.8,6.1,14,6.1z M14.7,10.4c0,0.3-0.2,0.6-0.4,0.8l-3.4,2.1l-1.8-1.1c-0.5-0.3-0.8-0.5-1.1-0.8c-0.3-0.3-0.2-0.8,0.2-1c0,0,0,0,0,0L13.7,7 C13.8,7,13.9,6.9,14,6.9c0.3,0,0.7,0.3,0.7,0.7V10.4z M24.9,14.3l-6.2-3.8c-1-0.6-2.3,0.1-2.3,1.3v2.9c0,0.7,0.4,1.4,1,1.8l2.9,1.8 l-3,1.9c-0.5,0.3-0.8,0.9-0.8,1.5v2.8c0,0.9,0.8,1.6,1.6,1.6c0.3,0,0.5-0.1,0.8-0.2l5.1-3.1l0.4-0.2l0.6-0.4 c0.5-0.3,0.9-0.6,0.9-1.7v-4.1C25.8,15.3,25.4,14.6,24.9,14.3z M23.8,21.6C23.8,21.6,23.8,21.6,23.8,21.6L18.3,25 c-0.1,0.1-0.2,0.1-0.4,0.1c-0.3,0-0.7-0.3-0.7-0.7v-2.8c0-0.3,0.2-0.6,0.4-0.8l3.4-2.1l1.8,1.1c0.5,0.3,0.8,0.5,1.1,0.8 C24.3,20.9,24.2,21.4,23.8,21.6z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 5,\n id: 'token.stlb.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Burrow Token',\n symbol: 'BRRR',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.burrow.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'FUSOTAO',\n symbol: 'TAO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTU1LjQxIDI5LjYzNS03LjI5NiA2LjE0N2ExLjY1OSAxLjY1OSAwIDAgMS0uNjc1IDIuMzlsMS44NDggOS41NDZjLjgwNS0uMjA4IDEuNTM2LS43MDIgMi4wODktMS41MzlhMTIuODE2IDEyLjgxNiAwIDAgMCAxLjk4Mi01LjI4OWMuMTctMS4yNTEuNTY0LTIuNDczIDEuMTU2LTMuNTg2YTEyLjgzMyAxMi44MzMgMCAwIDAgMS40ODItNS40NjljLjAzNS0uODYzLS4xODYtMS42LS41ODctMi4yeiIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGQ9Ik00NS4zNDIgMzUuOTA2YTEuNjM3IDEuNjM3IDAgMCAxIDIuMTgzLS42M2w3LjM3OC02LjE5M2MtMS4yODMtMS4xOTMtMy40NTktMS41NDctNS40NDUtLjkwM2wtMTIuNzQyIDQuMTM1Yy0uMzEuMS0uNTUzLjI5Ny0uNzE2LjU0Mmw5LjM0MiAzLjA0OXoiIGZpbGw9InVybCgjYikiLz48cGF0aCBkPSJNNDMuODkyIDQ1LjM3YzEuMTQ5IDEuNTkyIDIuOTQ3IDIuNTcyIDQuNTk5IDIuNTI0bC0xLjg0NC05LjQ4N2ExLjY0NCAxLjY0NCAwIDAgMS0xLjUzOC0xLjY4bC05LjM2NC0zLjA1NWMuMDA0LjI2OC4wODcuNTQuMjYuNzhsNy44ODcgMTAuOTE5eiIgZmlsbD0idXJsKCNjKSIvPjxwYXRoIGQ9Im00MS40MSA1My4yMjMtOC4wNTYtNS4wOTJhMS42MzEgMS42MzEgMCAwIDEtMi40NjQuMDkxbC04LjQzOCA0LjcyMWMuNDQ0LjcwOCAxLjEzNiAxLjI1NiAyLjA5NyAxLjUyNyAxLjc5NC41MDYgMy43NC42MDMgNS42MDUuMjY1YTEwLjUzNiAxMC41MzYgMCAwIDEgMy43NDIgMGMxLjg3LjMzOSAzLjgyMS4yNCA1LjYxOS0uMjcuODI2LS4yMzMgMS40NTMtLjY3MyAxLjg5NS0xLjI0MnoiIGZpbGw9InVybCgjZCkiLz48cGF0aCBkPSJNMzIuMzg5IDQ1LjQzOGExLjY0NiAxLjY0NiAwIDAgMSAxLjI3IDEuODlsOC4xNDUgNS4xMzRjLjczNC0xLjU5NC4zOTctMy43ODItLjgyNy01LjQ4TDMzLjEyMyAzNi4wOWExLjM1NCAxLjM1NCAwIDAgMC0uNzM0LS41MTZ2OS44NjR6IiBmaWxsPSJ1cmwoI2UpIi8+PHBhdGggZD0iTTIyLjk3IDQ3LjAxN2MtMS4xNTEgMS41ODgtMS41MjQgMy42MDgtLjk2OSA1LjE3bDguNDItNC42OTJhMS42NDggMS42NDggMCAwIDEgMS4xMTctMS45ODd2LTkuODg0Yy0uMjUzLjA4Ny0uNDg1LjI1LS42NTkuNDlsLTcuOTA4IDEwLjkwM3oiIGZpbGw9InVybCgjZikiLz48cGF0aCBkPSJtMTUuODg2IDM1Ljc4Mi03LjI5NS02LjE0N2MtLjQwMS42LS42MjIgMS4zMzctLjU4NyAyLjJhMTIuODMgMTIuODMgMCAwIDAgMS40ODIgNS40NjkgMTAuNzUxIDEwLjc1MSAwIDAgMSAxLjE1NiAzLjU4NmMuMjU4IDEuODkyLjk1IDMuNzI3IDEuOTgyIDUuMjkuNTUzLjgzNiAxLjI4NCAxLjMzIDIuMDg5IDEuNTM4bDEuODQ4LTkuNTQ2YTEuNjU5IDEuNjU5IDAgMCAxLS42NzUtMi4zOXoiIGZpbGw9InVybCgjZykiLz48cGF0aCBkPSJNMTUuNTY4IDQ3Ljg1NmMxLjY0OS4wNDggMy40NDUtLjkzMiA0LjU5Mi0yLjUyMWw3Ljg3NS0xMC45MDhhMS4zNiAxLjM2IDAgMCAwIC4yNi0uNzhsLTkuMzUgMy4wNTJhMS42NDcgMS42NDcgMCAwIDEtMS41MzYgMS42NzlsLTEuODQgOS40Nzh6IiBmaWxsPSJ1cmwoI2gpIi8+PHBhdGggZD0iTTE2Ljc0NSAzNS4xOTNhMS42NCAxLjY0IDAgMCAxIDEuOTI3Ljc0bDkuMzU2LTMuMDUyYTEuMzU3IDEuMzU3IDAgMCAwLS43MTctLjU0M2wtMTIuNzYxLTQuMTRjLTEuOTktLjY0NC00LjE2OC0uMjktNS40NTMuOTA1bDcuMzkgNi4yYy4wOC0uMDQ0LjE2Ny0uMDguMjU4LS4xMXoiIGZpbGw9InVybCgjaSkiLz48cGF0aCBkPSJtNDAuNTcxIDE4LjA5LTMuNTQ2LTguODkyYy42ODktLjE5OCAxLjQ1My0uMTgyIDIuMjU4LjExOGExMi42NSAxMi42NSAwIDAgMSA0LjcwMyAzLjExIDEwLjYxNCAxMC42MTQgMCAwIDAgMy4wMjcgMi4yMTYgMTIuNjc2IDEyLjY3NiAwIDAgMSA0LjM4IDMuNTM1Yy42MTkuNzg4Ljg2IDEuNjQxLjgwNiAyLjQ3N2wtOS41OC0xLjE3OWExLjY0OSAxLjY0OSAwIDAgMC0uNjYyLTEuMTI2IDEuNjI2IDEuNjI2IDAgMCAwLTEuMzg2LS4yNnoiIGZpbGw9InVybCgjaikiLz48cGF0aCBkPSJNMzkuNzY0IDE4Ljc5Yy0uNDYzLjY0LS40IDEuNS4xMDQgMi4wNjZsLTUuNzczIDcuOThhMS4zNjMgMS4zNjMgMCAwIDEtLjI5Mi0uODVsLjAyMS0xMy40NDljLjAwNC0yLjA5NiAxLjAxMi00LjA2NCAyLjUzOC00LjkybDMuNTg1IDguOTZhMS42NiAxLjY2IDAgMCAwLS4xODMuMjEzeiIgZmlsbD0idXJsKCNrKSIvPjxwYXRoIGQ9Ik01Mi4xNiAyMS41NDhjLS40NjUgMS41OTEtMS45NSAzLjAwNi0zLjgxMiAzLjYxbC0xMi43ODIgNC4xNTVhMS4zNTIgMS4zNTIgMCAwIDEtLjgyLjAwOGw1Ljc4OC03Ljk5NmExLjY0IDEuNjQgMCAwIDAgMi4wNjctLjk0OWw5LjU1OSAxLjE3MnoiIGZpbGw9InVybCgjbCkiLz48cGF0aCBkPSJtMjcuNDYgOS4xOTgtMy41NDcgOC44OTJhMS42MjYgMS42MjYgMCAwIDAtMS4zODYuMjYgMS42NSAxLjY1IDAgMCAwLS42NjIgMS4xMjVsLTkuNTggMS4xNzljLS4wNTMtLjgzNi4xODctMS42OS44MDYtMi40NzdhMTIuNjc3IDEyLjY3NyAwIDAgMSA0LjM4LTMuNTM0IDEwLjYxNiAxMC42MTYgMCAwIDAgMy4wMjctMi4yMTcgMTIuNjUgMTIuNjUgMCAwIDEgNC43MDMtMy4xMWMuODA1LS4zIDEuNTY5LS4zMTYgMi4yNTgtLjExOHoiIGZpbGw9InVybCgjbSkiLz48cGF0aCBkPSJNMTYuMTk1IDI1LjE0M2MtMS44Ni0uNjA1LTMuMzQyLTIuMDE3LTMuODA2LTMuNjA3bDkuNTQ0LTEuMTdhMS42MzYgMS42MzYgMCAwIDAgMi4wNjQuOTQ4bDUuNzggNy45ODdhMS4zNDkgMS4zNDkgMCAwIDEtLjgxOS0uMDA4bC0xMi43NjMtNC4xNXoiIGZpbGw9InVybCgjbikiLz48cGF0aCBkPSJNMjQuNjM5IDIwLjg2N2ExLjY1NCAxLjY1NCAwIDAgMC0uMDc5LTIuMjgxbDMuNTktOC45N2MxLjUzLjg1NyAyLjUzOSAyLjgyOCAyLjU0MiA0LjkyNmwuMDIxIDEzLjQ2MmMuMDAxLjMyNy0uMTEuNjItLjI5Mi44NTJsLTUuNzgyLTcuOTg5eiIgZmlsbD0idXJsKCNvKSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iaCIgeDE9IjgiIHkxPSI0My40NjciIHgyPSIxNi4zOTkiIHkyPSIzNy45MzgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjOUEwQTBFIi8+PHN0b3Agb2Zmc2V0PSIuODY5IiBzdG9wLWNvbG9yPSIjREExODFGIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSI0NS45MjYiIHkxPSIzNi4wNTMiIHgyPSI1MS4wNjgiIHkyPSI0My41NjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii40NjQiIHN0b3AtY29sb3I9IiNFQTMwMkEiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNDNTE1MUIiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYyIgeDE9IjQ1LjkyNiIgeTE9IjM2LjA1MyIgeDI9IjUxLjA2OCIgeTI9IjQzLjU2MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjQ2NCIgc3RvcC1jb2xvcj0iI0VBMzAyQSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M1MTUxQiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJkIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJlIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJmIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJnIiB4MT0iOCIgeTE9IjQzLjQ2NyIgeDI9IjE2LjM5OSIgeTI9IjM3LjkzOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM5QTBBMEUiLz48c3RvcCBvZmZzZXQ9Ii44NjkiIHN0b3AtY29sb3I9IiNEQTE4MUYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjQ1LjkyNiIgeTE9IjM2LjA1MyIgeDI9IjUxLjA2OCIgeTI9IjQzLjU2MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjQ2NCIgc3RvcC1jb2xvcj0iI0VBMzAyQSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M1MTUxQiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJpIiB4MT0iOCIgeTE9IjQzLjQ2NyIgeDI9IjE2LjM5OSIgeTI9IjM3LjkzOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM5QTBBMEUiLz48c3RvcCBvZmZzZXQ9Ii44NjkiIHN0b3AtY29sb3I9IiNEQTE4MUYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iaiIgeDE9IjQyLjk2MyIgeTE9IjEyLjIzIiB4Mj0iMzMuODY1IiB5Mj0iMjcuMDUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjRjlCMTk4Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRUUxQzI1Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImsiIHgxPSI0Mi45NjMiIHkxPSIxMi4yMyIgeDI9IjMzLjg2NSIgeTI9IjI3LjA1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI0Y5QjE5OCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0VFMUMyNSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsIiB4MT0iNDIuOTYzIiB5MT0iMTIuMjMiIHgyPSIzMy44NjUiIHkyPSIyNy4wNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNGOUIxOTgiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibSIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibiIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibyIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'fusotao-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'NearX',\n symbol: 'NearX',\n icon:\n \"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3847L21.3848 17.1421L19.3669 15.1243C18.5576 17.0302 17.0303 18.5576 15.1243 19.3669L17.1421 21.3847ZM9.4329 19.5792C7.45318 18.9089 5.82112 17.4847 4.87847 15.6484L3.24263 17.2842L7.48527 21.5269L9.4329 19.5792ZM4.63307 8.87568C5.4424 6.96973 6.96977 5.44237 8.87573 4.63305L7.24263 2.99995L2.99999 7.24259L4.63307 8.87568ZM15.6484 4.87847L17.3848 3.14209L21.6274 7.38473L19.5792 9.4329C18.9089 7.45318 17.4847 5.82112 15.6484 4.87847Z' fill='%232FA8AF'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E%0A\",\n reference: 'https://near.staderlabs.com',\n reference_hash: null,\n decimals: 24,\n id: 'v2-nearx.stader-labs.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'DISCOVOL TOKEN',\n symbol: 'DISC',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLlm77lsYJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgMTQxLjcgMTQxLjciIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE0MS43IDE0MS43IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnN0MHtmaWxsOiNmOTcxMTZ9PC9zdHlsZT48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDYuMSAxOC43djEwNS42czIxLjMtNS41IDMzLjEtMjljMCAwIDEyLjctMjIuMi0uOS00OS43IDAgMC0xMC4xLTIwLjktMzIuMi0yNi45eiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMDUuNyA5LjRjMzEuMSAxOC4zIDM0LjUgNDguNCAzNC41IDQ4LjQgNi40IDM3LjktMTcgNjAuMy0xNyA2MC4zLTMxLjQgMzQuNS03My40IDIwLjMtNzMuNCAyMC4zIDMwLjYtOS4zIDQxLjktMzUuMSA0MS45LTM1LjEgMTYuNi0zNS41IDAtNjMuMiAwLTYzLjJDNzcgOS43IDQ3LjMgMy45IDQ3LjMgMy45YzMyLjQtMTEuMyA1OC40IDUuNSA1OC40IDUuNXptNyAxMS41UzExMS4xIDM4IDk0LjcgMzhjMCAwIDE2IDIuOCAxNy41IDE4LjggMCAwIDEuNC0xNy41IDE4LjItMTguMy0uMSAwLTE4LjUtMS41LTE3LjctMTcuNnpNMjUuNiAxNS45aDUuOXYxMTAuOEgyN1M4IDExMiAyLjIgODkuMmMwIDAtNy43LTI2LjIgNS01MC40LjEuMSA5LjUtMTcgMTguNC0yMi45eiIvPjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 14,\n id: 'discovol-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Stader',\n symbol: 'SD',\n icon:\n \"data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M128 256C198.692 256 256 198.692 256 128C256 57.3075 198.692 0 128 0C57.3075 0 0 57.3075 0 128C0 198.692 57.3075 256 128 256Z' fill='%236259D4'/%3E%3Cpath d='M126.852 191.869L126.822 181.088L153.98 165.105L153.886 133.025L163.667 127.882L164.056 170.723L126.852 191.869Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M153.98 165.105L126.822 181.088L126.852 191.869L164.056 170.723L163.667 127.882L153.886 133.025L153.98 165.105ZM154.207 133.218L154.3 165.104C154.301 165.218 154.241 165.323 154.143 165.381L127.143 181.271L127.171 191.32L163.735 170.538L163.352 128.41L154.207 133.218Z' fill='%236259D4'/%3E%3Cpath d='M134.785 112.611L145.906 106.314L173.184 123.396L173.334 175.037L164.063 170.734L163.673 127.894L134.785 112.611Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M163.673 127.894L164.063 170.734L173.334 175.037L173.184 123.396L145.906 106.314L134.785 112.611L163.673 127.894ZM135.451 112.601L163.823 127.611C163.927 127.666 163.992 127.773 163.993 127.891L164.381 170.529L173.013 174.535L172.865 123.574L145.898 106.687L135.451 112.601Z' fill='%236259D4'/%3E%3Cpath d='M126.443 53.3335L173.06 79.8728L173.094 90.9255L126.49 64.9081L126.443 53.3335Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M126.443 53.3335L126.49 64.9081L173.094 90.9255L173.06 79.8728L126.443 53.3335ZM126.766 53.8852L126.81 64.7198L172.773 90.3795L172.741 80.0592L126.766 53.8852Z' fill='%236259D4'/%3E%3Cpath d='M80.1584 134.322L80 80.4074L126.432 53.3335L126.48 64.9081L88.7187 86.0335L88.5731 128.106L80.1584 134.322Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M88.7187 86.0335L126.48 64.9081L126.432 53.3335L80 80.4074L80.1584 134.322L88.5731 128.106L88.7187 86.0335ZM88.2536 127.944L88.3987 86.0324C88.3991 85.9169 88.4617 85.8106 88.5624 85.7542L126.159 64.7209L126.115 53.8892L80.3205 80.5909L80.4766 133.689L88.2536 127.944Z' fill='%236259D4'/%3E%3Cpath d='M107.511 149.374L80.1562 134.324L88.5709 128.108L135.44 154.885L107.58 170.601L98.2445 175.794L126.85 191.879L164.054 170.733L173.325 175.035L126.619 202.66L80.2804 176.371L117.215 154.711L107.511 149.374Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M107.58 170.601L135.44 154.885L88.5709 128.108L80.1562 134.324L117.215 154.711L80.2804 176.371L126.619 202.66L173.325 175.035L164.054 170.733L126.85 191.879L98.2445 175.794L107.58 170.601ZM164.069 171.092L127.008 192.157C126.91 192.213 126.791 192.213 126.693 192.158L98.0877 176.073C97.9866 176.016 97.9242 175.909 97.9245 175.794C97.9248 175.678 97.9877 175.571 98.0889 175.515L107.423 170.322L134.792 154.884L88.5932 128.49L80.7483 134.285L107.666 149.093L117.369 154.431C117.47 154.486 117.533 154.592 117.535 154.707C117.536 154.822 117.476 154.929 117.377 154.987L80.9208 176.367L126.615 202.29L172.639 175.069L164.069 171.092Z' fill='%236259D4'/%3E%3Cpath d='M88.7207 86.0458L126.482 64.9204L173.085 90.9378L145.902 106.323L134.781 112.619L163.669 127.902L153.888 133.044L116.808 112.11L153.764 90.4499L144.947 85.4178L126.512 74.8955L99.0623 90.6069L88.7207 86.0458Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M173.085 90.9378L126.482 64.9204L88.7207 86.0458L99.0623 90.6069L126.512 74.8955L153.764 90.4499L116.808 112.11L153.888 133.044L163.669 127.902L134.781 112.619L173.085 90.9378ZM162.983 127.901L134.631 112.902C134.528 112.847 134.462 112.741 134.461 112.624C134.459 112.507 134.521 112.398 134.623 112.341L145.744 106.044L172.432 90.9397L126.482 65.287L89.4368 86.0119L99.0436 90.2489L126.353 74.6177C126.451 74.5614 126.572 74.5614 126.67 74.6175L153.923 90.172C154.022 90.2286 154.083 90.3338 154.084 90.4481C154.085 90.5623 154.024 90.6682 153.926 90.726L117.45 112.105L153.894 132.68L162.983 127.901Z' fill='%236259D4'/%3E%3Cpath d='M98.252 175.789L107.587 170.596L126.827 181.093L126.857 191.874L98.252 175.789Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M98.252 175.789L126.857 191.874L126.827 181.093L107.587 170.596L98.252 175.789ZM98.9075 175.791L126.536 191.326L126.508 181.283L107.589 170.962L98.9075 175.791Z' fill='%236259D4'/%3E%3Cpath d='M80.2804 176.368L80.2461 164.785L107.511 149.371L117.215 154.708L80.2804 176.368Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M80.2804 176.368L117.215 154.708L107.511 149.371L80.2461 164.785L80.2804 176.368ZM80.5987 175.81L116.567 154.717L107.513 149.737L80.5666 164.971L80.5987 175.81Z' fill='%236259D4'/%3E%3Cpath d='M116.809 112.109L116.92 101.073L144.947 85.417L153.764 90.4491L116.809 112.109Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M116.809 112.109L153.764 90.4491L144.947 85.417L116.92 101.073L116.809 112.109ZM117.134 111.547L153.125 90.4528L144.946 85.7845L117.238 101.262L117.134 111.547Z' fill='%236259D4'/%3E%3Cpath d='M88.5723 128.087L88.7179 86.0142L99.0595 90.5753L99.1537 123.589L135.407 143.582L135.442 154.864L88.5723 128.087Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M99.1537 123.589L99.0595 90.5753L88.7179 86.0142L88.5723 128.087L135.442 154.864L135.407 143.582L99.1537 123.589ZM135.088 143.771L98.9992 123.869C98.8974 123.813 98.8341 123.706 98.8337 123.59L98.7401 90.7841L89.0362 86.5043L88.8929 127.901L135.12 154.311L135.088 143.771Z' fill='%236259D4'/%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '30d20208d987713f46dfd34ef128bb16c404d10f.factory.bridge.near',\n },\n {\n spec: 'ft-1.0',\n name: 'SWEAT',\n symbol: 'SWEAT',\n icon:\n \"data:image/svg+xml,%3Csvg viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100' height='100' rx='50' fill='%23FF0D75'/%3E%3Cg clip-path='url(%23clip0_283_2788)'%3E%3Cpath d='M39.4653 77.5455L19.0089 40.02L35.5411 22.2805L55.9975 59.806L39.4653 77.5455Z' stroke='white' stroke-width='10'/%3E%3Cpath d='M66.0253 77.8531L45.569 40.3276L62.1012 22.5882L82.5576 60.1136L66.0253 77.8531Z' stroke='white' stroke-width='10'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_283_2788'%3E%3Crect width='100' height='56' fill='white' transform='translate(0 22)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.sweat',\n },\n {\n spec: 'ft-1.0.0',\n name: 'APYSwap',\n symbol: 'APYS',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iLTEwIC0xMCAxMjAgMTIwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTQ2OF81MTk1KSI+CjxwYXRoIGQ9Ik0zOC40MzUzIDEyLjY4NUw3NC41ODY5IDc3Ljg2NzdMOTguOTk5OSA3OC41NjYzTDYyLjY3NDkgMTMuMzc4N0wzOC40MzUzIDEyLjY4NVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8xNDY4XzUxOTUpIi8+CjxwYXRoIGQ9Ik0xMi43NjcyIDU1LjQwNzFMODYuOTM2NiA1Ni42MzI2TDk4Ljk5ODIgNzcuODM0OEwwLjAxMTcwNDYgNzYuMTk5MkwxMi43NjcyIDU1LjQwNzFaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfMTQ2OF81MTk1KSIvPgo8cGF0aCBkPSJNNjIuMjQxMSAxMy4wOTRMMjMuODY5OCA3Ny4wODU2TC0wLjUxMDgwNSA3Ni45MTIyTDM3Ljg2NzMgMTIuOTIwN0w2Mi4yNDExIDEzLjA5NFoiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8xNDY4XzUxOTUpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xNDY4XzUxOTUiIHgxPSI1NS45Njc3IiB5MT0iMjMuODc4MSIgeDI9Ijg1LjQ4MjUiIHkyPSI3Ny4wMTI2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwOEFFRUEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMkFGNTk4Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xNDY4XzUxOTUiIHgxPSIyOS40ODcxIiB5MT0iNjcuODQzIiB4Mj0iNjguOTYzNiIgeTI9IjY4LjgwMzIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzA4QUVFQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyQUY1OTgiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDJfbGluZWFyXzE0NjhfNTE5NSIgeDE9IjUxLjk4MzUiIHkxPSIzLjEzMzQ1IiB4Mj0iMzEuMjQxOCIgeTI9IjM2LjE3MzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzA4QUVFQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyQUY1OTgiLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xNDY4XzUxOTUiPgo8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'apys.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tether USD',\n symbol: 'USDt',\n icon:\n \"data:image/svg+xml,%3Csvg width='111' height='90' viewBox='0 0 111 90' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.4825 0.862305H88.0496C89.5663 0.862305 90.9675 1.64827 91.7239 2.92338L110.244 34.1419C111.204 35.7609 110.919 37.8043 109.549 39.1171L58.5729 87.9703C56.9216 89.5528 54.2652 89.5528 52.6139 87.9703L1.70699 39.1831C0.305262 37.8398 0.0427812 35.7367 1.07354 34.1077L20.8696 2.82322C21.6406 1.60483 23.0087 0.862305 24.4825 0.862305ZM79.8419 14.8003V23.5597H61.7343V29.6329C74.4518 30.2819 83.9934 32.9475 84.0642 36.1425L84.0638 42.803C83.993 45.998 74.4518 48.6635 61.7343 49.3125V64.2168H49.7105V49.3125C36.9929 48.6635 27.4513 45.998 27.3805 42.803L27.381 36.1425C27.4517 32.9475 36.9929 30.2819 49.7105 29.6329V23.5597H31.6028V14.8003H79.8419ZM55.7224 44.7367C69.2943 44.7367 80.6382 42.4827 83.4143 39.4727C81.0601 36.9202 72.5448 34.9114 61.7343 34.3597V40.7183C59.7966 40.8172 57.7852 40.8693 55.7224 40.8693C53.6595 40.8693 51.6481 40.8172 49.7105 40.7183V34.3597C38.8999 34.9114 30.3846 36.9202 28.0304 39.4727C30.8066 42.4827 42.1504 44.7367 55.7224 44.7367Z' fill='%23009393'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'usdt.tether-token.near',\n },\n];\n\nexport function getDefaultTokenList(\n env: string | undefined = process.env.NEAR_ENV ||\n process.env.REACT_APP_REF_SDK_ENV\n) {\n switch (env) {\n case 'mainnet':\n return DefaultMainnetTokenList;\n case 'testnet':\n return DefaultTestnetTokenList;\n default:\n return DefaultMainnetTokenList;\n }\n}\n","import { TokenMetadata, Transaction } from '../types';\n\nimport {\n priceToPoint,\n toNonDivisibleNumber,\n toPrecision,\n registerAccountOnToken,\n} from '../utils';\nimport { ONE_YOCTO_NEAR, WRAP_NEAR_CONTRACT_ID, config } from '../constant';\nimport { DCLSwapGetStorageBalance } from '../ref';\nimport { DCL_POOL_FEE_LIST, getDCLPoolId } from './dcl-pool';\nimport {\n nearDepositTransaction,\n ftGetStorageBalance,\n refDCLSwapViewFunction,\n} from '../ref';\nimport _ from 'lodash';\nimport { toReadableNumber, percentLess } from '../utils';\nimport { NoPoolOnThisPair, SlippageError } from '../error';\n\ninterface SwapInfo {\n tokenA: TokenMetadata;\n tokenB: TokenMetadata;\n amountA: string;\n}\n\ninterface DCLSwapProps {\n swapInfo: SwapInfo;\n Swap?: {\n pool_ids: string[];\n min_output_amount: string;\n };\n SwapByOutput?: {\n pool_ids: string[];\n output_amount: string;\n };\n LimitOrderWithSwap?: {\n pool_id: string;\n output_amount: string;\n };\n AccountId: string;\n}\nexport const DCL_POOL_SPLITER = '|';\n\nexport const DCLSwap = async ({\n Swap,\n SwapByOutput,\n LimitOrderWithSwap,\n AccountId,\n swapInfo,\n}: DCLSwapProps) => {\n const transactions: Transaction[] = [];\n\n const { tokenA, tokenB, amountA } = swapInfo;\n\n if (Swap) {\n const pool_ids = Swap.pool_ids;\n\n const tokenRegistered = await ftGetStorageBalance(\n tokenB.id,\n AccountId\n ).catch(() => {\n throw new Error(`${tokenB.id} doesn't exist.`);\n });\n\n if (tokenRegistered === null) {\n transactions.push({\n receiverId: tokenB.id,\n functionCalls: [registerAccountOnToken(AccountId)],\n });\n }\n\n const output_token = tokenB.id;\n const min_output_amount = toPrecision(Swap.min_output_amount, 0);\n\n const msg = JSON.stringify({\n Swap: {\n pool_ids,\n output_token,\n min_output_amount,\n },\n });\n\n transactions.push({\n receiverId: tokenA.id,\n functionCalls: [\n {\n methodName: 'ft_transfer_call',\n args: {\n receiver_id: config.REF_DCL_SWAP_CONTRACT_ID,\n amount: toNonDivisibleNumber(tokenA.decimals, amountA),\n msg,\n },\n gas: '180000000000000',\n amount: ONE_YOCTO_NEAR,\n },\n ],\n });\n } else if (SwapByOutput) {\n const pool_ids = SwapByOutput.pool_ids;\n const output_token = tokenB.id;\n const output_amount = toNonDivisibleNumber(\n tokenB.decimals,\n SwapByOutput.output_amount\n );\n const msg = JSON.stringify({\n SwapByOutput: {\n pool_ids,\n output_token,\n output_amount,\n },\n });\n const tokenRegistered = await ftGetStorageBalance(\n tokenB.id,\n AccountId\n ).catch(() => {\n throw new Error(`${tokenB.id} doesn't exist.`);\n });\n\n if (tokenRegistered === null) {\n transactions.push({\n receiverId: tokenB.id,\n functionCalls: [registerAccountOnToken(AccountId)],\n });\n }\n\n transactions.push({\n receiverId: tokenA.id,\n functionCalls: [\n {\n methodName: 'ft_transfer_call',\n args: {\n receiver_id: config.REF_DCL_SWAP_CONTRACT_ID,\n amount: toNonDivisibleNumber(tokenA.decimals, amountA),\n msg,\n },\n gas: '180000000000000',\n amount: ONE_YOCTO_NEAR,\n },\n ],\n });\n } else if (LimitOrderWithSwap) {\n const pool_id = LimitOrderWithSwap.pool_id;\n\n const fee = Number(pool_id.split(DCL_POOL_SPLITER)[2]);\n\n const buy_token = tokenB.id;\n const point = priceToPoint({\n amountA,\n amountB: LimitOrderWithSwap.output_amount,\n tokenA,\n tokenB,\n fee,\n });\n\n const tokenRegistered = await ftGetStorageBalance(\n tokenB.id,\n AccountId\n ).catch(() => {\n throw new Error(`${tokenB.id} doesn't exist.`);\n });\n\n if (tokenRegistered === null) {\n transactions.push({\n receiverId: tokenB.id,\n functionCalls: [registerAccountOnToken(AccountId)],\n });\n }\n\n const DCLRegistered = await DCLSwapGetStorageBalance(\n tokenB.id,\n AccountId\n ).catch(() => {\n throw new Error(`${tokenB.id} doesn't exist.`);\n });\n\n if (DCLRegistered === null) {\n transactions.push({\n receiverId: config.REF_DCL_SWAP_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'storage_deposit',\n args: {\n registration_only: true,\n account_id: AccountId,\n },\n gas: '30000000000000',\n amount: '0.5',\n },\n ],\n });\n }\n\n const new_point =\n pool_id.split(DCL_POOL_SPLITER)[0] === tokenA.id ? point : -point;\n\n const msg = JSON.stringify({\n LimitOrderWithSwap: {\n pool_id,\n buy_token,\n point: new_point,\n },\n });\n\n transactions.push({\n receiverId: tokenA.id,\n functionCalls: [\n {\n methodName: 'ft_transfer_call',\n args: {\n receiver_id: config.REF_DCL_SWAP_CONTRACT_ID,\n amount: toNonDivisibleNumber(tokenA.decimals, amountA),\n msg,\n },\n gas: '180000000000000',\n amount: ONE_YOCTO_NEAR,\n },\n ],\n });\n }\n\n if (tokenA.id === WRAP_NEAR_CONTRACT_ID) {\n const registered = await ftGetStorageBalance(\n WRAP_NEAR_CONTRACT_ID,\n AccountId\n );\n if (registered === null) {\n transactions.unshift({\n receiverId: WRAP_NEAR_CONTRACT_ID,\n functionCalls: [registerAccountOnToken(AccountId)],\n });\n }\n }\n\n return transactions;\n};\n\nexport const quote = async ({\n pool_ids,\n input_amount,\n input_token,\n output_token,\n tag,\n}: {\n pool_ids: string[];\n input_token: TokenMetadata;\n output_token: TokenMetadata;\n input_amount: string;\n tag?: string;\n}) => {\n return refDCLSwapViewFunction({\n methodName: 'quote',\n args: {\n pool_ids,\n input_token: input_token.id,\n output_token: output_token.id,\n input_amount: toNonDivisibleNumber(input_token.decimals, input_amount),\n tag,\n },\n });\n};\n\nexport const list_user_assets = async (AccountId: string) => {\n if (!AccountId) return;\n\n return refDCLSwapViewFunction({\n methodName: 'list_user_assets',\n args: {\n account_id: AccountId,\n },\n });\n};\n\nexport const DCLSwapByInputOnBestPool = async ({\n tokenA,\n tokenB,\n amountA,\n slippageTolerance,\n AccountId,\n}: {\n tokenA: TokenMetadata;\n tokenB: TokenMetadata;\n amountA: string;\n slippageTolerance: number;\n AccountId: string;\n}) => {\n if (slippageTolerance <= 0 || slippageTolerance >= 100) {\n throw SlippageError;\n }\n\n const estimates = await Promise.all(\n DCL_POOL_FEE_LIST.map(async fee => {\n const pool_id = getDCLPoolId(tokenA.id, tokenB.id, fee);\n return quote({\n pool_ids: [pool_id],\n input_token: tokenA,\n output_token: tokenB,\n input_amount: amountA,\n tag: `${tokenA.id}-${fee}-${amountA}`,\n }).catch(e => null);\n })\n );\n\n if (!estimates || estimates.every(e => e === null)) {\n throw NoPoolOnThisPair(tokenA.id, tokenB.id);\n }\n\n const bestEstimate =\n estimates && estimates?.some(e => !!e)\n ? _.maxBy(estimates, e => Number(!e || !e.tag ? -1 : e.amount))\n : null;\n\n const bestFee =\n bestEstimate &&\n bestEstimate.tag &&\n bestEstimate?.tag?.split('-')?.[1] &&\n Number(bestEstimate?.tag?.split('-')?.[1]);\n\n return DCLSwap({\n swapInfo: {\n tokenA,\n tokenB,\n amountA,\n },\n Swap: {\n pool_ids: [getDCLPoolId(tokenA.id, tokenB.id, bestFee)],\n min_output_amount: percentLess(slippageTolerance, bestEstimate.amount),\n },\n AccountId,\n });\n};\n\nexport const quote_by_output = ({\n pool_ids,\n output_amount,\n input_token,\n output_token,\n}: {\n pool_ids: string[];\n input_token: TokenMetadata;\n output_token: TokenMetadata;\n output_amount: string;\n}) => {\n return refDCLSwapViewFunction({\n methodName: 'quote_by_output',\n args: {\n pool_ids,\n input_token: input_token.id,\n output_token: output_token.id,\n output_amount: toNonDivisibleNumber(output_token.decimals, output_amount),\n },\n });\n};\n","import { TokenMetadata, Transaction } from '../types';\nimport { NoOrderFound, OrderNoRemainedAmount } from '../error';\nimport {\n priceToPoint,\n toNonDivisibleNumber,\n toPrecision,\n registerAccountOnToken,\n} from '../utils';\nimport {\n ONE_YOCTO_NEAR,\n WRAP_NEAR_CONTRACT_ID,\n config,\n POINTLEFTRANGE,\n POINTRIGHTRANGE,\n} from '../constant';\nimport {\n nearDepositTransaction,\n ftGetStorageBalance,\n refDCLSwapViewFunction,\n} from '../ref';\n\nexport interface UserOrderInfo {\n order_id: string;\n owner_id: string;\n pool_id: string;\n point: number;\n sell_token: string;\n created_at: string;\n original_amount: string;\n remain_amount: string; // 0 means history order: ;\n cancel_amount: string;\n // amount through ft_transfer_call\n\n original_deposit_amount: string;\n // earn token amount through swap before actual place order\n\n swap_earn_amount: string;\n buy_token: string;\n unclaimed_amount: string; // claim will push it to inner account\n bought_amount: string; // accumalated amount into inner account\n}\n\nexport const list_history_orders = (AccountId: string) => {\n return refDCLSwapViewFunction({\n methodName: 'list_history_orders',\n args: {\n account_id: AccountId,\n },\n });\n};\n\nexport const list_active_orders = (AccountId: string) => {\n return refDCLSwapViewFunction({\n methodName: 'list_active_orders',\n args: {\n account_id: AccountId,\n },\n });\n};\n\nexport const get_order = async (order_id: string) => {\n return refDCLSwapViewFunction({\n methodName: 'get_order',\n args: {\n order_id,\n },\n }).catch(() => {\n throw NoOrderFound(order_id);\n });\n};\n\nexport const find_order = async ({\n pool_id,\n point,\n AccountId,\n}: {\n pool_id: string;\n point: number;\n AccountId: string;\n}) => {\n return refDCLSwapViewFunction({\n methodName: 'find_order',\n args: {\n account_id: AccountId,\n pool_id,\n point,\n },\n }).catch(() => {\n throw NoOrderFound();\n }) as Promise<UserOrderInfo>;\n};\nexport const cancel_order = async (order_id: string) => {\n const order = await get_order(order_id);\n\n if (!order.remain_amount) throw OrderNoRemainedAmount;\n\n const transactions: Transaction[] = [\n {\n receiverId: config.REF_DCL_SWAP_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'cancel_order',\n args: {\n order_id,\n amount: order.remain_amount,\n },\n gas: '180000000000000',\n },\n ],\n },\n ];\n\n return transactions;\n};\n\nexport const claim_order = (order_id: string) => {\n const transactions: Transaction[] = [\n {\n receiverId: config.REF_DCL_SWAP_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'cancel_order',\n args: {\n order_id,\n amount: '0',\n },\n gas: '180000000000000',\n },\n ],\n },\n ];\n\n return transactions;\n};\n\nexport const get_pointorder_range = ({\n pool_id,\n left_point,\n right_point,\n}: {\n pool_id: string;\n left_point?: number;\n right_point?: number;\n}) => {\n return refDCLSwapViewFunction({\n methodName: 'get_pointorder_range',\n args: {\n pool_id,\n left_point: left_point || POINTLEFTRANGE,\n right_point: right_point || POINTRIGHTRANGE,\n },\n });\n};\n"],"names":["FEE_DIVISOR","STABLE_LP_TOKEN_DECIMALS","RATED_POOL_LP_TOKEN_DECIMALS","getConfig","env","process","NEAR_ENV","REACT_APP_REF_SDK_ENV","networkId","nodeUrl","walletUrl","WRAP_NEAR_CONTRACT_ID","REF_FI_CONTRACT_ID","REF_TOKEN_ID","indexerUrl","explorerUrl","REF_DCL_SWAP_CONTRACT_ID","config","STORAGE_TO_REGISTER_WITH_MFT","ONE_YOCTO_NEAR","WNEAR_META_DATA","id","name","symbol","decimals","icon","REF_META_DATA","NEAR_META_DATA","TokenLinks","NEAR","wNEAR","REF","OCT","PARAS","SKYWARD","FLX","PULSE","DBIO","MYRIA","PXT","HAPI","OIN","ABR","MARMAJ","marmaj","USN","GRT","LINK","Cheddar","AURORA","$META","UMINT","UTO","DEIP","WOO","LINEAR","PEM","ATO","SEAT","FAR","BSTN","BRRR","XNL","KSW","STNEAR","NearX","SD","DISC","CONSTANT_D","POINTLEFTRANGE","POINTRIGHTRANGE","tradeFee","amount","trade_fee","calc_d","amp","c_amounts","token_num","length","sum_amounts","_","sum","d_prev","d","i","d_prod","c_amount","ann","numerator","denominator","Math","abs","calc_y","x_c_amount","current_c_amounts","index_x","index_y","s","c","b","y_prev","y","y_numerator","y_denominator","calc_swap","in_token_idx","in_c_amount","out_token_idx","old_c_amounts","dy","fee","amount_swapped","getSwappedAmount","tokenInId","tokenOutId","amountIn","stablePool","total_fee","token_account_ids","findIndex","rates","map","r","toReadableNumber","base_old_c_amounts","toNonDivisibleNumber","scientificNotationToString","Big","times","toString","Number","REF_WIDGET_STAR_TOKEN_LIST_KEY","REF_WIDGET_ALL_TOKENS_LIST_KEY","REF_WIDGET_SWAP_IN_KEY","REF_WIDGET_SWAP_OUT_KEY","REF_WIDGET_SWAP_DETAIL_KEY","DEFAULT_START_TOKEN_LIST_TESTNET","DEFAULT_START_TOKEN_LIST_MAINNET","DEFAULT_START_TOKEN_LIST","defaultTheme","container","buttonBg","primary","secondary","borderRadius","fontFamily","hover","active","secondaryBg","borderColor","iconDefault","iconHover","defaultDarkModeTheme","refIcon","icons","getTokenPriceList","fetch","method","headers","then","res","json","list","getTokens","reload","storagedTokens","window","localStorage","getItem","JSON","parse","tokens","newTokens","Object","values","reduce","acc","cur","keys","REPLACE_TOKENS","includes","metaIconDefaults","setItem","stringify","getWhiteListTokensIndexer","whiteListIds","RM","DP","NE","PE","checkIntegerSumOfAllocations","allocations","totalInput","item","round","alloSum","a","plus","offset","minus","currMax","currMaxInd","gt","newAllocations","j","push","yenFromPy","bisqrt","value","BigInt","newtonIteration","n","x0","x1","getBetaForRoute","route","path","p","beta","reserves","p1","p2","getEpsilonForRoute","gamma","div","epsilon","gamma1","gamma2","getAlphaForRoute","inputToken","outputToken","key1","token1Id","key2","token2Id","val1","token1Supply","val2","token2Supply","alpha","key11","key12","val11","val12","key21","key22","val21","val22","middleToken","alpha1","alpha2","getAlphaSumFromRoutes","routes","nodeRoutes","alphaSum","nodeRoute","radical","toFixed","denom","getBetaSumFromRoutes","betaSum","num","getPhiFromRoutes","phi","getAllocationForRoute","allocation","getAllocationVectorForRoutes","allocationVec","getOptimalAllocationForRoutes","every","lt","some","reduceRoutes","sumAllocations","normalizedAllocations","goodIndices","dx","newRoutes","newNodeRoutes","goodIndex","allocationDict","allocationVecNew","zeroAllocation","getNodeRoutesFromPathsAndPoolChains","paths","poolChains","multiplicity","pc","mul","elem1","elem2","m","k","getPoolChainFromPaths","pools","threshold","pathInd","chain","pairs","pairInd","pair","tokenPools","getPoolsByToken1ANDToken2","culledPoolChains","getCulledPoolChains","newChains","newPath","legInd","leg","culledPath","cullPoolsWithInsufficientLiquidity","getRoutesFromPoolChain","pci","poolChain","cartesianProduct","getOutputSingleHop","pool","getOutputDoubleHop","poolIndex","c1","a1","c2","b2","getOutputFromRoute","eq","output","getOptOutputVec","result","getBestOptInputAndOutput","rawDict","outputRaw","inputRaw","res1","res2","v","bv1","bv2","input","getBestOptimalAllocationsAndOutputs","maxPathLength","getPathsFromPools","outputs","inputOutput","getHopActionsFromRoutes","hops","hop","allRoutes","allNodeRoutes","totalInputAmount","allAllocations","middleTokenAllocation","getActionListFromRoutesAndAllocations","getSmartRouteSwapActions","allTokens","numberOfRoutesLimit","MAX_NUMBER_PARALLEL_POOLS","decimalsCulledPoolIds","filter","resDict","sortedIndexValues","argsort","topIndices","slice","reducedRoutes","reducedNodeRoutes","ind","currentBestOutput","bestAllocations","bestNodeRoutes","bestRoutes","parallelNodeRoutes","parallelRoutes","currentNodeRoute","bestRoutesAreParallel","filteredAllocationsAndOutputs","parallellAllocations","parallelOutputs","sortIndices","filteredParallelRoutes","filteredParallelNodeRoutes","parallelOutput","canHaveTwoRoutes","route1","route2","nodeRoute1","nodeRoute2","route1PoolIds","Set","route2PoolIds","sharePool","route1PoolId","has","currentRoutes","currentNodeRoutes","filteredAllocations","filteredOutputs","totalOutput","allSortedIndices","sortedIndices","filteredRoutes","filteredNodeRoutes","index","sharedRoute","allFilteredRoutes","allFilteredNodeRoutes","firstRoute","firstRoutePoolIds","allFilteredRouteIds","secondRoute","stringAllo","actions","ftGetTokenMetadata","hopInputTokenMeta","hopOutputTokenMeta","hopOutputTokenDecimals","expectedHopOutput","decimalEstimate","pow","status","Promise","all","t","estimate","gamma_bps","partialAmountIn","supplies","token0_ref_price","token0_price","tokenIds","Dex","token","routeInputToken","routeOutputToken","overallPriceImpact","x","calculateSmartRouteV2PriceImpact","action","deltaY","inputTokenMeta","deltaX","R","P","totalAllocations","weights","weight","routeMarketPrice","num1","denom1","num2","denom2","priceImpact","decor","arr","undecor","decorated","sort","token1","token2","cullZeroLiquidityPools","filteredPools","getLiqudityOfPoolsFromList","liquidities","poolInd","amounts","poolBigAmounts","liquidity","getNormalizedLiquiditiesFromList","maxLiq","bigMax","normalizedLiquidities","arrayOfBigs","maxElem","val","thresh","normLiq","flatMap","e","flat","addEdge","g","edge","src","dst","addEdges","edgeList","deleteEdge","gNew","e1","e2","deleteNode","node","nodeInd","nodeNow","dijkstra","graph","solutions","dist","parent","nearest","Infinity","ndist","adj","concat","shortestPath","ignore_nodes","ignore_edges","gTemp","edgeInd","edgeNow","solution","unshift","PathBuffer","sortedpaths","len","cost","arrayContains","pop","shift","splice","indexOf","arrayEquals","Array","isArray","obj","obj_json","itemInd","source","target","listA","listB","prev_path","sol","root","root_length","edgeToIgnore","spur","getKShortestPaths","gen","next","getGraphFromPoolList","poolList","transitions","stableSmart","smartRouteActions","getExpectedOutputFromActionsORIG","PoolMode","getSimplePoolEstimate","tokenIn","tokenOut","amount_with_fee","in_balance","out_balance","getStablePoolEstimate","getStablePoolDecimal","amountOut","isNaN","toPrecision","dyOut","noFeeAmountOut","singlePoolSwap","simplePools","stablePools","NoPoolError","parsedAmountIn","simplePoolsThisPair","estimatesSimplePool","stablePoolThisPair","sp","estimatesStablePool","find","maxSimplePoolEstimate","undefined","maxBy","maxStablePoolEstimate","getStablePoolsThisPair","getPoolsByTokens","getPoolEstimate","stablePoolDetail","getHybridStableSmart","stablePoolsDetail","isStablePoolToken","stablePoolsDetailById","pools1","pools2","pools1Right","pools2Right","candidatePools","otherStables","otherStable","stablePoolsThisPair","tmpPools","tobeAddedPools","middleTokens","p2s","ftGetTokensMetadata","cp","tokensMedata","BestPoolPair","poolPair","isStablePool","stablePoolDetailThisPair","spd","tmpPool1","tmpPool2","tokenMidId","tokenMidMeta","estimate1","SMART","estimate2","bestPool","STABLE","pool1","pool2","estimateSwap","options","SameInputTokenError","ONLY_ZEROS","test","ZeroInputError","enableSmartRouting","singleRouteEstimate","PARALLEL","inputPools","poolFormatter","simplePoolSmartRoutingActions","simplePoolSmartRoutingEstimate","hybridSmartRoutingRes","hybridSmartRoutingEstimate","gte","parsePool","shareSupply","shares_total_supply","tvl","pool_kind","shares","tokenId","poolId","minAmountOut","isInteger","ceil","convertToPercentDecimal","percent","math","percentOf","percentLess","notation","getGas","gas","BN","getAmount","utils","format","parseNearAmount","number","wholeStr","substring","fractionStr","padStart","replace","split","wholePart","fracPart","padEnd","strParam","flag","sysbol","negative","match","basis","ifFraction","formatWithCommas","pattern","precision","withCommas","atLeastOne","whole","decimal","str","lastIndexOf","transformTransactions","transactions","AccountId","parsedTransactions","signerId","receiverId","functionCalls","fc","type","params","methodName","args","toNumber","deposit","WalletSelectorTransactions","separateRoutes","curRoute","calculateExchangeRate","from","to","getAvgFee","estimates","forEach","getAccountName","account","network","niceAccountId","symbolsArr","multiply","factor1","factor2","toInternationalCurrencySystemLongString","labelValue","percentOfBigNumber","valueBig","percentBig","toRealSymbol","blackList","charAt","toUpperCase","calculateFeeCharge","total","calculateFeePercent","getExpectedOutputFromSwapTodos","calculateAmountReceived","big_in_balance","big_out_balance","constant_product","new_in_balance","new_out_balance","tokenOutReceived","calculateMarketPrice","cur_in_balance","cur_out_balance","calculateSmartRoutingPriceImpact","tokenInAmount","swapTodos","tokenMid","isPool1StablePool","isPool2StablePool","marketPrice1","marketPrice2","generalMarketPrice","tokenMidReceived","formattedTokenMidReceived","stableOutPool2","stablePool2","stableOut","newMarketPrice","PriceImpact","calcStableSwapPriceImpact","marketPrice","calculatePriceImpact","finalMarketPrice","separatedReceivedAmount","finalTokenOutReceived","calculateSmartRoutesV2PriceImpact","tokenInPara","priceImpactForRoutes","readablePartialAmountIn","rawRes","pre","getPriceImpact","PriceImpactValue","priceImpactValueSmartRouting","priceImpactValueSmartRoutingV2","error","subtraction","initialValue","toBeSubtract","getPoolAllocationPercents","partialAmounts","ps","fill","sortedAmount","sortBy","minIndexes","minIndex","finalPIndex","isMobile","screen","width","divide","getMax","String","getPointByPrice","pointDelta","price","decimalRate","noNeedSlot","point","log","point_int","point_int_slot","floor","feeToPointDelta","NoFeeToPool","priceToPoint","tokenA","tokenB","amountA","amountB","DCL_POOL_FEE_LIST","decimal_price_A_by_B","undecimal_price_A_by_B","pointToPrice","undecimal_price","registerAccountOnToken","registration_only","account_id","getKeyStore","keyStores","InMemoryKeyStore","BrowserLocalStorageKeyStore","provider","providers","JsonRpcProvider","url","getMemorySigner","keyPath","homedir","os","credentials","fs","readFileSync","credentialAccountId","NoCredential","AccountIdMisMatch","myKeyStore","setKey","KeyPair","fromString","private_key","signer","InMemorySigner","validateAccessKey","transaction","accessKey","permission","FunctionCall","receiver_id","method_names","parseFloat","getSignedTransactionsByMemoryKey","transactionsRef","block","finality","signedTransactions","getPublicKey","publicKey","NoPuiblicKeyError","query","request_type","public_key","InValidAccessKeyError","tx","nearTransactions","createTransaction","PublicKey","nonce","functionCall","serialize","base_decode","header","hash","signTransaction","signedTx","sendTransactionsByMemoryKey","results","sendTransaction","BANANA_ID","CHEDDAR_ID","CUCUMBER_ID","HAPI_ID","WOO_ID","near","Near","keyStore","refFiViewFunction","nearConnection","viewFunction","ftViewFunction","ftGetStorageBalance","NoAccountIdFound","ftGetBalance","getAccountNearBalance","getTotalPools","tag","TokenNotExistError","metadata","tokensMetadata","getGlobalWhitelist","globalWhitelist","getUserRegisteredTokens","accountId","data","nearDepositTransaction","nearWithdrawTransaction","refDCLSwapViewFunction","DCLInValid","DCLSwapGetStorageBalance","getDCLPoolId","tokenSeq","join","listDCLPools","getDCLPool","pool_id","token_x","token_y","token_seq","new_pool_id","formatError","msg","Error","unNamedError","NotLoginError","SwapRouteError","NoLocalSignerError","NoPoolOnThisPair","SlippageError","NoOrderFound","order_id","OrderNoRemainedAmount","instantSwap","slippageTolerance","registerToken","tokenRegistered","registered","actionsList","allSwapsTokens","swapTokens","token_in","token_out","amount_in","min_amount_out","force","DEFAULT_PAGE_LIMIT","getRatedPoolDetail","pool_info","getUnRatedPoolDetail","getStablePools","getPool","getRefPools","page","perPage","from_index","limit","poolData","rawPool","fetchAllPools","totalPools","pages","unRatedPools","ratedPools","ThemeContext","createContext","ThemeContextProvider","customTheme","children","useState","theme","setTheme","useEffect","React","Provider","estimateValidator","totalPartialAmountIn","useAllTokens","setTokens","tokensLoading","setTokensLoading","fetchTokens","useTokensIndexer","defaultTokenList","tokenLoading","setTokenLoading","getTokensList","whiteList","globalWhiteListTokens","parsedTokens","newList","useRefPools","refreshTrigger","allPools","setAllPools","poolFetchingState","setPoolFetchingState","allStablePools","setAllStablePools","useSwap","onSwap","swapParams","setEstimates","canSwap","setCanSwap","swapError","setSwapError","setAmountOut","isEstimating","setIsEstimating","forceEstimate","setForceEstimate","rate","makeSwap","outEstimate","bigEstimate","curEstimate","getEstimate","expectAmountOut","estimateValidationPass","TokenPriceContext","useTokenPriceList","tokenPriceList","setTokenPriceList","TokenPriceContextProvider","useTokenBalnces","balances","setBalances","validTokens","ids","balancesMap","textColor","displayValue","tokenInInfo","className","SmartRouteV2","tokensRaw","useContext","ParaTokenFrom","style","marginRight","Icon","alt","height","flexShrink","Hub","position","bottom","ArrowRight","DetailView","minReceived","storagedOpen","showDetail","setShowDetail","isRateReverse","setIsRateReverse","tokensPerRoute","swap","identicalRoutes","hub","percents","useMemo","priceImpactDisplay","displayRate","revertRate","revertDisplayRate","color","cursor","onClick","removeItem","FiChevronDown","FiChevronUp","RiExchangeFill","size","marginLeft","border","flexDirection","alignItems","justifyContent","RouterIcon","whiteSpace","minWidth","key","HalfAndMaxAmount","max","onChangeAmount","halfValue","hoverHalf","setHoverHalf","hoverMax","setHoverMax","background","onMouseEnter","onMouseLeave","half","TokenAmount","props","balance","reloading","onSelectToken","onForceUpdate","ref","useRef","hoverSelect","setHoverSelect","handleChange","current","setCustomValidity","curMax","RiRefreshLine","min","onWheel","blur","step","placeholder","onChange","disabled","onKeyDown","preventDefault","marginBottom","textAlign","fontSize","SlippageSelector","onChangeSlippageTolerance","showSlip","setShowSlip","invalid","setInValid","document","onclick","stopPropagation","paddingBottom","defaultValue","required","padding","IoWarning","StarToken","onDelete","hoverIcon","setHoverIcon","hoverClose","setHoverClose","top","right","boxShadow","IoCloseOutline","stroke","Token","isSticky","onClickPin","setHoverIndex","hoverIndex","displayBalance","hoverOutLink","setHoverOutLink","hoverPin","setHoverPin","HiOutlineExternalLink","marginTop","open","AiFillPushpin","AiOutlinePushpin","TokenListTable","starList","setStarList","currentSort","setCurrentSort","tokenSorting","b1","borderBottom","TiArrowSortedUp","TiArrowSortedDown","TokenSelector","onSelect","onClose","searchValue","setSearchValue","handleSearch","storagedStartList","newStarList","starToken","tableListFilter","searchValueLower","toLowerCase","FiChevronLeft","FaSearch","evt","Slider","setHover","viewBox","xmlns","fillRule","clipRule","RefIcon","Loading","cx","cy","strokeWidth","strokeLinecap","Warning","y1","x2","y2","Success","left","gradientUnits","stopColor","Notification","state","detail","setOpen","setState","href","textDecoration","rel","fontWeight","AccountButton","onDisConnect","hoverAccount","setHoverAccount","SwapWidget","connection","transactionState","onConnect","defaultTokenIn","defaultTokenOut","darkMode","curTheme","STORAGED_TOKEN_IN","STORAGED_TOKEN_OUT","isSignedInProp","isSignedIn","setTokenIn","handleSetTokenIn","handleSetTokenOut","setTokenOut","tokenInBalance","setTokenInBalance","tokenOutBalance","setTokenOutBalance","notOpen","setNotOpen","widgetRoute","setWidgetRoute","setAmountIn","setSlippageTolerance","setRreshTrigger","defaultIn","defaultOut","wrapedId","available","handleSubmit","canSubmit","onSubmit","CgArrowsExchangeAltV","paddingTop","TiWarning","message","opacity","display","DefaultTestnetTokenList","spec","reference","reference_hash","DefaultMainnetTokenList","getDefaultTokenList","DCL_POOL_SPLITER","DCLSwap","Swap","SwapByOutput","LimitOrderWithSwap","swapInfo","pool_ids","output_token","min_output_amount","output_amount","buy_token","DCLRegistered","new_point","quote","input_amount","input_token","list_user_assets","DCLSwapByInputOnBestPool","bestEstimate","bestFee","quote_by_output","list_history_orders","list_active_orders","get_order","find_order","cancel_order","order","remain_amount","claim_order","get_pointorder_range","left_point","right_point"],"mappings":"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"}
1
+ {"version":3,"file":"ref-sdk.esm.js","sources":["../src/constant.ts","../src/stable-swap.ts","../src/swap-widget/constant.ts","../src/metaIcons.ts","../src/indexer.ts","../src/v1-swap/parallelSwapLogic.ts","../src/v1-swap/smartRoutingLogic.js","../src/v1-swap/swap.ts","../src/utils.ts","../src/near.ts","../src/ref.ts","../src/dcl-swap/dcl-pool.ts","../src/error.ts","../src/v1-swap/instantSwap.ts","../src/v1-swap/pool.ts","../src/swap-widget/state.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/swap-widget/components.tsx","../src/swap-widget/index.tsx","../src/swap-widget/defaultTokenList.ts","../src/dcl-swap/swap.ts","../src/dcl-swap/limit-order.ts"],"sourcesContent":["import { TokenMetadata } from './types';\n\nexport const FEE_DIVISOR = 10000;\n\nexport const STABLE_LP_TOKEN_DECIMALS = 18;\nexport const RATED_POOL_LP_TOKEN_DECIMALS = 24;\nexport const STORAGE_TO_REGISTER_WITH_MFT = '0.1';\nexport const ONE_YOCTO_NEAR = '0.000000000000000000000001';\nlet ENV: string | undefined = '';\nexport function getConfig(\n env: string | undefined = ENV ||\n process.env.NEAR_ENV ||\n process.env.REACT_APP_REF_SDK_ENV\n) {\n ENV = env;\n switch (env) {\n case 'mainnet':\n return {\n networkId: 'mainnet',\n nodeUrl: 'https://rpc.mainnet.near.org',\n walletUrl: 'https://wallet.near.org',\n WRAP_NEAR_CONTRACT_ID: 'wrap.near',\n REF_FI_CONTRACT_ID: 'v2.ref-finance.near',\n REF_TOKEN_ID: 'token.v2.ref-finance.near',\n indexerUrl: 'https://indexer.ref.finance',\n explorerUrl: 'https://testnet.nearblocks.io',\n REF_DCL_SWAP_CONTRACT_ID: '',\n };\n case 'testnet':\n return {\n networkId: 'testnet',\n nodeUrl: 'https://rpc.testnet.near.org',\n walletUrl: 'https://wallet.testnet.near.org',\n indexerUrl: 'https://testnet-indexer.ref-finance.com',\n WRAP_NEAR_CONTRACT_ID: 'wrap.testnet',\n REF_FI_CONTRACT_ID: 'ref-finance-101.testnet',\n REF_TOKEN_ID: 'ref.fakes.testnet',\n explorerUrl: 'https://testnet.nearblocks.io',\n REF_DCL_SWAP_CONTRACT_ID: 'dcl.ref-dev.testnet',\n };\n default:\n return {\n networkId: 'mainnet',\n nodeUrl: 'https://rpc.mainnet.near.org',\n walletUrl: 'https://wallet.near.org',\n REF_FI_CONTRACT_ID: 'v2.ref-finance.near',\n WRAP_NEAR_CONTRACT_ID: 'wrap.near',\n REF_TOKEN_ID: 'token.v2.ref-finance.near',\n indexerUrl: 'https://indexer.ref.finance',\n explorerUrl: 'https://nearblocks.io',\n REF_DCL_SWAP_CONTRACT_ID: '',\n };\n }\n}\n\nexport let config = getConfig();\n\nexport let REF_FI_CONTRACT_ID = config.REF_FI_CONTRACT_ID;\n\nexport let WRAP_NEAR_CONTRACT_ID = config.WRAP_NEAR_CONTRACT_ID;\n\nexport let REF_TOKEN_ID = config.REF_TOKEN_ID;\n\nexport let WNEAR_META_DATA: TokenMetadata = {\n id: WRAP_NEAR_CONTRACT_ID,\n name: 'wNEAR',\n symbol: 'wNEAR',\n decimals: 24,\n icon: 'https://assets.ref.finance/images/w-NEAR-no-border.png',\n};\n\nexport let REF_META_DATA = {\n decimals: 18,\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A\",\n id: REF_TOKEN_ID,\n name: 'Ref Finance Token',\n symbol: 'REF',\n};\n\nexport const NEAR_META_DATA: TokenMetadata = {\n id: 'NEAR',\n name: 'NEAR',\n symbol: 'NEAR',\n decimals: 24,\n icon:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2AAAANgCAIAAADF8JzzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAgAElEQVR4nO3d7VXb2rqw4eQd57/cgZ0KLCqwVwWIChAVYCrAqQBTgUUFERVEVBBTwTYdmArWO/by3uzMfBA+bHlK87r+nTP2WBFSjO/o8SN//Pvvvz8AAMB//T9nAgCA7wlEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAAC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ICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAICAQAQAICAQAQAICEQAAAICEQCAgEAEACAgEAEACAhEAAACAhEAgIBABAAgIBABAAgIRAAAAgIRAID/+fDhw/8H0I0VimXUJpsAAAAASUVORK5CYII=',\n};\n\nexport const TokenLinks = {\n NEAR: 'https://awesomenear.com/near-protocol',\n wNEAR: 'https://awesomenear.com/near-protocol',\n REF: 'https://awesomenear.com/ref-finance',\n OCT: 'https://awesomenear.com/octopus-network',\n PARAS: 'https://awesomenear.com/paras',\n SKYWARD: 'https://awesomenear.com/skyward-finance',\n FLX: 'https://awesomenear.com/flux',\n PULSE: 'https://awesomenear.com/pulse',\n DBIO: 'https://awesomenear.com/debio-network',\n MYRIA: 'https://awesomenear.com/myriad-social',\n PXT: 'https://awesomenear.com/cryptoheroes',\n HAPI: 'https://awesomenear.com/hapi',\n OIN: 'https://awesomenear.com/oin-finance',\n ABR: 'https://awesomenear.com/allbridge',\n '1MIL': 'https://awesomenear.com/1millionnfts',\n MARMAJ: 'https://awesomenear.com/marmaj-foundation',\n marmaj: 'https://awesomenear.com/marmaj-foundation',\n USN: 'https://awesomenear.com/decentral-bank',\n '1INCH': 'https://awesomenear.com/1inch-network',\n GRT: 'https://awesomenear.com/the-graph',\n LINK: 'https://awesomenear.com/chainlink',\n Cheddar: 'https://awesomenear.com/cheddar-farm',\n AURORA: 'https://awesomenear.com/aurora-dev',\n $META: 'https://awesomenear.com/meta-pool',\n UMINT: 'https://awesomenear.com/youminter',\n UTO: 'https://awesomenear.com/secret-skellies-society',\n DEIP: 'https://awesomenear.com/deip',\n WOO: 'https://awesomenear.com/woo-dex',\n LINEAR: 'https://awesomenear.com/linear-protocol',\n PEM: 'https://awesomenear.com/pembrock-finance',\n ATO: 'https://awesomenear.com/atocha-protocol',\n SEAT: 'https://awesomenear.com/seatlab-nft',\n FAR: 'https://awesomenear.com/few-and-far',\n BSTN: 'https://awesomenear.com/bastion',\n BRRR: 'https://awesomenear.com/burrow',\n XNL: 'https://awesomenear.com/chronicle',\n KSW: 'https://awesomenear.com/killswitch-finance',\n STNEAR: 'https://awesomenear.com/meta-pool',\n NearX: 'https://awesomenear.com/stader',\n SD: 'https://awesomenear.com/stader',\n DISC: 'https://awesomenear.com/discovol',\n} as Record<string, string>;\n\nexport const CONSTANT_D = 1.0001;\n\nexport const POINTLEFTRANGE = -800000;\nexport const POINTRIGHTRANGE = 800000;\n\nexport const switchEnv = () => {\n config = getConfig();\n REF_FI_CONTRACT_ID = config.REF_FI_CONTRACT_ID;\n WRAP_NEAR_CONTRACT_ID = config.WRAP_NEAR_CONTRACT_ID;\n REF_TOKEN_ID = config.REF_TOKEN_ID;\n REF_META_DATA = {\n decimals: 18,\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A\",\n id: REF_TOKEN_ID,\n name: 'Ref Finance Token',\n symbol: 'REF',\n };\n WNEAR_META_DATA = {\n id: WRAP_NEAR_CONTRACT_ID,\n name: 'wNEAR',\n symbol: 'wNEAR',\n decimals: 24,\n icon: 'https://assets.ref.finance/images/w-NEAR-no-border.png',\n };\n return {\n config,\n REF_FI_CONTRACT_ID,\n WRAP_NEAR_CONTRACT_ID,\n REF_TOKEN_ID,\n REF_META_DATA,\n WNEAR_META_DATA,\n };\n};\n","import { StablePool } from './types';\nimport { FEE_DIVISOR } from './constant';\n\nimport {\n toReadableNumber,\n toNonDivisibleNumber,\n scientificNotationToString,\n} from './utils';\n\nimport Big from 'big.js';\n\nimport _ from 'lodash';\n\nconst tradeFee = (amount: number, trade_fee: number) => {\n return (amount * trade_fee) / FEE_DIVISOR;\n};\n\nexport const calc_d = (amp: number, c_amounts: number[]) => {\n const token_num = c_amounts.length;\n const sum_amounts = _.sum(c_amounts);\n let d_prev = 0;\n let d = sum_amounts;\n for (let i = 0; i < 256; i++) {\n let d_prod = d;\n for (let c_amount of c_amounts) {\n d_prod = (d_prod * d) / (c_amount * token_num);\n }\n d_prev = d;\n const ann = amp * token_num ** token_num;\n const numerator = d_prev * (d_prod * token_num + ann * sum_amounts);\n const denominator = d_prev * (ann - 1) + d_prod * (token_num + 1);\n d = numerator / denominator;\n if (Math.abs(d - d_prev) <= 1) break;\n }\n return d;\n};\n\nexport const calc_y = (\n amp: number,\n x_c_amount: number,\n current_c_amounts: number[],\n index_x: number,\n index_y: number\n) => {\n const token_num = current_c_amounts.length;\n const ann = amp * token_num ** token_num;\n const d = calc_d(amp, current_c_amounts);\n let s = x_c_amount;\n let c = (d * d) / x_c_amount;\n for (let i = 0; i < token_num; i++) {\n if (i !== index_x && i !== index_y) {\n s += current_c_amounts[i];\n c = (c * d) / current_c_amounts[i];\n }\n }\n c = (c * d) / (ann * token_num ** token_num);\n const b = d / ann + s;\n let y_prev = 0;\n let y = d;\n for (let i = 0; i < 256; i++) {\n y_prev = y;\n const y_numerator = y ** 2 + c;\n const y_denominator = 2 * y + b - d;\n y = y_numerator / y_denominator;\n if (Math.abs(y - y_prev) <= 1) break;\n }\n\n return y;\n};\n\nexport const calc_swap = (\n amp: number,\n in_token_idx: number,\n in_c_amount: number,\n out_token_idx: number,\n old_c_amounts: number[],\n trade_fee: number\n) => {\n const y = calc_y(\n amp,\n in_c_amount + old_c_amounts[in_token_idx],\n old_c_amounts,\n in_token_idx,\n out_token_idx\n );\n const dy = old_c_amounts[out_token_idx] - y;\n const fee = tradeFee(dy, trade_fee);\n const amount_swapped = dy - fee;\n return [amount_swapped, fee, dy];\n};\n\nexport const getSwappedAmount = (\n tokenInId: string,\n tokenOutId: string,\n amountIn: string,\n stablePool: StablePool,\n STABLE_LP_TOKEN_DECIMALS: number\n) => {\n const amp = stablePool.amp;\n const trade_fee = stablePool.total_fee;\n\n // depended on pools\n const in_token_idx = stablePool.token_account_ids.findIndex(\n id => id === tokenInId\n );\n const out_token_idx = stablePool.token_account_ids.findIndex(\n id => id === tokenOutId\n );\n\n const rates = stablePool.rates.map(r =>\n toReadableNumber(STABLE_LP_TOKEN_DECIMALS, r)\n );\n\n const base_old_c_amounts = stablePool.c_amounts.map(amount =>\n toReadableNumber(STABLE_LP_TOKEN_DECIMALS, amount)\n );\n\n const old_c_amounts = base_old_c_amounts\n .map((amount, i) =>\n toNonDivisibleNumber(\n STABLE_LP_TOKEN_DECIMALS,\n scientificNotationToString(\n new Big(amount || 0).times(new Big(rates[i])).toString()\n )\n )\n )\n .map(amount => Number(amount));\n\n const in_c_amount = Number(\n toNonDivisibleNumber(\n STABLE_LP_TOKEN_DECIMALS,\n scientificNotationToString(\n new Big(amountIn).times(new Big(rates[in_token_idx])).toString()\n )\n )\n );\n\n const [amount_swapped, fee, dy] = calc_swap(\n amp,\n in_token_idx,\n in_c_amount,\n out_token_idx,\n old_c_amounts,\n trade_fee\n );\n\n return [\n amount_swapped / Number(rates[out_token_idx]),\n fee,\n dy / Number(rates[out_token_idx]),\n ];\n};\n","import { getConfig } from '../constant';\nexport const REF_WIDGET_STAR_TOKEN_LIST_KEY =\n 'REF_WIDGET_STAR_TOKEN_LIST_VALUE';\n\nexport const REF_WIDGET_ALL_TOKENS_LIST_KEY =\n 'REF_WIDGET_ALL_TOKENS_LIST_VALUE';\n\nexport const REF_WIDGET_SWAP_IN_KEY = 'REF_WIDGET_SWAP_IN_VALUE';\n\nexport const REF_WIDGET_SWAP_OUT_KEY = 'REF_WIDGET_SWAP_OUT_VALUE';\n\nexport const REF_WIDGET_SWAP_DETAIL_KEY = 'REF_WIDGET_SWAP_DETAIL_VALUE';\n\nexport const DEFAULT_START_TOKEN_LIST_TESTNET = [\n 'wrap.testnet',\n 'usdtt.fakes.testnet',\n 'usdt.fakes.testnet',\n 'ref.fakes.testnet',\n 'usdn.testnet',\n 'eth.fakes.testnet',\n];\n\nexport const DEFAULT_START_TOKEN_LIST_MAINNET = [\n 'wrap.near',\n 'usdt.tether-token.near',\n 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near',\n 'token.v2.ref-finance.near',\n 'usn',\n 'aurora',\n 'token.sweat',\n];\n\nexport interface Theme {\n container: string; // container background\n buttonBg: string; // button background\n primary: string; // primary theme color\n secondary: string; // secondary theme color\n borderRadius: string; // border radius\n fontFamily: string; // font family\n hover: string; // hovering color\n active: string; // active color\n secondaryBg: string; // secondary background color\n borderColor: string; // border color\n iconDefault: string; // default icon color\n iconHover: string; // icon hovering color\n refIcon?: string; // ref icon color\n}\n\nexport const defaultTheme: Theme = {\n container: '#FFFFFF',\n buttonBg: '#00C6A2',\n primary: '#000000',\n secondary: '#7E8A93',\n borderRadius: '4px',\n fontFamily: 'sans-serif',\n hover: 'rgba(126, 138, 147, 0.2)',\n active: 'rgba(126, 138, 147, 0.2)',\n secondaryBg: '#F7F7F7',\n borderColor: 'rgba(126, 138, 147, 0.2)',\n iconDefault: 'rgba(126, 138, 147, 1)',\n iconHover: 'rgba(62, 62, 62, 1)',\n};\n\nexport const defaultDarkModeTheme: Theme = {\n container: '#26343E',\n buttonBg: '#00C6A2',\n primary: '#FFFFFF',\n secondary: '#7E8A93',\n borderRadius: '4px',\n fontFamily: 'sans-serif',\n hover: 'rgba(126, 138, 147, 0.2)',\n active: 'rgba(126, 138, 147, 0.2)',\n secondaryBg: 'rgba(0, 0, 0, 0.2)',\n borderColor: 'rgba(126, 138, 147, 0.2)',\n iconDefault: 'rgba(126, 138, 147, 1)',\n iconHover: 'rgba(183, 201, 214, 1)',\n refIcon: 'white',\n};\n","const icons: { [tokenId: string]: string } = {\n '4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near':\n 'https://ref-finance-images.s3.amazonaws.com/images/woo-wtrue.png',\n 'wrap.near':\n 'data:image/png;base64,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',\n 'wrap.testnet':\n 'data:image/png;base64,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',\n '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near':\n 'https://assets.ref.finance/images/4943.png',\n 'berryclub.ek.near': 'https://assets.ref.finance/images/banana.png',\n 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near':\n 'https://assets.ref.finance/images/825.png',\n '1f9840a85d5af5bf1d1762f925bdaddc4201f984.factory.bridge.near':\n 'https://assets.ref.finance/images/7083.png',\n '514910771af9ca656af840dff83e8264ecf986ca.factory.bridge.near':\n 'https://assets.ref.finance/images/1975.png',\n 'a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near':\n 'https://assets.ref.finance/images/3408.png',\n '2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near':\n 'https://assets.ref.finance/images/3717.png',\n '7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.factory.bridge.near':\n 'https://assets.ref.finance/images/7278.png',\n 'a0b73e1ff0b80914ab6fe0444e65848c4c34450b.factory.bridge.near':\n 'https://assets.ref.finance/images/3635.png',\n '50d1c9771902476076ecfc8b2a83ad6b9355a4c9.factory.bridge.near':\n 'https://assets.ref.finance/images/4195.png',\n '4fabb145d64652a948d72533023f6e7a623c7c53.factory.bridge.near':\n 'https://assets.ref.finance/images/4687.png',\n '6f259637dcd74c767781e37bc6133cd6a68aa161.factory.bridge.near':\n 'https://assets.ref.finance/images/2502.png',\n '6b3595068778dd592e39a122f4f5a5cf09c90fe2.factory.bridge.near':\n 'https://assets.ref.finance/images/6758.png',\n 'c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.factory.bridge.near':\n 'https://assets.ref.finance/images/2586.png',\n 'c944e90c64b2c07662a292be6244bdf05cda44a7.factory.bridge.near':\n 'https://assets.ref.finance/images/6719.png',\n '9f8f72aa9304c8b593d555f12ef6589cc3a579a2.factory.bridge.near':\n 'https://assets.ref.finance/images/1518.png',\n '0bc529c00c6401aef6d220be8c6ea1667f6ad93e.factory.bridge.near':\n 'https://assets.ref.finance/images/5864.png',\n 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.factory.bridge.near':\n 'https://assets.ref.finance/images/2396.png',\n '0316eb71485b0ab14103307bf65a021042c6d380.factory.bridge.near':\n 'https://assets.ref.finance/images/6941.png',\n '111111111117dc0aa78b770fa6a738034120c302.factory.bridge.near':\n 'https://assets.ref.finance/images/8104.png',\n 'f5cfbc74057c610c8ef151a439252680ac68c6dc.factory.bridge.near':\n 'https://assets.ref.finance/images/55sGoBm.png',\n 'de30da39c46104798bb5aa3fe8b9e0e1f348163f.factory.bridge.near':\n 'https://assets.ref.finance/images/10052.png',\n 'a4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016.factory.bridge.near':\n 'https://assets.ref.finance/images/4222.png',\n 'token.cheddar.near': 'https://assets.ref.finance/images/cheddar.png',\n 'farm.berryclub.ek.near': 'https://assets.ref.finance/images/cucumber.png',\n 'd9c2d319cd7e6177336b0a9c93c21cb48d84fb54.factory.bridge.near':\n 'https://assets.ref.finance/images/HAPI.png',\n};\n\nexport default icons;\n","import { config, WRAP_NEAR_CONTRACT_ID, NEAR_META_DATA } from './constant';\nimport { REF_WIDGET_ALL_TOKENS_LIST_KEY } from './swap-widget/constant';\nimport { REPLACE_TOKENS } from './ref';\nimport metaIconDefaults from './metaIcons';\n\nexport const getTokenPriceList = async (): Promise<any> => {\n return await fetch(config.indexerUrl + '/list-token-price', {\n method: 'GET',\n headers: { 'Content-type': 'application/json; charset=UTF-8' },\n })\n .then(res => res.json())\n .then(list => {\n return list;\n });\n};\n\nexport const getTokens = async (reload?: boolean) => {\n const storagedTokens =\n typeof window !== 'undefined' && !reload\n ? localStorage.getItem(REF_WIDGET_ALL_TOKENS_LIST_KEY)\n : null;\n\n return storagedTokens\n ? JSON.parse(storagedTokens)\n : await fetch(config.indexerUrl + '/list-token', {\n method: 'GET',\n headers: { 'Content-type': 'application/json; charset=UTF-8' },\n })\n .then(res => res.json())\n .then(tokens => {\n const newTokens = Object.values(tokens).reduce(\n (acc: any, cur: any, i) => {\n const id = Object.keys(tokens)[i];\n return {\n ...acc,\n [id]: {\n ...cur,\n id,\n icon:\n !cur.icon || REPLACE_TOKENS.includes(id)\n ? metaIconDefaults[id]\n : cur.icon,\n },\n };\n },\n {}\n );\n\n return newTokens;\n })\n .then(res => {\n typeof window !== 'undefined' &&\n !reload &&\n localStorage.setItem(\n REF_WIDGET_ALL_TOKENS_LIST_KEY,\n JSON.stringify(res)\n );\n return res;\n });\n};\n\nexport const getWhiteListTokensIndexer = async (whiteListIds: string[]) => {\n return await fetch(config.indexerUrl + '/list-token', {\n method: 'GET',\n headers: { 'Content-type': 'application/json; charset=UTF-8' },\n })\n .then(res => res.json())\n .then(res => {\n return whiteListIds.reduce((acc, cur, i) => {\n if (\n !res[cur] ||\n !Object.values(res[cur]) ||\n Object.values(res[cur]).length === 0\n )\n return acc;\n\n return {\n ...acc,\n [cur]: { ...res[cur], id: cur },\n };\n }, {});\n })\n .then(res => {\n return Object.values(res);\n });\n};\n","//@ts-nocheck\nimport Big from 'big.js';\n\nimport { Pool } from '../types';\n\nBig.RM = 0;\nBig.DP = 40;\nBig.NE = -40;\nBig.PE = 40;\n\ninterface FormatedPool extends Pool {\n x?: string;\n y?: string;\n gamma_bps?: Big;\n}\n\n///////////////////////////////\n// Parallel Swap Logic Below //\n///////////////////////////////\n\n/** formatPoolNew\n * This function appends to the existing standard Pool struct and adds attributes that simplify the parallel swap algorithms.\n * Adds attributes \"x\" (for input token reserves in pool), \"y\" (for output token reserves in pool), and \"gamma_bps\" (for 1- fee in bps)\n * Our convention for our algorithm has been to use \"x\" as the input token and \"y\" as the output token.\n * @param pool AMM structure containing reserves of inputToken and outputToken\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns newFormatPool\n */\nexport function formatPoolNew(\n pool: Pool,\n inputToken: string,\n outputToken: string\n) {\n let p: FormatedPool = pool;\n let x = p.supplies[inputToken];\n let y = p.supplies[outputToken];\n p['gamma_bps'] = new Big(10000).minus(p.fee);\n p['x'] = x;\n p['y'] = y;\n return p;\n}\n\n/** solveForMuFloat\n * This function takes the set of token pools, the total input of inputToken, and the names of inputToken and outputToken and\n * solves for the Lagrange Multiplier \"mu\". Note that mu must be allowed to be aritrary precision floating point number. Mu will\n * be used in subsequent function calls to determine the best allocations of intputToken to be made per pool.\n * For more detailed math on how this function was derived, please see the white paper:\n * https://github.com/giddyphysicist/ParallelSwapForRefFinance/blob/main/ParallelSwapWhitePaper.pdf\n * @param pools list of pools that contain inputToken and outputToken\n * @param totalDeltaX total allocation (among all pools) being input of inputToken\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns mu the lagrange multiplier value calculated for a set of pools and inputToken amount.\n */\nexport function solveForMuFloat(\n pools: Pool[],\n totalDeltaX: string,\n inputToken: string,\n outputToken: string\n) {\n if (pools.length > 0) {\n let numerator = new Big(totalDeltaX);\n let denominator = new Big(0);\n\n for (var i = 0; i < pools.length; i++) {\n let p = formatPoolNew(pools[i], inputToken, outputToken);\n let numAdd = new Big(p.x).times(10000).div(p.gamma_bps);\n numerator = numerator.plus(numAdd);\n let denomAdd = new Big(p.x)\n .times(p.y)\n .div(p.gamma_bps)\n .sqrt()\n .times(100);\n denominator = denominator.plus(denomAdd);\n }\n\n const mu = new Big(numerator).div(denominator);\n return mu;\n } else {\n // console.log('ERROR - could not find pools that satisfy token pair');\n const mu = NaN;\n return mu;\n }\n}\n\n/** calculate_dx_float\n * Once mu has been calculated for a set of pools and total input amount, the next step is\n * determining the total allocation per pool. This function evaluates the amount of input Token to be\n * allocated to the given pool. Note, in our original algorithmic convention, the 'x' variable was for the input token,\n * and the 'y' variable was for the output token. Here, the value dx is the part of the full amount of input token X.\n * Again, the detailed formulae for these operations can be found in the white paper referenced above.\n * @param mu the lagrange multiplier value calculated for a set of pools and inputToken amount.\n * @param pool AMM structure containing reserves of inputToken and outputToken\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns dxFloat the allocation amount determined for the given pool\n */\nexport function calculate_dx_float(\n mu: number | Big,\n pool: FormatedPool,\n inputToken: string,\n outputToken: string\n) {\n let p = formatPoolNew(pool, inputToken, outputToken);\n let radical = new Big(p.x).times(p.y).div(p.gamma_bps);\n let dxFloat = new Big(mu)\n .times(100)\n .times(radical.sqrt())\n .minus(new Big(p.x).times(10000).div(p.gamma_bps));\n return dxFloat;\n}\n\n/** calculate_dy_float\n * Once you have an allocation amount for a given pool, you can use the AMM constant-product formula to determine\n * the expected output amount of output Token.\n * Note, here, as earlier, our algorithmic convention uses \"y\" as the output token, and so \"dy\" is the fraction of\n * the total output of output Token, assuming there could be dy contributions from other parallel pools as well.\n * @param dx_float input allocation amount of inputToken for the given pool\n * @param pool a structure representing the reserves and fees for a given pool.\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns dyFloat the expected trade out amount out of outputToken\n */\nexport function calculate_dy_float(\n dx_float: number,\n pool: FormatedPool,\n inputToken: string,\n outputToken: string\n) {\n if (dx_float <= 0) {\n return new Big(0);\n }\n let p = formatPoolNew(pool, inputToken, outputToken);\n let dx = new Big(dx_float);\n let denom = new Big(10000).times(p.x).plus(new Big(p.gamma_bps).times(dx));\n let numerator = new Big(p.y).times(dx).times(p.gamma_bps);\n let dyFloat = numerator.div(denom).round();\n return dyFloat;\n}\n\n/** calculateOptimalOutput\n * This is the main function, which calculates optimal values of inputToken to swap into each pool.\n * @param pools list of relevant AMM pools containing inputToken and outputToken\n * @param inputAmount the numeric total amount of inputToken to be traded into the group of swap pools.\n * @param inputToken the name of the inputToken being traded in.\n * @param outputToken the name of the outputToken being traded out.\n * @returns normalizedDxArray an array containing the amount allocations of inputToken per pool in the list of pools.\n */\nexport function calculateOptimalOutput(\n pools: Pool[],\n inputAmount: string,\n inputToken: string,\n outputToken: string\n) {\n let mu = solveForMuFloat(pools, inputAmount, inputToken, outputToken);\n let dxArray: Big[] = [];\n let negativeDxValsFlag = false;\n for (var i = 0; i < pools.length; i++) {\n let pool = formatPoolNew(pools[i], inputToken, outputToken);\n let dx = calculate_dx_float(mu, pool, inputToken, outputToken);\n if (dx.lt(0)) {\n negativeDxValsFlag = true;\n }\n let dxInt = new Big(dx).round();\n dxArray.push(dxInt);\n }\n if (negativeDxValsFlag) {\n dxArray = reducePools(pools, dxArray, inputAmount, inputToken, outputToken);\n }\n let dxArraySum = new Big(0);\n for (var i = 0; i < dxArray.length; i++) {\n dxArraySum = dxArraySum.plus(dxArray[i]);\n }\n let tempAllocationsArray = [];\n for (var i = 0; i < dxArray.length; i++) {\n let ndx = new Big(dxArray[i])\n .times(inputAmount)\n .div(dxArraySum)\n .round();\n tempAllocationsArray.push(ndx);\n }\n let allocationsArray = checkIntegerSumOfAllocations(\n tempAllocationsArray,\n inputAmount\n );\n let normalizedDxArray = [];\n for (var i = 0; i < allocationsArray.length; i++) {\n let ndx = allocationsArray[i];\n normalizedDxArray.push(BigInt(ndx));\n pools[i]['partialAmountIn'] = ndx.toString();\n }\n return normalizedDxArray;\n}\n\n/** reducePools\n * This function is used to implement part of the non-linear slack variables in the lagrange - multiplier\n * solution for parallel swap. Part of what comes out of the math is that sometimes, the optimal allocation for a pool\n * can be negative, which makes no physical sense. When this occurs, that particular pool needs to be flagged and the\n * lagrange constraint applied to force the allocation to be zero.\n * This function takes an already-solved set of pools, input allocation per pool, the total input amount, and the\n * inputToken name and outputToken name, and determines which, if any, allocations need to be set to zero.\n * However, when this occurs, and a pool is essentially ignored from the list, then the calculation for mu must be re-done.\n * So the calculateOptimalOutput function is then called on the reduced set of pools, and if no negative allocation values remain,\n * then the allocations on the reduced set is determined, and values of zero are put in for the 'failed' pools.\n * @param pools list of pools that contain inputToken and outputToken\n * @param dxArray list of input allocation per pool\n * @param inputAmount total amount of inputToken to be traded among the pools\n * @param inputToken the name of the inputToken\n * @param outputToken the name of the outputToken\n * @returns newFullDxVec the new full list of input allocations the same length as dxArray, containing zeros for failed pools.\n */\nexport function reducePools(\n pools: Pool[],\n dxArray: Big[],\n inputAmount: string,\n inputToken: string,\n outputToken: string\n) {\n let goodIndices = [];\n for (var i = 0; i < dxArray.length; i++) {\n let dx = dxArray[i];\n if (dx.gte(0)) {\n goodIndices.push(i);\n }\n }\n if (goodIndices.length < 1) {\n // console.log(\"ERROR OCCURRED -- ALL DX VALUES WERE NEGATIVE\")\n return dxArray;\n }\n let newPools = [];\n for (var j = 0; j < dxArray.length; j++) {\n if (goodIndices.includes(j)) {\n newPools.push(pools[j]);\n }\n }\n let newDxVec = calculateOptimalOutput(\n newPools,\n inputAmount,\n inputToken,\n outputToken\n );\n let goodInd2newdx = {};\n for (var k = 0; k < newDxVec.length; k++) {\n goodInd2newdx[goodIndices[k]] = newDxVec[k];\n }\n let newFullDxVec = [];\n for (var ii = 0; ii < pools.length; ii++) {\n if (goodIndices.includes(ii)) {\n newFullDxVec.push(goodInd2newdx[ii]);\n } else {\n newFullDxVec.push(0);\n }\n }\n return newFullDxVec;\n}\n\nexport function checkIntegerSumOfAllocations(\n allocations: Big[] | string[] | BigInt[],\n totalInput: Big | string | BigInt\n) {\n var totalInput = new Big(totalInput);\n var allocations:\n | Big[]\n | string[]\n | BigInt[] = allocations.map((item: Big | string | BigInt) =>\n new Big(item).round()\n );\n let alloSum = allocations\n .map(item => new Big(item))\n .reduce((a, b) => a.plus(b), new Big(0));\n let offset = totalInput.minus(alloSum);\n //get largest allocation.\n let currMax = new Big(0);\n let currMaxInd = 0;\n for (var i = 0; i < allocations.length; i++) {\n if (allocations[i].gt(currMax)) {\n currMaxInd = i;\n currMax = allocations[i];\n }\n }\n let newAllocations = [];\n for (var j = 0; j < allocations.length; j++) {\n if (j === currMaxInd) {\n newAllocations.push(allocations[j].plus(offset).toString());\n } else {\n newAllocations.push(allocations[j].toString());\n }\n }\n return newAllocations;\n}\n","/* eslint-disable no-undef */\n////////////////////////////////////////////////////////////////////////////\n// SMART ROUTE SWAP LOGIC\n////////////////////////////////////////////////////////////////////////////\nimport Big from 'big.js';\nimport { checkIntegerSumOfAllocations } from './parallelSwapLogic';\n\nimport { TokenMetadata } from '../types';\n\nimport { ftGetTokenMetadata } from '../ref';\n\nimport { percentLess, toNonDivisibleNumber } from '../utils';\nBig.RM = 0;\nBig.DP = 40;\nBig.NE = -40;\nBig.PE = 40;\n\nfunction bisqrt(value) {\n // For some ridiculous reason, the .sqrt() method for Big decimals is extremely slow (~10-20ms),\n // which isn't so bad until you need to use it a bunch of times.\n // Since we're dealing with super large numbers anyway, we can convert the Big decimal number into a BigInt,\n // then run this BigInt Newton iteration square root function instead, and then convert back into a\n // Big number. And it speeds up the operation by a crazy factor, ~10x faster.\n if (value < BigInt(0)) {\n throw 'square root of negative numbers is not supported';\n }\n\n if (value < BigInt(2)) {\n return value;\n }\n\n function newtonIteration(n, x0) {\n const x1 = (n / x0 + x0) >> BigInt(1);\n if (x0 === x1 || x0 === x1 - BigInt(1)) {\n return x0;\n }\n return newtonIteration(n, x1);\n }\n\n return newtonIteration(value, BigInt(1));\n}\n\nfunction getBetaForRoute(route, path) {\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n let p = route[0];\n var beta = new Big(p.reserves[path[0]]);\n } else if (route.length == 2) {\n let p1 = route[0];\n let p2 = route[1];\n var beta = new Big(p1.reserves[path[0]]).times(\n new Big(p2.reserves[path[1]])\n );\n }\n return beta;\n}\n\nfunction getEpsilonForRoute(route, path) {\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n // Single Hop case\n let p = route[0];\n let gamma = new Big(10000).minus(new Big(p.fee)).div(new Big(10000));\n var epsilon = Big(gamma);\n } else if (route.length == 2) {\n //Double Hop Case\n let p1 = route[0];\n let p2 = route[1];\n let gamma1 = new Big(10000).minus(new Big(p1.fee)).div(new Big(10000));\n let gamma2 = new Big(10000).minus(new Big(p2.fee)).div(Big(10000));\n var epsilon = new Big(p2.reserves[path[1]])\n .times(new Big(gamma1))\n .plus(new Big(p1.reserves[path[1]]).times(gamma1).times(gamma2));\n }\n return epsilon;\n}\n\nfunction getAlphaForRoute(route, path) {\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n //console.log('single hop')\n let p = route[0];\n let inputToken = path[0];\n let outputToken = path[1];\n let gamma = new Big(10000).minus(new Big(p.fee)).div(new Big(10000));\n let key1 = p.token1Id;\n let key2 = p.token2Id;\n let val1 = p.token1Supply;\n let val2 = p.token2Supply;\n p['reserves'] = { [key1]: val1, [key2]: val2 };\n var alpha = new Big(p.reserves[inputToken]).times(\n new Big(p.reserves[outputToken]).times(new Big(gamma))\n );\n } else if (route.length == 2) {\n //console.log('double hop')\n let p1 = route[0];\n let p2 = route[1];\n let key11 = p1.token1Id;\n let key12 = p1.token2Id;\n let val11 = p1.token1Supply;\n let val12 = p1.token2Supply;\n p1['reserves'] = { [key11]: val11, [key12]: val12 };\n let key21 = p2.token1Id;\n let key22 = p2.token2Id;\n let val21 = p2.token1Supply;\n let val22 = p2.token2Supply;\n p2['reserves'] = { [key21]: val21, [key22]: val22 };\n let inputToken = path[0];\n let middleToken = path[1];\n let outputToken = path[2];\n let gamma1 = new Big(10000).minus(Big(p1.fee)).div(new Big(10000));\n let gamma2 = new Big(10000).minus(new Big(p2.fee)).div(new Big(10000));\n let alpha1 = new Big(p1.reserves[inputToken])\n .times(new Big(p1.reserves[middleToken]))\n .times(gamma1);\n let alpha2 = new Big(p2.reserves[middleToken])\n .times(new Big(p2.reserves[outputToken]))\n .times(gamma2);\n var alpha = alpha1.times(alpha2);\n }\n return alpha;\n}\n\nfunction getAlphaSumFromRoutes(routes, nodeRoutes) {\n let alphaSum = new Big(0);\n for (var i in routes) {\n let route = routes[i];\n let nodeRoute = nodeRoutes[i];\n let alpha = getAlphaForRoute(route, nodeRoute);\n // console.log('alpha is...');\n // console.log(alpha.toString());\n // below, we are replacing the built-in Big sqrt() method with a\n // newton-iteration BigInt sqrt function, to speed it up by 10x.\n let radical = new Big(bisqrt(BigInt(new Big(alpha).round().toFixed())));\n // let radical = new Big(alpha).sqrt();\n let epsilon = getEpsilonForRoute(route, nodeRoute);\n let denom = new Big(epsilon);\n alphaSum = alphaSum.plus(radical.div(denom));\n }\n return alphaSum;\n}\n\nfunction getBetaSumFromRoutes(routes, nodeRoutes) {\n let betaSum = new Big(0);\n for (var i in routes) {\n let route = routes[i];\n let nodeRoute = nodeRoutes[i];\n let num = new Big(getBetaForRoute(route, nodeRoute));\n let denom = new Big(getEpsilonForRoute(route, nodeRoute));\n betaSum = betaSum.plus(num.div(denom));\n }\n return betaSum;\n}\n\nfunction getPhiFromRoutes(routes, nodeRoutes, totalInput) {\n let alphaSum = getAlphaSumFromRoutes(routes, nodeRoutes);\n let betaSum = getBetaSumFromRoutes(routes, nodeRoutes);\n let phi = new Big(totalInput).plus(betaSum).div(alphaSum);\n return phi;\n}\n\nfunction getAllocationForRoute(phi, route, path) {\n let alpha = getAlphaForRoute(route, path);\n let beta = getBetaForRoute(route, path);\n let epsilon = getEpsilonForRoute(route, path);\n // below, we are replacing the built-in Big sqrt() method with a\n // newton-iteration BigInt sqrt function, to speed it up by 10x.\n let allocation = new Big(phi)\n .abs()\n .times(new Big(bisqrt(BigInt(new Big(alpha).round().toFixed()))))\n .minus(beta)\n .div(epsilon);\n return allocation;\n}\n\nfunction getAllocationVectorForRoutes(phi, routes, nodeRoutes) {\n let allocationVec = [];\n for (var i in routes) {\n allocationVec.push(getAllocationForRoute(phi, routes[i], nodeRoutes[i]));\n }\n return allocationVec;\n}\n\nfunction getOptimalAllocationForRoutes(routes, nodeRoutes, totalInput) {\n // console.log(\"CALLING GET OPTIMAL ALLOCATION FOR ROUTES:\")\n // console.log(routes)\n var totalInput = new Big(totalInput);\n let phi = getPhiFromRoutes(routes, nodeRoutes, totalInput);\n // console.log('PHI CALCULATED TO BE...')\n // console.log(phi.toString())\n let allocations = getAllocationVectorForRoutes(phi, routes, nodeRoutes);\n if (allocations.every(item => item.lt(new Big(0)))) {\n allocations = allocations.map(item => item.times(new Big(-1.0)));\n }\n if (allocations.some(item => item.lt(new Big(0)))) {\n allocations = reduceRoutes(routes, nodeRoutes, allocations, totalInput);\n }\n let sumAllocations = allocations.reduce((a, b) => a.plus(b), new Big(0));\n let normalizedAllocations = allocations.map(a =>\n a.div(sumAllocations).times(new Big(totalInput))\n );\n return normalizedAllocations;\n}\n\nfunction reduceRoutes(routes, nodeRoutes, allocationVec, totalInput) {\n // console.log(\"RUNNING REDUCE ROUTES\")\n var totalInput = new Big(totalInput);\n let goodIndices = [];\n for (var i in allocationVec) {\n let dx = allocationVec[i];\n // console.log('DX IS...')\n // console.log(dx.toString())\n if (dx.gt(new Big(0))) {\n goodIndices.push(i);\n }\n }\n // console.log('GOOD INDICES ARE...');\n // console.log(goodIndices);\n let newRoutes = [];\n let newNodeRoutes = [];\n for (var i in goodIndices) {\n let goodIndex = goodIndices[i];\n newRoutes.push(routes[goodIndex]);\n newNodeRoutes.push(nodeRoutes[goodIndex]);\n }\n allocationVec = getOptimalAllocationForRoutes(\n newRoutes,\n newNodeRoutes,\n totalInput\n );\n let allocationDict = {};\n for (var i in goodIndices) {\n allocationDict[goodIndices[i]] = allocationVec[i];\n }\n var allocationVecNew = [];\n for (var i in routes) {\n if (goodIndices.includes(i)) {\n allocationVecNew.push(allocationDict[i]);\n } else {\n let zeroAllocation = new Big(0);\n allocationVecNew.push(zeroAllocation);\n }\n }\n return allocationVecNew;\n}\n\nfunction getNodeRoutesFromPathsAndPoolChains(paths, poolChains) {\n let multiplicity = [];\n for (var i in poolChains) {\n let pc = poolChains[i];\n let mul = pc\n .map(item => item.length)\n .reduce((elem1, elem2) => elem1 * elem2, 1);\n multiplicity.push(mul);\n }\n let nodeRoutes = [];\n for (var j in paths) {\n let path = paths[j];\n let m = multiplicity[j];\n for (var k = 0; k < m; k++) {\n nodeRoutes.push(path);\n }\n }\n return nodeRoutes;\n}\n\nfunction getPoolChainFromPaths(paths, pools, threshold = 0.001) {\n let poolChains = [];\n for (var pathInd in paths) {\n let path = paths[pathInd];\n let chain = [];\n let pairs = [];\n for (var i = 0; i < path.length - 1; i++) {\n pairs.push([path[i], path[i + 1]]);\n }\n for (var pairInd in pairs) {\n let pair = pairs[pairInd];\n // console.log(pair);\n let tokenPools = getPoolsByToken1ANDToken2(pools, pair[0], pair[1]);\n chain.push(tokenPools);\n }\n poolChains.push(chain);\n }\n // return poolChains;\n let culledPoolChains = getCulledPoolChains(poolChains, threshold);\n\n return culledPoolChains;\n}\n\nfunction getCulledPoolChains(poolChains, threshold = 0.001) {\n let newChains = [];\n for (var pathInd in poolChains) {\n let path = poolChains[pathInd];\n let newPath = [];\n for (var legInd in path) {\n let leg = path[legInd];\n let culledPath = cullPoolsWithInsufficientLiquidity(leg, threshold);\n newPath.push(culledPath);\n }\n newChains.push(newPath);\n }\n return newChains;\n}\n\nfunction getRoutesFromPoolChain(poolChains) {\n let routes = [];\n for (var pci in poolChains) {\n let poolChain = poolChains[pci];\n //get cartesian product of each pool chain to get the list of routes.\n let newRoutes = cartesianProduct(poolChain);\n routes.push(...newRoutes);\n }\n for (var i in routes) {\n if (!routes[i].length) {\n routes[i] = [routes[i]];\n }\n }\n return routes;\n}\n\nfunction getOutputSingleHop(pool, inputToken, outputToken, totalInput) {\n var totalInput = new Big(totalInput);\n // check if pool is forward or backward for inputToken/outputToken cf. token1Id/token2Id\n if (inputToken === pool.token1Id && outputToken === pool.token2Id) {\n // forward Pool\n var reserves = {\n [inputToken]: new Big(pool.token1Supply),\n [outputToken]: new Big(pool.token2Supply),\n };\n } else if (inputToken === pool.token2Id && outputToken === pool.token1Id) {\n // reverse pool\n var reserves = {\n [outputToken]: new Big(pool.token1Supply),\n [inputToken]: new Big(pool.token2Supply),\n };\n } else {\n return new Big(0);\n }\n let gamma = new Big(10000).minus(new Big(pool.fee)).div(new Big(10000));\n // console.log(totalInput)\n // console.log(gamma)\n // console.log(reserves)\n let num = totalInput.times(gamma).times(reserves[outputToken]);\n let denom = reserves[inputToken].plus(gamma.times(totalInput));\n return num.div(denom);\n}\n\nfunction getOutputDoubleHop(\n pools,\n inputToken,\n middleToken,\n outputToken,\n totalInput\n) {\n var totalInput = new Big(totalInput);\n for (var poolIndex in pools) {\n let p = pools[poolIndex];\n p['gamma'] = new Big(10000).minus(new Big(p.fee)).div(new Big(10000));\n }\n let p1 = pools[0];\n let p2 = pools[1];\n\n if (inputToken === p1.token1Id && middleToken === p1.token2Id) {\n // forward Pool\n p1['reserves'] = {\n [inputToken]: new Big(p1.token1Supply),\n [middleToken]: new Big(p1.token2Supply),\n };\n } else if (middleToken === p1.token1Id && inputToken === p1.token2Id) {\n //reverse pool\n p1['reserves'] = {\n [middleToken]: new Big(p1.token1Supply),\n [inputToken]: new Big(p1.token2Supply),\n };\n }\n\n if (middleToken === p2.token1Id && outputToken === p2.token2Id) {\n // forward Pool\n p2['reserves'] = {\n [middleToken]: new Big(p2.token1Supply),\n [outputToken]: new Big(p2.token2Supply),\n };\n } else if (outputToken === p2.token1Id && middleToken === p2.token2Id) {\n //reverse pool\n p2['reserves'] = {\n [outputToken]: new Big(p2.token1Supply),\n [middleToken]: new Big(p2.token2Supply),\n };\n }\n\n let c1 = new Big(p1.reserves[middleToken]);\n let a1 = new Big(p1.reserves[inputToken]);\n let c2 = new Big(p2.reserves[middleToken]);\n let b2 = new Big(p2.reserves[outputToken]);\n let gamma1 = p1.gamma;\n let gamma2 = p2.gamma;\n let num = totalInput\n .times(c1)\n .times(b2)\n .times(gamma1)\n .times(gamma2);\n let denom = c2\n .times(a1)\n .plus(\n totalInput.times(c2.times(gamma1).plus(c1.times(gamma1).times(gamma2)))\n );\n // denom = c2*a1 + totalInput * (c2*gamma1 + c1*gamma1*gamma2)\n\n return num.div(denom);\n}\n\nfunction getOutputFromRoute(route, nodeRoute, allocation) {\n if (new Big(allocation).eq(new Big(0))) {\n return new Big(0);\n } else {\n var allocation = new Big(allocation);\n }\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n // single hop\n let inputToken = nodeRoute[0];\n let outputToken = nodeRoute[1];\n let pool = route[0];\n var output = getOutputSingleHop(pool, inputToken, outputToken, allocation);\n } else if (route.length == 2) {\n // DOUBLE HOP\n let inputToken = nodeRoute[0];\n let middleToken = nodeRoute[1];\n let outputToken = nodeRoute[2];\n let pools = route;\n var output = getOutputDoubleHop(\n pools,\n inputToken,\n middleToken,\n outputToken,\n allocation\n );\n }\n return output;\n}\n\nfunction getOptOutputVec(routes, nodeRoutes, totalInput) {\n let allocations = getOptimalAllocationForRoutes(\n routes,\n nodeRoutes,\n totalInput\n );\n let result = [];\n for (var i in routes) {\n let route = routes[i];\n let nodeRoute = nodeRoutes[i];\n let allocation = allocations[i];\n let output = getOutputFromRoute(route, nodeRoute, allocation);\n result.push(output);\n }\n return {\n result: result,\n allocations: allocations,\n };\n //NOTE -- I made this return an object instead of the tuple returned in python. need to check the places it is called, and specify\n // result field instead of tuple 0 position, and allocations field instead of tuple 1 position.\n}\n\nfunction getBestOptInputAndOutputSlower(routes, nodeRoutes, totalInput) {\n let refDict = getOptOutputVecRefined(routes, nodeRoutes, totalInput);\n let outputRefined = refDict.result;\n let inputRefined = refDict.allocations;\n inputRefined = checkIntegerSumOfAllocations(inputRefined, totalInput);\n let rawDict = getOptOutputVec(routes, nodeRoutes, totalInput);\n let outputRaw = rawDict.result;\n let inputRaw = rawDict.allocations;\n inputRaw = checkIntegerSumOfAllocations(inputRaw, totalInput);\n let res1 = new Big(0);\n let res2 = new Big(0);\n\n for (var n in outputRefined) {\n res1 = res1.plus(outputRefined[n]);\n }\n for (var nn in outputRaw) {\n res2 = res2.plus(outputRaw[nn]);\n }\n // console.log('COMPARING SINGLE HOPS VS DOUBLE')\n // console.log(res1.toString())\n // console.log(res2.toString())\n if (res1.gt(res2)) {\n return { input: inputRefined, output: res1 };\n } else {\n return { input: inputRaw, output: res2 };\n }\n}\n\nfunction getBestOptInputAndOutput(routes, nodeRoutes, totalInput) {\n // let refDict = getOptOutputVecRefined(routes, nodeRoutes, totalInput);\n // let outputRefined = refDict.result;\n // let inputRefined = refDict.allocations;\n // inputRefined = checkIntegerSumOfAllocations(inputRefined, totalInput);\n let rawDict = getOptOutputVec(routes, nodeRoutes, totalInput);\n let outputRaw = rawDict.result;\n let inputRaw = rawDict.allocations;\n inputRaw = checkIntegerSumOfAllocations(inputRaw, totalInput);\n let res1 = new Big(0);\n let res2 = new Big(0);\n\n let res = outputRaw\n .map(v => new Big(v))\n .reduce((bv1, bv2) => bv1.plus(bv2), new Big(0));\n\n return {\n input: inputRaw,\n output: res,\n };\n}\n\nfunction getBestOptOutput(routes, nodeRoutes, totalInput) {\n let outputRefined = getOptOutputVecRefined(routes, nodeRoutes, totalInput)\n .result;\n let outputRaw = getOptOutputVec(routes, nodeRoutes, totalInput).result;\n let res1 = new Big(0);\n let res2 = new Big(0);\n\n for (var n in outputRefined) {\n res1 = res1.plus(outputRefined[n]);\n }\n for (var nn in outputRaw) {\n res2 = res2.plus(outputRaw[nn]);\n }\n if (res1.gt(res2)) {\n return res1;\n } else {\n return res2;\n }\n}\n\nfunction getBestOptInput(routes, nodeRoutes, totalInput) {\n let refDict = getOptOutputVecRefined(routes, nodeRoutes, totalInput);\n let outputRefined = refDict.result;\n let inputRefined = refDict.allocations;\n inputRefined = checkIntegerSumOfAllocations(inputRefined, totalInput);\n let rawDict = getOptOutputVec(routes, nodeRoutes, totalInput);\n let outputRaw = rawDict.result;\n let inputRaw = rawDict.allocations;\n inputRaw = checkIntegerSumOfAllocations(inputRaw, totalInput);\n let res1 = new Big(0);\n let res2 = new Big(0);\n\n for (var n in outputRefined) {\n res1 = res1.plus(outputRefined[n]);\n }\n for (var nn in outputRaw) {\n res2 = res2.plus(outputRaw[nn]);\n }\n // console.log('COMPARING SINGLE HOPS VS DOUBLE')\n // console.log(res1.toString())\n // console.log(res2.toString())\n if (res1.gt(res2)) {\n return inputRefined;\n } else {\n return inputRaw;\n }\n}\n\nfunction getOptOutputVecRefined(routes, nodeRoutes, totalInput) {\n // need to calculate full result.\n // if direct pools exist, need to calculate parallel result. if not, this portion is set to zero output.\n\n // need to compare between outputs of the two results above.\n\n let initLengthRoutes = routes.length;\n let directRouteInds = [];\n for (var routeInd in routes) {\n let route = routes[routeInd];\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n directRouteInds.push(routeInd);\n }\n }\n // console.log('DIRECT ROUTE INDS ARE')\n // console.log(directRouteInds)\n // if (directRouteInds.length < 1) {\n var fullResultAllocations = getOptimalAllocationForRoutes(\n routes,\n nodeRoutes,\n totalInput\n );\n var fullResult = [];\n for (var i in routes) {\n let r = routes[i];\n let nr = nodeRoutes[i];\n let a = fullResultAllocations[i];\n let output = getOutputFromRoute(r, nr, a);\n fullResult.push(output);\n }\n var fullResultTotal = fullResult.reduce((a, b) => a.plus(b), new Big(0));\n\n // } else {\n if (directRouteInds.length > 0) {\n // console.log('DOING SINGLE HOP ONLY')\n let droutes = [];\n let dnodeRoutes = [];\n for (var dri in directRouteInds) {\n let ind = directRouteInds[dri];\n droutes.push(routes[ind]);\n dnodeRoutes.push(nodeRoutes[ind]);\n }\n let dallocations = getOptimalAllocationForRoutes(\n droutes,\n dnodeRoutes,\n totalInput\n );\n let dallocDict = {};\n for (var dd in dallocations) {\n dallocDict[directRouteInds[dd]] = dallocations[dd];\n }\n var pallocations = [];\n\n for (var ii = 0; ii < initLengthRoutes; ii++) {\n if (directRouteInds.includes(ii.toString())) {\n //console.log('ADDING ALLOCATION FOR SINGLE ROUTE')\n pallocations.push(dallocDict[ii]);\n } else {\n pallocations.push(new Big(0));\n }\n }\n var presult = [];\n for (var j in routes) {\n let route = routes[j];\n let nodeRoute = nodeRoutes[j];\n let allocation = pallocations[j];\n let output = getOutputFromRoute(route, nodeRoute, allocation);\n presult.push(output);\n }\n var presultTotal = presult.reduce((a, b) => a.plus(b), new Big(0));\n } else {\n var presultTotal = new Big(0);\n }\n if (presultTotal.gt(fullResultTotal)) {\n var result = presult;\n var allocations = pallocations;\n } else {\n var result = fullResult;\n var allocations = fullResultAllocations;\n }\n // NEED TO COMPARE BETWEEEN DIRECT AND MULTI HOP TO GET BEST OUTPUT\n return {\n result: result,\n allocations: allocations,\n };\n}\n\nasync function getBestOptimalAllocationsAndOutputs(\n pools,\n inputToken,\n outputToken,\n totalInput,\n maxPathLength = 3,\n threshold = 0.001\n) {\n var totalInput = new Big(totalInput);\n let paths = await getPathsFromPools(\n pools,\n inputToken,\n outputToken,\n maxPathLength\n );\n if (!paths.length) {\n return {\n allocations: [],\n outputs: new Big(0),\n routes: [],\n nodeRoutes: [],\n };\n }\n let poolChains = await getPoolChainFromPaths(paths, pools, threshold);\n\n let routes = await getRoutesFromPoolChain(poolChains);\n let nodeRoutes = await getNodeRoutesFromPathsAndPoolChains(paths, poolChains);\n // let allocations = await getBestOptInput(routes, nodeRoutes, totalInput);\n // // fix integer rounding for allocations:\n // allocations = checkIntegerSumOfAllocations(allocations, totalInput);\n // let outputs = getBestOptOutput(routes, nodeRoutes, totalInput);\n let inputOutput = await getBestOptInputAndOutput(\n routes,\n nodeRoutes,\n totalInput\n );\n let allocations = inputOutput.input;\n let outputs = inputOutput.output;\n\n return {\n allocations: allocations,\n outputs: outputs,\n routes: routes,\n nodeRoutes: nodeRoutes,\n };\n}\n\nfunction getHopsFromRoutes(routes, nodeRoutes, allocations) {\n let hops = [];\n for (var i in routes) {\n var route = routes[i];\n var nodeRoute = nodeRoutes[i];\n var allocation = allocations[i];\n if (!route.length) {\n route = [route];\n }\n if (!route[0]) {\n continue;\n }\n let hop = {\n pool: route[0],\n allocation: allocation,\n inputToken: nodeRoute[0],\n outputToken: nodeRoute[1],\n };\n hops.push(hop);\n }\n return hops;\n}\n\nfunction distillHopsByPool(hops) {\n // console.log('some HOPS =');\n // console.log(hops);\n let distilledHops = [];\n let poolIds = [];\n let poolId2allocation = {};\n for (var i in hops) {\n let hop = hops[i];\n if (hop.allocation === '0') {\n continue;\n }\n // console.log(`HOP ${i} IS...`);\n // console.log(hop);\n let poolId = hop.pool['id'];\n if (poolIds.includes(poolId)) {\n poolId2allocation[poolId] = new Big(poolId2allocation[poolId])\n .plus(new Big(hop.allocation))\n .toString();\n } else {\n poolId2allocation[poolId] = new Big(hop.allocation).toString();\n poolIds.push(poolId);\n }\n }\n // let poolsWithOrder = [...new Set(...hops.map((item) => item.pool))]\n let keys = Object.keys(poolId2allocation);\n for (var j in keys) {\n var poolId = keys[j];\n let hop = hops.filter(\n item => item.pool.id.toString() === poolId.toString()\n )[0];\n let distilledHop = {\n pool: hop.pool,\n allocation: poolId2allocation[poolId],\n inputToken: hop.inputToken,\n outputToken: hop.outputToken,\n };\n distilledHops.push(distilledHop);\n }\n return distilledHops;\n}\n\nfunction getDistilledHopActions(distilledHops, slippageTolerance) {\n let actions = [];\n for (var i in distilledHops) {\n let hop = distilledHops[i];\n let expectedAmountOut = getOutputSingleHop(\n hop.pool,\n hop.inputToken,\n hop.outputToken,\n hop.allocation\n );\n let minimumAmountOut = new Big(expectedAmountOut)\n .times(new Big(1).minus(new Big(slippageTolerance).div(100)))\n .round()\n .toString(); //Here, assume slippage tolerance is a percentage. So 1% would be 1.0\n let action = {\n pool_id: hop.pool.id,\n token_in: hop.inputToken,\n token_out: hop.outputToken,\n amount_in: hop.allocation,\n min_amount_out: minimumAmountOut,\n };\n actions.push(action);\n }\n return actions;\n}\nfunction getMiddleTokenTotalsFromFirstHopActions(firstHopActions) {\n let middleTokens = [...new Set(firstHopActions.map(item => item.token_out))];\n let middleTokenTotals = {};\n for (var i in middleTokens) {\n let middleToken = middleTokens[i];\n let mtActions = firstHopActions.filter(\n item => item.token_out === middleToken\n );\n let mtTotal = mtActions\n .map(item => new Big(item.min_amount_out))\n .reduce((a, b) => a.plus(b), new Big(0))\n .toString();\n middleTokenTotals[middleToken] = mtTotal;\n }\n return middleTokenTotals;\n}\nfunction getRoutesAndAllocationsForMiddleToken(\n routes,\n nodeRoutes,\n allocations,\n middleToken,\n middleTokenTotal\n) {\n // get routes that use middle token.\n // (input route alloction) /sum(input allocations of routes with middle token) * (total_middleToken)\n let mask = [];\n for (var i in nodeRoutes) {\n if (nodeRoutes[i][1] === middleToken) {\n mask.push(true);\n } else {\n mask.push(false);\n }\n }\n let froutes = [];\n let fallocations = [];\n let fnoderoutes = [];\n for (var i in routes) {\n if (mask[i]) {\n froutes.push(routes[i]);\n fallocations.push(allocations[i]);\n fnoderoutes.push(nodeRoutes[i]);\n }\n }\n let sumfallocations = fallocations.reduce(\n (a, b) => new Big(a).plus(new Big(b)),\n new Big(0)\n );\n let middleAllocations = fallocations.map(item =>\n new Big(item).div(sumfallocations).times(new Big(middleTokenTotal))\n );\n let secondHopRoutes = froutes.map(item => [item[1]]);\n let secondHopNodeRoutes = fnoderoutes.map(item => [item[1], item[2]]);\n middleAllocations = checkIntegerSumOfAllocations(\n middleAllocations,\n middleTokenTotal\n );\n return {\n routes: secondHopRoutes,\n nodeRoutes: secondHopNodeRoutes,\n allocations: middleAllocations,\n };\n}\n\nfunction getHopActionsFromRoutes(routes, nodeRoutes, allocations) {\n // console.log('INSIDE GET HOP ACTIONS FROM ROUTES');\n // console.log('ROUTES ARE...');\n // console.log(routes);\n // console.log('NODE ROUTES ARE...');\n // console.log(nodeRoutes);\n // console.log('ALLOCATIONS ARE...');\n // console.log(allocations);\n let totalInput = allocations\n .map(a => new Big(a))\n .reduce((a, b) => a.plus(b), new Big(0))\n .toString();\n let hops = [];\n for (var i in routes) {\n var route = routes[i];\n var nodeRoute = nodeRoutes[i];\n var allocation = allocations[i];\n if (new Big(allocation).eq(new Big(0))) {\n continue;\n }\n if (!route.length) {\n route = [route];\n }\n if (!route[0]) {\n continue;\n }\n for (var j in route) {\n let pool = route[j];\n // console.log('J IS...');\n // console.log(j);\n // console.log('NODE ROUTE IS...');\n // console.log(nodeRoute);\n if (j == 0) {\n //first hop.\n // console.log(nodeRoute[0]);\n // console.log(nodeRoute[1]);\n var hop = {\n pool: pool,\n allocation: allocation.toString(),\n inputToken: nodeRoute[0],\n outputToken: nodeRoute[1],\n nodeRoute: nodeRoute,\n route: route,\n allRoutes: routes,\n allNodeRoutes: nodeRoutes,\n totalInputAmount: totalInput,\n allAllocations: allocations,\n };\n // console.log('FIRST HOP IS...');\n // console.log(hop);\n hops.push(hop);\n if (nodeRoute.length > 2) {\n var middleTokenAllocation = getOutputSingleHop(\n pool,\n nodeRoute[0],\n nodeRoute[1],\n allocation\n );\n }\n } else {\n // second hop\n var hop = {\n pool: pool,\n allocation: middleTokenAllocation.toString(),\n inputToken: nodeRoute[1],\n outputToken: nodeRoute[2],\n nodeRoute: nodeRoute,\n route: route,\n allRoutes: routes,\n allNodeRoutes: nodeRoutes,\n totalInputAmount: totalInput,\n allAllocations: allocations,\n };\n // console.log('SECOND HOP IS...');\n // console.log(hop);\n hops.push(hop);\n }\n }\n }\n // console.log('HOP ACTIONS FOUND TO BE');\n // console.log(hops);\n return hops;\n}\n\n// TODO: Clean this function. I don't need all the \"actions\" just the hops.\n// TODO: re-order actions to ensure each route is complete with zero input for second hop before starting next route.\nfunction getActionListFromRoutesAndAllocations(\n routes,\n nodeRoutes,\n allocations\n) {\n // REPLACE THE CODE BELOW WITH THE FUNCTION HERE.\n return getHopActionsFromRoutes(routes, nodeRoutes, allocations);\n var actions = [];\n var all_hops = [];\n let firstHops = getHopsFromRoutes(routes, nodeRoutes, allocations);\n\n firstHops = firstHops.filter(hop => new Big(hop.allocation).gt(new Big(0)));\n all_hops.push(...firstHops);\n let distilledFirstHops = distillHopsByPool(firstHops);\n let firstHopActions = getDistilledHopActions(\n distilledFirstHops,\n slippageTolerance\n );\n actions.push(...firstHopActions);\n let middleTokenTotals = getMiddleTokenTotalsFromFirstHopActions(\n firstHopActions\n );\n // console.log('first hop actions are...');\n // console.log(firstHopActions);\n let middleTokens = Object.keys(middleTokenTotals);\n // console.log('middle token totals are...');\n // console.log(middleTokenTotals);\n // console.log('middle tokens are...');\n // console.log(middleTokens);\n for (var tokenIndex in middleTokens) {\n var secondHops = [];\n let middleToken = middleTokens[tokenIndex];\n // console.log('current middle token is ');\n // console.log(middleToken);\n let middleTokenTotal = middleTokenTotals[middleToken];\n // console.log('current middle token total is...');\n // console.log(middleTokenTotal);\n let middleTokenRoutesWithAllocations = getRoutesAndAllocationsForMiddleToken(\n routes,\n nodeRoutes,\n allocations,\n middleToken,\n middleTokenTotal\n );\n // console.log('current middle tokens routes with allocations are...');\n // console.log(middleTokenRoutesWithAllocations);\n let middleTokenRoutes = middleTokenRoutesWithAllocations.routes;\n let middleTokenAllocations = middleTokenRoutesWithAllocations.allocations;\n let middleTokenNodeRoutes = middleTokenRoutesWithAllocations.nodeRoutes;\n // console.log('middle token routes are...');\n // console.log(middleTokenRoutes);\n // console.log('middle token allocations are...');\n // console.log(middleTokenAllocations);\n // console.log('middle token node routes are...');\n // console.log(middleTokenNodeRoutes);\n secondHops.push(\n ...getHopsFromRoutes(\n middleTokenRoutes,\n middleTokenNodeRoutes,\n middleTokenAllocations\n )\n );\n // console.log('CURRENT SECOND HOPS', secondHops);\n // console.log(secondHops.length);\n // console.log(secondHops.map((hop) => hop.allocation));\n // console.log('filter out zero allocation 2nd hops:');\n secondHops = secondHops.filter(hop =>\n new Big(hop.allocation).gt(new Big(0))\n );\n // console.log(secondHops);\n all_hops.push(...secondHops);\n // console.log('second hops are currently...');\n // console.log(secondHops);\n let distilledSecondHopsForToken = distillHopsByPool(secondHops);\n // console.log('distilled second hops are...');\n let secondHopActionsForToken = getDistilledHopActions(\n distilledSecondHopsForToken,\n slippageTolerance\n );\n // console.log(secondHopActionsForToken);\n actions.push(...secondHopActionsForToken);\n }\n\n //TODO: NEED TO RUN INTEGER ROUNDING FUNCTION ON MIDDLE TOKEN ALLOCATIONS\n\n // TODO: check the node routes. for double-hop cases, find the hop action for each hop.\n // For now, we are assuming no parallel swaps if there is a double-hop.\n\n // Possible cases:\n // (1) 1 single-hop.\n // (2) Parallel single-hop ?\n // (3) 1 double-hop\n // (4) 2 double-hops\n\n // We only have to worry about re-ordering the actions for cases (3) and (4).\n\n let orderedHops = orderHops(all_hops, routes, nodeRoutes, allocations);\n\n // console.log('ALL HOPS', all_hops);\n return orderedHops;\n // return actions;\n}\n\nfunction orderHops(hops, routes, nodeRoutes, allocations) {\n // first get rid of zero allocation routes\n // console.log('NODE ROUTES ARE...');\n // console.log(nodeRoutes);\n let filteredRoutes = [];\n let filteredNodeRoutes = [];\n let filteredAllocations = [];\n for (var i in routes) {\n // remove zero-allocation routes.\n let allocation = new Big(allocations[i]);\n if (allocation.gt(new Big(0))) {\n filteredAllocations.push(allocation);\n filteredRoutes.push(routes[i]);\n filteredNodeRoutes.push(nodeRoutes[i]);\n }\n // console.log('FILTERED NODE ROUTES ARE...');\n // console.log(filteredNodeRoutes);\n }\n // next check node routes to see if it is case 1, 2, 3, or 4.\n // Possible cases:\n // (1) 1 single-hop.\n // (2) Parallel single-hop ?\n // (3) 1 double-hop\n // (4) 2 double-hops\n\n if (filteredNodeRoutes.length === 1) {\n // only one route.\n let currentNodeRoute = filteredNodeRoutes[0];\n if (currentNodeRoute.length === 2) {\n // case 1.\n return hops;\n } else {\n // case 3. assume there are only 3 nodes (double-hop)\n //make sure order of hops is such that input token precedes output token.\n //make sure the amount_in for second hop is zero (which will grab all of output of first hop to use.)\n let firstHop = hops.filter(\n hop => hop.inputToken === currentNodeRoute[0]\n )[0];\n let secondHop = hops.filter(\n hop => hop.inputToken === currentNodeRoute[1]\n )[0];\n // set second hop amount in to 0 so that it will use whatever was generated by hop 1.\n secondHop.pool.partialAmountIn = '0';\n\n let orderedHops = [firstHop, secondHop];\n return orderedHops;\n }\n } else if (filteredNodeRoutes.length === 2) {\n // two routes.\n let lengthNodeRoutes = filteredNodeRoutes.map(nr => nr.length);\n // sub cases:\n // [2,2] -- parallel swap. (direct) -- case 2\n // [2,3] -- direct swap in parallel with double hop.\n // [3,2] -- double hop in parallel with direct swap.\n // [3,3] -- double hop in parallel with double hop. -- case 4\n let orderedHops = [];\n if (arrayEquals(lengthNodeRoutes, [2, 2])) {\n return hops;\n } else if (arrayEquals(lengthNodeRoutes, [2, 3])) {\n directNodeRoute = filteredNodeRoutes[0];\n doubleNodeRoute = filteredNodeRoutes[1];\n let firstHop = hops.filter(\n hop =>\n hop.inputToken === directNodeRoute[0] &&\n hop.outputToken === directNodeRoute[1]\n )[0];\n let secondHop = hops.filter(\n hop => hop.inputToken === doubleNodeRoute[0]\n )[0];\n let thirdHop = hops.filter(\n hop => hop.outputToken === doubleNodeRoute[2]\n )[0];\n // set third hop amount in to 0 so that it will use whatever was generated by hop 2.\n thirdHop.pool.partialAmountIn = '0';\n orderedHops = [firstHop, secondHop, thirdHop];\n return orderedHops;\n } else if (arrayEquals(lengthNodeRoutes, [3, 2])) {\n directNodeRoute = filteredNodeRoutes[1];\n doubleNodeRoute = filteredNodeRoutes[0];\n let firstHop = hops.filter(\n hop =>\n hop.inputToken === directNodeRoute[0] &&\n hop.outputToken === directNodeRoute[1]\n )[0];\n let secondHop = hops.filter(\n hop => hop.inputToken === doubleNodeRoute[0]\n )[0];\n let thirdHop = hops.filter(\n hop => hop.outputToken === doubleNodeRoute[2]\n )[0];\n // set third hop amount in to 0 so that it will use whatever was generated by hop 2.\n thirdHop.pool.partialAmountIn = '0';\n orderedHops = [firstHop, secondHop, thirdHop];\n return orderedHops;\n } else if (arrayEquals(lengthNodeRoutes, [3, 3])) {\n orderedHops = [];\n\n for (var i in filteredNodeRoutes) {\n let doubleNodeRoute = filteredNodeRoutes[i];\n let doubleHopMiddleToken = doubleNodeRoute[1];\n let firstHop = hops.filter(\n hop =>\n hop.inputToken === doubleNodeRoute[0] &&\n hop.outputToken === doubleHopMiddleToken\n )[0];\n let secondHop = hops.filter(\n hop =>\n hop.inputToken === doubleHopMiddleToken &&\n hop.outputToken === doubleNodeRoute[2]\n )[0];\n // set second hop amount in to 0 so that it will use whatever was generated by hop 1.\n secondHop.pool.partialAmountIn = '0';\n orderedHops.push(firstHop);\n orderedHops.push(secondHop);\n }\n return orderedHops;\n } else {\n return hops;\n }\n for (var i in filteredNodeRoutes) {\n let currentNodeRoute = filteredNodeRoutes[i];\n if (currentNodeRoute.length === 2) {\n }\n }\n }\n\n return hops;\n}\n\n// function getActionListFromRoutesAndAllocationsORIG(\n// routes,\n// nodeRoutes,\n// allocations,\n// slippageTolerance\n// ) {\n// let actions = [];\n// for (var i in routes) {\n// let route = routes[i];\n// let nodeRoute = nodeRoutes[i];\n// let allocation = new Big(allocations[i]);\n// if (allocation.eq(new Big(0))) {\n// continue;\n// }\n// if (!route.length) {\n// route = [route];\n// }\n// if (route.length === 1) {\n// //single hop. only one action.\n// let pool = route[0];\n// let poolId = pool.id;\n// let inputToken = nodeRoute[0];\n// let outputToken = nodeRoute[1];\n// let expectedAmountOut = getOutputSingleHop(\n// pool,\n// inputToken,\n// outputToken,\n// allocation\n// );\n// let minimumAmountOut = expectedAmountOut\n// .times(new Big(1).minus(new Big(slippageTolerance).div(100)))\n// .round()\n// .toString(); //Here, assume slippage tolerance is a percentage. So 1% would be 1.0\n// let action = {\n// pool_id: poolId,\n// token_in: inputToken,\n// token_out: outputToken,\n// amount_in: allocation.round().toString(),\n// min_amount_out: minimumAmountOut.toString(),\n// };\n// actions.push(action);\n// } else if (route.length === 2) {\n// // double hop. two actions.\n// let pool1 = route[0];\n// let pool2 = route[1];\n// let pool1Id = pool1.id;\n// let pool2Id = pool2.id;\n// let inputToken = nodeRoute[0];\n// let middleToken = nodeRoute[1];\n// let outputToken = nodeRoute[2];\n// let expectedAmountOutFirstHop = getOutputSingleHop(\n// pool1,\n// inputToken,\n// middleToken,\n// allocation\n// );\n// let minimumAmountOutFirstHop = expectedAmountOutFirstHop\n// .times(new Big(1).minus(new Big(slippageTolerance).div(100)))\n// .round()\n// .toString(); //Here, assume slippage tolerance is a percentage. So 1% would be 1.0\n\n// let action1 = {\n// pool_id: pool1Id,\n// token_in: inputToken,\n// token_out: middleToken,\n// amount_in: allocation.round().toString(),\n// min_amount_out: minimumAmountOutFirstHop,\n// };\n// let expectedFinalAmountOut = getOutputSingleHop(\n// pool2,\n// middleToken,\n// outputToken,\n// minimumAmountOutFirstHop\n// );\n// let minimumAMountOutSecondHop = expectedFinalAmountOut\n// .times(new Big(1).minus(new Big(slippageTolerance).div(100)))\n// .round()\n// .toString();\n// let action2 = {\n// pool_id: pool2Id,\n// token_in: middleToken,\n// token_out: outputToken,\n// amount_in: minimumAmountOutFirstHop,\n// min_amount_out: minimumAMountOutSecondHop,\n// };\n// actions.push(action1);\n// actions.push(action2);\n// }\n// }\n// return actions;\n// }\n\nfunction* range(start, end) {\n for (; start <= end; ++start) {\n yield start;\n }\n}\n\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n\nfunction* numericCombinations(n, r, loc = []) {\n var idx = loc.length;\n if (idx === r) {\n yield loc;\n return;\n }\n for (let next of range(idx ? last(loc) + 1 : 0, n - r + idx)) {\n yield* numericCombinations(n, r, loc.concat(next));\n }\n}\n\nfunction* combinations(arr, r) {\n for (let idxs of numericCombinations(arr.length, r)) {\n yield idxs.map(i => arr[i]);\n }\n}\n\n// #middleTokenTotals = getMiddleTokenTotals(routes,nodeRoutes,allocations)\n// #TODO: complete this function with middle token checks.\n\n// #consider all routes of length 2 with non-zero allocation. (double-hops)\n// # among these, check for parallel swaps. That is, check for common node routes\n// # for first hop. Then check for common node routes on second hop.\n// # when common node routes occur for the first hop:\n// # 1. Calculate the total expected output of intermediate token.\n// # 2.\n// # when common node routes occur for the second hop:\n// # 1. get a ratio of the input allocations of the full routes associated with\n// # these common node routes. allocate the total intermediate token output\n// # toward these 2nd hop routes in the same ratio as their route input allocations.\n\nexport async function getSmartRouteSwapActions(\n pools,\n inputToken,\n outputToken,\n totalInput,\n allTokens,\n maxPathLength = 3,\n threshold = 0.001,\n numberOfRoutesLimit = 2,\n MAX_NUMBER_PARALLEL_POOLS = 4,\n decimalsCulledPoolIds = []\n) {\n if (!totalInput) {\n return [];\n }\n var totalInput = new Big(totalInput);\n\n // remove pools that have an id from the decimalCulledPoolIds\n pools = pools.filter(p => !decimalsCulledPoolIds.includes(p.id));\n\n let resDict = await getBestOptimalAllocationsAndOutputs(\n pools,\n inputToken,\n outputToken,\n totalInput,\n maxPathLength,\n threshold\n );\n\n let allocations = resDict.allocations;\n\n // let outputs = resDict.outputs;\n let routes = resDict.routes;\n let nodeRoutes = resDict.nodeRoutes;\n\n let sortedIndexValues = argsort(allocations);\n let topIndices = sortedIndexValues.slice(0, 10);\n var reducedRoutes = [];\n var reducedNodeRoutes = [];\n for (var ind of topIndices) {\n reducedRoutes.push(routes[ind]);\n reducedNodeRoutes.push(nodeRoutes[ind]);\n }\n routes = reducedRoutes;\n nodeRoutes = reducedNodeRoutes;\n\n // TODO: compare pairs of routes to get the best allocation pair-wise.\n var currentBestOutput = new Big(0);\n var bestResDict = { routes: [] };\n var bestAllocations = resDict.allocations;\n var bestNodeRoutes = resDict.nodeRoutes;\n var bestRoutes = resDict.routes;\n // first check parallel swap with 4 actions. store result.\n var parallelNodeRoutes = [];\n var parallelRoutes = [];\n for (var n in bestRoutes) {\n let currentNodeRoute = bestNodeRoutes[n];\n if (currentNodeRoute.length == 2) {\n parallelNodeRoutes.push(currentNodeRoute);\n parallelRoutes.push(bestRoutes[n]);\n }\n }\n // console.log(`${parallelNodeRoutes.length} parallel routes found...`);\n var bestRoutesAreParallel = false;\n if (parallelNodeRoutes.length > 0) {\n // first calculate the expected result using only parallel routes.\n // let filteredAllocationsAndOutputs = getOptOutputVecRefined(parallelRoutes, parallelNodeRoutes, totalInput);\n let filteredAllocationsAndOutputs = getOptOutputVec(\n parallelRoutes,\n parallelNodeRoutes,\n totalInput\n );\n let parallellAllocations = filteredAllocationsAndOutputs.allocations;\n let parallelOutputs = filteredAllocationsAndOutputs.result;\n\n if (parallellAllocations.length > MAX_NUMBER_PARALLEL_POOLS) {\n // now sort by allocation value to the top 4 parallel swaps:\n let sortIndices = argsort(parallellAllocations);\n\n sortIndices = sortIndices.slice(0, MAX_NUMBER_PARALLEL_POOLS);\n var filteredParallelRoutes = [];\n var filteredParallelNodeRoutes = [];\n for (var i in sortIndices) {\n filteredParallelRoutes.push(parallelRoutes[sortIndices[i]]);\n filteredParallelNodeRoutes.push(parallelNodeRoutes[sortIndices[i]]);\n }\n filteredAllocationsAndOutputs = getOptOutputVec(\n filteredParallelRoutes,\n filteredParallelNodeRoutes,\n totalInput\n );\n parallellAllocations = filteredAllocationsAndOutputs.allocations;\n parallelOutputs = filteredAllocationsAndOutputs.result;\n }\n\n let parallelOutput = parallelOutputs.reduce(\n (a, b) => a.plus(b),\n new Big(0)\n );\n if (new Big(parallelOutput).gt(currentBestOutput)) {\n bestAllocations = parallellAllocations;\n currentBestOutput = parallelOutput;\n // console.log(\n // 'BEST OUTPUT FROM PARALLEL SWAPS IS NOW... ',\n // currentBestOutput.toString()\n // );\n bestRoutes = parallelRoutes;\n bestNodeRoutes = parallelNodeRoutes;\n bestRoutesAreParallel = true;\n }\n }\n var canHaveTwoRoutes = false;\n // initialize this variable to check if we can have two routes, or if all routes share a pool for an edge case.\n // console.log('THE NUMBER OF ROUTES IS...', routes.length);\n\n for (var i in routes) {\n for (var j in routes) {\n if (j > i) {\n var route1 = routes[i];\n var route2 = routes[j];\n var nodeRoute1 = nodeRoutes[i];\n var nodeRoute2 = nodeRoutes[j];\n // check if they share a pool.\n let route1PoolIds = new Set(route1.map(r => r.id));\n let route2PoolIds = new Set(route2.map(r => r.id));\n var sharePool = false;\n for (var route1PoolId of route1PoolIds) {\n if (route2PoolIds.has(route1PoolId)) {\n sharePool = true;\n }\n }\n if (sharePool) {\n // routes are not independent. skip this pair.\n // console.log('skipping this pair because pool was shared.');\n continue;\n } else {\n canHaveTwoRoutes = true;\n let currentRoutes = [route1, route2];\n let currentNodeRoutes = [nodeRoute1, nodeRoute2];\n\n let filteredAllocationsAndOutputs = getOptOutputVec(\n currentRoutes,\n currentNodeRoutes,\n totalInput\n );\n\n let filteredAllocations = filteredAllocationsAndOutputs.allocations;\n let filteredOutputs = filteredAllocationsAndOutputs.result;\n // console.log('FILTERED ALLOCATIONS:');\n // console.log(filteredAllocations.map((i) => i.toString()));\n // console.log(filteredOutputs);\n let totalOutput = filteredOutputs.reduce(\n (a, b) => a.plus(b),\n new Big(0)\n );\n if (new Big(totalOutput).gt(currentBestOutput)) {\n bestAllocations = filteredAllocations;\n currentBestOutput = totalOutput;\n // console.log('BEST OUTPUT IS NOW... ', currentBestOutput.toString());\n bestRoutes = currentRoutes;\n bestNodeRoutes = currentNodeRoutes;\n bestRoutesAreParallel = false;\n // bestResDict = currentResDict\n }\n\n // if (currentResDict.outputs.gt(currentBestOutput)) {\n // console.log('DIFF IS...', currentResDict.outputs.minus(currentBestOutput).toString());\n // bestResDict = currentResDict;\n // currentBestOutput = bestResDict.outputs;\n // console.log('BEST OUTPUT IS NOW... ', currentBestOutput.toString());\n // console.log(bestResDict.routes);\n // console.log(bestResDict.allocations.map((i) => i.toString()));\n // console.log(bestResDict.outputs.toString());\n }\n }\n }\n }\n\n if (!canHaveTwoRoutes) {\n // now we need to check through the routes in single manner to find the best one:\n for (var i in routes) {\n let currentRoutes = [routes[i]];\n let currentNodeRoutes = [nodeRoutes[i]];\n // let filteredAllocationsAndOutputs = getOptOutputVecRefined(currentRoutes, currentNodeRoutes, totalInput);\n let filteredAllocationsAndOutputs = getOptOutputVec(\n currentRoutes,\n currentNodeRoutes,\n totalInput\n );\n\n let filteredAllocations = filteredAllocationsAndOutputs.allocations;\n let filteredOutputs = filteredAllocationsAndOutputs.result;\n // console.log('FILTERED ALLOCATIONS:');\n // console.log(filteredAllocations.map((i) => i.toString()));\n // console.log(filteredOutputs);\n let totalOutput = filteredOutputs.reduce((a, b) => a.plus(b), new Big(0));\n if (new Big(totalOutput).gt(currentBestOutput)) {\n bestAllocations = filteredAllocations;\n currentBestOutput = totalOutput;\n // console.log('BEST OUTPUT IS NOW... ', currentBestOutput.toString());\n bestRoutes = currentRoutes;\n bestNodeRoutes = currentNodeRoutes;\n bestRoutesAreParallel = false;\n // bestResDict = currentResDict\n }\n }\n }\n\n // resDict = bestResDict;\n\n allocations = bestAllocations;\n\n // let outputs = resDict.outputs;\n routes = bestRoutes;\n nodeRoutes = bestNodeRoutes;\n\n if (routes.length < 1) {\n return [];\n }\n\n // check the top numberOfRoutesLimit\n // console.log('initial allocations are...');\n // console.log(allocations.map((a) => a.toString()));\n // console.log('fixed allocations are...');\n // console.log(allocations.map((a) => new Big(a).toFixed()));\n //SORT BY ALLOCATIONS\n let allSortedIndices = argsort(allocations.map(a => new Big(a)));\n if (bestRoutesAreParallel) {\n numberOfRoutesLimit = 4;\n }\n let sortedIndices = allSortedIndices.slice(0, numberOfRoutesLimit);\n\n // console.log('sorted Indices are');\n // console.log(sortedIndices);\n var filteredRoutes = [];\n var filteredNodeRoutes = [];\n for (var i in sortedIndices) {\n let index = sortedIndices[i];\n filteredRoutes.push(routes[index]);\n filteredNodeRoutes.push(nodeRoutes[index]);\n }\n\n // console.log('filteredRoutes are ...');\n // console.log(filteredRoutes);\n for (var i in filteredRoutes) {\n if (!filteredRoutes[i].length) {\n filteredRoutes[i] = [filteredRoutes[i]];\n }\n }\n // console.log('filtered Node routes are...');\n // console.log(filteredNodeRoutes);\n\n // THE BELOW CODE WILL ENSURE THAT ROUTES ARE INDEPENDENT (e.g. THE ROUTES WILL NOT SHARE A POOL)\n\n let route1PoolIds = filteredRoutes[0].map(pool => pool.id);\n // console.log('route 1 pool ids:');\n // console.log(route1PoolIds);\n if (filteredRoutes.length > 1) {\n let route2PoolIds = filteredRoutes[1].map(pool => pool.id);\n // console.log('route 2 pool ids:');\n // console.log(route2PoolIds);\n var sharedRoute = false;\n for (var i in route2PoolIds) {\n if (route1PoolIds.includes(route2PoolIds[i])) {\n // a pool was shared between routes. need to calculate a new second route.\n // console.log(\n // 'a pool was shared between routes. going to calculate a new second route'\n // );\n sharedRoute = true;\n break;\n }\n }\n }\n\n // NOTE -- this is a much simpler solution than that below. Instead of choosing the next best second route that doesn't share a\n // pool with the first route, we could just use the first route and allocate all inputs to it.\n // but, for larger transactions, it would be better to have option of two independent routes to spread out slippage.\n\n // if (sharedRoute) {\n // filteredRoutes = [filteredRoutes[0]];\n // filteredNodeRoutes = [filteredNodeRoutes[0]];\n // // TODO -- later can add in a second route that doesn't share a pool with first.\n // }\n\n // We're going to find the next-highest allocation route that doesn't share a pool with the first route.\n if (sharedRoute) {\n let allFilteredRoutes = [];\n let allFilteredNodeRoutes = [];\n for (var i in allSortedIndices) {\n allFilteredRoutes.push(routes[allSortedIndices[i]]);\n allFilteredNodeRoutes.push(nodeRoutes[allSortedIndices[i]]);\n }\n let firstRoute = allFilteredRoutes[0];\n // console.log('first route is...');\n // console.log(firstRoute);\n let firstRoutePoolIds = firstRoute.map(pool => pool.id);\n for (var i in allFilteredRoutes) {\n if (!allFilteredRoutes[i].length) {\n allFilteredRoutes[i] = [allFilteredRoutes[i]];\n }\n }\n // console.log('FIRST ROUTE POOL IDS ARE');\n // console.log(firstRoutePoolIds);\n let allFilteredRouteIds = allFilteredRoutes.map(route =>\n route.map(pool => pool.id)\n );\n // console.log('allFilteredRouteIds are ...');\n // console.log(allFilteredRouteIds);\n for (var i in allFilteredRouteIds) {\n // console.log('i is', i);\n // console.log('ALL FILTERED ROUTES [i] IS...');\n // console.log(allFilteredRouteIds[i]);\n for (var j in allFilteredRouteIds[i]) {\n // console.log('j is', j);\n // console.log('ALL FILTERED ROUTES [i][j] IS...');\n // console.log(allFilteredRouteIds[i][j]);\n if (firstRoutePoolIds.includes(allFilteredRouteIds[i][j])) {\n break;\n }\n\n var secondRoute = allFilteredRoutes[i];\n if (!secondRoute.length) {\n secondRoute = [secondRoute];\n }\n filteredRoutes = [allFilteredRoutes[0], secondRoute];\n filteredNodeRoutes = [\n allFilteredNodeRoutes[0],\n allFilteredNodeRoutes[i],\n ];\n break;\n }\n }\n // console.log('new filteredRoutes are ...');\n // console.log(filteredRoutes);\n // console.log('new filtered Node routes are...');\n // console.log(filteredNodeRoutes);\n }\n\n // let filteredAllocations_check = getBestOptInput(\n // filteredRoutes,\n // filteredNodeRoutes,\n // totalInput\n // );\n // let filteredAllocationsAndOutputs = getOptOutputVecRefined(filteredRoutes, filteredNodeRoutes, totalInput);\n let filteredAllocationsAndOutputs = getOptOutputVec(\n filteredRoutes,\n filteredNodeRoutes,\n totalInput\n );\n\n let filteredAllocations = filteredAllocationsAndOutputs.allocations;\n let filteredOutputs = filteredAllocationsAndOutputs.result;\n\n filteredAllocations = checkIntegerSumOfAllocations(\n filteredAllocations,\n totalInput\n ).map(stringAllo => new Big(stringAllo));\n\n let hops = getActionListFromRoutesAndAllocations(\n filteredRoutes,\n filteredNodeRoutes,\n filteredAllocations\n );\n\n var actions = [];\n // console.log('hops are...');\n // console.log(hops);\n\n for (var i in hops) {\n let hopInputTokenMeta = allTokens[hops[i].inputToken]\n ? allTokens[hops[i].inputToken]\n : await ftGetTokenMetadata(hops[i].inputToken, 'token input');\n\n let hopOutputTokenMeta = allTokens[hops[i].outputToken]\n ? allTokens[hops[i].outputToken]\n : await ftGetTokenMetadata(hops[i].outputToken, 'token sm');\n let hopOutputTokenDecimals = hopOutputTokenMeta.decimals;\n\n let expectedHopOutput = getOutputSingleHop(\n hops[i].pool,\n hops[i].inputToken,\n hops[i].outputToken,\n hops[i].allocation\n );\n let decimalEstimate = new Big(expectedHopOutput)\n .div(new Big(10).pow(hopOutputTokenDecimals))\n .toString();\n\n // Need to check if expected Hop Output is > 1. If not, then cull the corresponding pool and re-calculate.\n if (new Big(expectedHopOutput).lt(new Big(1))) {\n // purge the pool and recalculate.\n\n decimalsCulledPoolIds.push(hops[i].pool.id);\n return getSmartRouteSwapActions(\n pools,\n inputToken,\n outputToken,\n totalInput,\n allTokens,\n (maxPathLength = maxPathLength),\n (threshold = threshold),\n (numberOfRoutesLimit = numberOfRoutesLimit),\n (MAX_NUMBER_PARALLEL_POOLS = MAX_NUMBER_PARALLEL_POOLS),\n (decimalsCulledPoolIds = decimalsCulledPoolIds)\n );\n }\n\n if (\n hops[i].inputToken == inputToken &&\n hops[i].outputToken == outputToken\n ) {\n var status = 'parallel swap';\n } else {\n var status = 'stableSmart';\n }\n\n let tokens = await Promise.all(\n hops[i].nodeRoute.map(async t =>\n allTokens[t] ? allTokens[t] : await ftGetTokenMetadata(t, 'smart')\n )\n );\n\n actions[i] = {\n estimate: decimalEstimate,\n pool: {\n fee: hops[i].pool.fee,\n gamma_bps: new Big(10000).minus(new Big(hops[i].pool.fee)), //.div(new Big(10000)), //hops[i].pool.gamma, //new Big(10000).minus(new Big(hops[i].pool.fee)).div(new Big(10000));\n id: hops[i].pool.id,\n partialAmountIn: new Big(hops[i].allocation).round().toString(),\n supplies: {\n [hops[i].pool.token1Id]: hops[i].pool.token1Supply,\n [hops[i].pool.token2Id]: hops[i].pool.token2Supply,\n },\n token0_ref_price: hops[i].pool.token0_price,\n tokenIds: [hops[i].pool.token1Id, hops[i].pool.token2Id],\n Dex: hops[i].pool.Dex,\n },\n status: status,\n token: hopInputTokenMeta,\n outputToken: hops[i].outputToken,\n inputToken: hops[i].inputToken,\n nodeRoute: hops[i].nodeRoute,\n route: hops[i].route,\n allRoutes: hops[i].allRoutes,\n allNodeRoutes: hops[i].allNodeRoutes,\n totalInputAmount: hops[i].totalInputAmount,\n allAllocations: hops[i].allAllocations,\n tokens: tokens,\n routeInputToken: inputToken,\n routeOutputToken: outputToken,\n overallPriceImpact: '0',\n };\n // console.log('INPUT TOKEN IS...');\n // console.log(hops[i].inputToken);\n actions[i].pool.x = actions[i].pool.supplies[hops[i].inputToken];\n actions[i].pool.y = actions[i].pool.supplies[hops[i].outputToken];\n }\n // now set partial amount in for second hops equal to zero:\n // also, set the total price impact value.\n let overallPriceImpact = await calculateSmartRouteV2PriceImpact(\n actions,\n allTokens\n );\n for (var i in actions) {\n let action = actions[i];\n action.overallPriceImpact = overallPriceImpact;\n if (action.outputToken === outputToken && action.inputToken != inputToken) {\n // only want to set second hop partial amount in to zero\n action.pool.partialAmountIn = '0';\n }\n }\n\n return actions;\n}\n\nasync function calculateSmartRouteV2PriceImpact(actions, allTokens) {\n // the goal is to take a weighted average of the price impact per route, treating each one at a time.\n // for single hop (parallel swaps), the price impact is calculated as before.\n // for double-hop, the market price, P, is determined using reserves of tokens in each pool in the route.\n // in both cases, we compare the 'market price', P , determined solely by reserves in pools, and the actual\n // average price, R, expected to be paid in the transaction.\n // the price impact is then defined as (P-R)/R * 100 and is a percentage number, returned as a string.\n\n let deltaY = actions\n .filter(a => a.outputToken == a.routeOutputToken)\n .map(a => new Big(a.estimate))\n .reduce((a, b) => a.plus(b), new Big(0));\n // console.log('DELTA Y IS...');\n // console.log(deltaY.toString());\n\n let inputTokenMeta = actions[0].tokens[0];\n let deltaX = new Big(actions[0].totalInputAmount).div(\n new Big(10).pow(inputTokenMeta.decimals)\n );\n let R = deltaY.div(deltaX);\n var P = new Big(0);\n let routes = actions[0].allRoutes;\n let nodeRoutes = actions[0].allNodeRoutes;\n let allocations = actions[0].allAllocations.map(a => new Big(a));\n let totalAllocations = allocations\n .map(a => new Big(a))\n .reduce((a, b) => a.plus(b), new Big(0));\n\n let weights = allocations.map(a => a.div(totalAllocations));\n\n for (var i in routes) {\n let route = routes[i];\n let nodeRoute = nodeRoutes[i];\n let tokens = await Promise.all(\n nodeRoute.map(async t => {\n return allTokens[t]\n ? allTokens[t]\n : await ftGetTokenMetadata(t, 'sm routes');\n })\n );\n let weight = weights[i];\n if (route.length == 1) {\n let num = new Big(route[0].reserves[nodeRoute[0]]).div(\n new Big(10).pow(tokens[0].decimals)\n );\n let denom = new Big(route[0].reserves[nodeRoute[1]]).div(\n new Big(10).pow(tokens[1].decimals)\n );\n var routeMarketPrice = num.div(denom);\n } else {\n let num1 = new Big(route[0].reserves[nodeRoute[0]]).div(\n new Big(10).pow(tokens[0].decimals)\n );\n\n let denom1 = new Big(route[0].reserves[nodeRoute[1]]).div(\n new Big(10).pow(tokens[1].decimals)\n );\n\n let num2 = new Big(route[1].reserves[nodeRoute[1]]).div(\n new Big(10).pow(tokens[1].decimals)\n );\n\n let denom2 = new Big(route[1].reserves[nodeRoute[2]]).div(\n new Big(10).pow(tokens[2].decimals)\n );\n\n var routeMarketPrice = num1\n .div(denom1)\n .times(num2)\n .div(denom2);\n }\n P = P.plus(weight.times(new Big(1).div(routeMarketPrice)));\n }\n\n let priceImpact = P.minus(R)\n .div(R)\n .times(new Big(100))\n .toString();\n return priceImpact;\n}\n\nfunction decor(arr) {\n var res = [];\n for (var i in arr) {\n res.push([arr[i], i]);\n }\n return res;\n}\nfunction argsort(arr) {\n let undecor = a => a[1]; // leave only index\n let decorated = decor(arr);\n\n return decorated\n .sort((a, b) => new Big(b[0]).minus(new Big(a[0])))\n .map(undecor);\n}\n\nfunction getPoolsByToken1ORToken2(pools, token1, token2) {\n let filteredPools = pools.filter(\n item =>\n item.token1Id === token1 ||\n item.token2Id === token1 ||\n item.token1Id === token2 ||\n item.token2Id === token2\n );\n return filteredPools;\n}\n\nfunction getPoolsByToken1ANDToken2(\n pools,\n token1,\n token2,\n cullZeroLiquidityPools = true\n) {\n let filteredPools = pools.filter(\n item =>\n (item.token1Id === token1 && item.token2Id === token2) ||\n (item.token1Id === token2 && item.token2Id === token1)\n );\n if (cullZeroLiquidityPools) {\n filteredPools = filteredPools.filter(\n item => item.token1Supply != '0' && item.token2Supply != '0'\n );\n }\n return filteredPools;\n}\n\nfunction getLiqudityOfPoolsFromList(pools) {\n let liquidities = [];\n for (var poolInd in pools) {\n let pool = pools[poolInd];\n pool.amounts = [pool.token1Supply, pool.token2Supply];\n let poolBigAmounts = pool.amounts.map(item => new Big(item));\n let liquidity = poolBigAmounts[0].times(poolBigAmounts[1]);\n liquidities.push(liquidity);\n }\n return liquidities;\n}\n\nfunction getNormalizedLiquiditiesFromList(pools) {\n let liquidities = getLiqudityOfPoolsFromList(pools);\n let maxLiq = bigMax(liquidities);\n let normalizedLiquidities = liquidities.map(item => item.div(maxLiq));\n return normalizedLiquidities;\n}\n\nfunction bigMax(arrayOfBigs) {\n if (arrayOfBigs.length < 1) {\n return null;\n }\n let maxElem = arrayOfBigs[0];\n for (var ind in arrayOfBigs) {\n let val = arrayOfBigs[ind];\n if (val.gt(maxElem)) {\n maxElem = val;\n }\n }\n return maxElem;\n}\n\nfunction cullPoolsWithInsufficientLiquidity(pools, threshold = 0.0001) {\n var thresh = new Big(threshold);\n let normLiq = getNormalizedLiquiditiesFromList(pools);\n let filteredPools = [];\n for (var i = 0; i < normLiq.length; i++) {\n if (normLiq[i] > thresh) {\n filteredPools.push(pools[i]);\n }\n }\n return filteredPools;\n}\n\nfunction cartesianProduct(a) {\n let result = a.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat())));\n return result;\n}\n\nfunction addEdge(g, edge) {\n let src = edge[0];\n let dst = edge[1];\n if (Object.keys(g).includes(src)) {\n if (!Object.keys(g[src]).includes(dst)) {\n g[src][dst] = 1;\n }\n } else {\n g[src] = {};\n g[src][dst] = 1;\n }\n if (Object.keys(g).includes(dst)) {\n if (!Object.keys(g[dst]).includes(src)) {\n g[dst][src] = 1;\n }\n } else {\n g[dst] = {};\n g[dst][src] = 1;\n }\n}\n\nfunction addEdges(g, edgeList) {\n for (var n in edgeList) {\n let edge = edgeList[n];\n addEdge(g, edge);\n }\n}\n\nfunction deleteEdge(g, edge) {\n let gNew = JSON.parse(JSON.stringify(g)); // using this to deep clone graph structure\n let e1 = edge[0];\n let e2 = edge[1];\n if (Object.keys(gNew).includes(e1)) {\n if (Object.keys(gNew[e1]).includes(e2)) {\n delete gNew[e1][e2];\n }\n }\n if (Object.keys(gNew).includes(e2)) {\n if (Object.keys(gNew[e2]).includes(e1)) {\n delete gNew[e2][e1];\n }\n }\n return gNew;\n}\n\nfunction deleteNode(g, node) {\n let gNew = JSON.parse(JSON.stringify(g)); // using this to deep clone graph structure\n if (Object.keys(gNew).includes(node)) {\n delete gNew[node];\n }\n let keys = Object.keys(gNew);\n for (var nodeInd in keys) {\n let nodeNow = keys[nodeInd];\n if (Object.keys(gNew[nodeNow]).includes(node)) {\n delete gNew[nodeNow][node];\n }\n }\n return gNew;\n}\n\nfunction dijkstra(graph, s) {\n var solutions = {};\n solutions[s] = {};\n solutions[s].path = [];\n solutions[s].dist = 0;\n\n while (true) {\n var parent = null;\n var nearest = null;\n var dist = Infinity;\n\n //for each existing solution\n for (var n in solutions) {\n if (!solutions[n]) {\n solutions[n] = {};\n }\n if (!solutions[n].path) continue;\n var ndist = solutions[n].dist;\n var adj = graph[n];\n //for each of its adjacent nodes...\n for (var a in adj) {\n //without a solution already...\n if (!solutions[a]) {\n solutions[a] = {};\n }\n if (solutions[a].path) continue;\n //choose nearest node with lowest *total* cost\n var d = adj[a] + ndist;\n if (d < dist) {\n //reference parent\n parent = solutions[n].path;\n nearest = a;\n dist = d;\n }\n }\n }\n\n //no more solutions\n if (dist === Infinity) {\n break;\n }\n\n //extend parent's solution path\n solutions[nearest].path = parent.concat(nearest);\n //extend parent's cost\n solutions[nearest].dist = dist;\n }\n\n return solutions;\n}\n\nfunction shortestPath(g, src, dst, ignore_nodes = [], ignore_edges = []) {\n let gTemp = JSON.parse(JSON.stringify(g)); // using this to deep clone graph structure. If we can use lodash, could use _.cloneDeep(obj)\n // remove nodes\n for (var nodeInd in ignore_nodes) {\n let nodeNow = ignore_nodes[nodeInd];\n gTemp = deleteNode(gTemp, nodeNow);\n }\n // remove edges\n for (var edgeInd in ignore_edges) {\n let edgeNow = ignore_edges[edgeInd];\n gTemp = deleteEdge(gTemp, edgeNow);\n }\n let solution = dijkstra(gTemp, src)[dst];\n solution.path.unshift(src); // original algorithm doesn't include source node in path\n return solution;\n}\n\nfunction* count(firstval = 0, step = 1) {\n let x = firstval;\n while (true) {\n yield x;\n x = x + 1;\n }\n}\n\nclass PathBuffer {\n constructor() {\n this.paths = [];\n this.sortedpaths = [];\n //this.counter = count();\n }\n len() {\n return this.sortedpaths.length;\n }\n\n push(cost, path) {\n if (path && !arrayContains(this.paths, path)) {\n this.sortedpaths.push([cost, path]);\n this.sortedpaths.sort(function(a, b) {\n return a[0] - b[0];\n });\n //heappush(this.sortedpaths, (cost, this.counter.next().value,path));\n this.paths.push(path);\n }\n }\n\n pop() {\n //let val = heappop(this.sortedpaths);\n let val = this.sortedpaths.shift();\n let cost = val[0];\n let path = val[1];\n this.paths.splice(this.paths.indexOf(path), 1);\n return path;\n }\n}\n\nfunction arrayEquals(a, b) {\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((val, index) => val === b[index])\n );\n}\n\nfunction arrayContains(arr, obj) {\n // checks to see if the input array contains a reference object, obj, using\n // JSON.stringify() .\n let obj_json = JSON.stringify(obj);\n for (var itemInd in arr) {\n if (JSON.stringify(arr[itemInd]) == obj_json) {\n return true;\n }\n }\n return false;\n}\n\nfunction* yenFromPy(g, source, target) {\n //adapted from the python implementation in networkx.algorithms.simple_paths.shortest_simple_paths()\n let listA = [];\n let listB = new PathBuffer();\n let prev_path = null;\n\n while (true) {\n if (!prev_path) {\n let sol = shortestPath(g, source, target);\n let length = sol.dist;\n let path = sol.path;\n listB.push(length, path);\n } else {\n let ignore_nodes = [];\n let ignore_edges = [];\n for (var i = 1; i < prev_path.length; i++) {\n let root = prev_path.slice(0, i);\n let root_length = root.length;\n for (var pathInd in listA) {\n let path = listA[pathInd];\n\n if (arrayEquals(path.slice(0, i), root)) {\n let edgeToIgnore = [path[i - 1], path[i]];\n ignore_edges.push(edgeToIgnore);\n }\n }\n try {\n let sol = shortestPath(\n g,\n root[root.length - 1],\n target,\n (ignore_nodes = ignore_nodes),\n (ignore_edges = ignore_edges)\n );\n let length = sol.dist;\n let spur = sol.path;\n let path = root.slice(0, root.length - 1).concat(spur);\n listB.push(root_length + length, path);\n } catch (e) {\n //console.log(`yenFromPy error was... ${e}`)\n //dont do anything.\n }\n ignore_nodes.push(root[root.length - 1]);\n }\n }\n if (listB.sortedpaths) {\n try {\n let path = listB.pop();\n yield path;\n listA.push(path);\n prev_path = path;\n } catch (e) {\n break;\n }\n } else {\n break;\n }\n }\n}\n\nfunction getKShortestPaths(g, source, target, k, maxPathLength = 3) {\n let paths = [];\n if (maxPathLength < 2) {\n var maxPathLength = 2;\n }\n let gen = yenFromPy(g, source, target);\n for (var n = 1; n <= k; n++) {\n try {\n let res = gen.next().value;\n if (res && !arrayContains(paths, res)) {\n if (res.length > maxPathLength) {\n // console.log(\n // `found all hops of length ${\n // maxPathLength - 1\n // } or less... breaking out of generator`\n // );\n break;\n }\n paths.push(res);\n }\n } catch (e) {\n break;\n }\n }\n return paths;\n}\n\nasync function getPathsFromPools(\n pools,\n inputToken,\n outputToken,\n maxPathLength = 3\n) {\n let graph = getGraphFromPoolList(pools);\n return getKShortestPaths(graph, inputToken, outputToken, 100, maxPathLength);\n}\n\nasync function getAllPathsBelowLengthN(g, source, target, N, limit = 100) {\n // use Yen's algorithm to find the paths of length N or below between source and target nodes in graph g.\n\n let paths = [];\n\n let gen = await yenFromPy(g, source, target);\n let currentPathLength = 0;\n let count = 1;\n while (currentPathLength <= N) {\n // console.log(`CURRENT PATH LENGTH IS ${currentPathLength}`)\n try {\n let res = await gen.next().value;\n // console.log(`RES IS ${res}`)\n if (res && !arrayContains(paths, res)) {\n if (res.length > currentPathLength) {\n currentPathLength = res.length;\n if (currentPathLength > N) {\n break;\n }\n }\n paths.push(res);\n }\n count = count + 1;\n if (count > limit) {\n break;\n }\n } catch (e) {\n // console.log(e)\n break;\n }\n }\n return paths;\n}\n\nfunction getGraphFromPoolList(poolList) {\n let pools = poolList.filter(\n item => item.token1Supply != '0' && item.token2Supply != '0'\n );\n let transitions = pools.map(item => [item.token1Id, item.token2Id]);\n let g = {};\n addEdges(g, transitions);\n return g;\n}\n\n////////////////////////////////////\n\n// MAIN FUNCTION\n\n////////////////////////////////////\n\n// TODO -- incorporate the following integrated function, which tries to\n// account for stablecoins within the context of smart routing.\n\n//TODO -- need the right API / hooks for GETSTABLESWAPACTION function and GETPARALLELSWAPACTIONS functions.\n\n//TODO -- transform the actions generated in this function into tranaction to execute.\n\n//TRYING: GETSTABLESWAPACTION <==> instantSwapGetTransactions\n\nexport async function stableSmart(\n pools,\n inputToken,\n outputToken,\n totalInput,\n allTokens\n) {\n let smartRouteActions = await getSmartRouteSwapActions(\n pools,\n inputToken,\n outputToken,\n totalInput,\n allTokens\n );\n return smartRouteActions;\n}\n\nexport function getExpectedOutputFromActionsORIG(actions, outputToken) {\n return actions\n .filter(item => item.outputToken === outputToken)\n .map(item => new Big(item.estimate))\n .reduce((a, b) => a.plus(b), new Big(0));\n}\n\nfunction getFeeForRoute(route) {\n if (!route.length) {\n route = [route];\n }\n if (route.length == 1) {\n // Single Hop case\n let p = route[0];\n return p.fee;\n } else if (route.length == 2) {\n //Double Hop Case\n let p1 = route[0];\n let p2 = route[1];\n let fee1 = p1.fee;\n let fee2 = p2.fee;\n return fee1 + fee2;\n }\n}\n\nexport function getAverageFeeForRoutes(routes, nodeRoutes, totalInput) {\n let normalizedAllocations = getOptimalAllocationForRoutes(\n routes,\n nodeRoutes,\n totalInput\n ).map(a => a.div(new Big(totalInput)));\n let averageFee = 0;\n for (var i in routes) {\n averageFee += normalizedAllocations[i] * getFeeForRoute(routes[i]);\n }\n return averageFee;\n}\n","import { TokenMetadata, Pool, StablePool, EstimateSwapView } from '../types';\nimport {\n toReadableNumber,\n toNonDivisibleNumber,\n scientificNotationToString,\n} from '../utils';\nimport Big from 'big.js';\nimport { SameInputTokenError, ZeroInputError, NoPoolError } from '../error';\nimport { ONLY_ZEROS, toPrecision } from '../utils';\nimport _ from 'lodash';\nimport { FEE_DIVISOR } from '../constant';\nimport { getSwappedAmount } from '../stable-swap';\nimport { ftGetTokenMetadata, ftGetTokensMetadata } from '../ref';\nimport { isStablePool } from '../utils';\nimport { getTokens } from '../indexer';\nimport {\n getStablePoolDecimal,\n isStablePoolToken,\n poolFormatter,\n} from '../utils';\nimport {\n stableSmart,\n getExpectedOutputFromActionsORIG,\n //@ts-ignore\n} from './smartRoutingLogic.js';\n\nexport enum PoolMode {\n PARALLEL = 'parallel swap',\n SMART = 'smart routing',\n SMART_V2 = 'stableSmart',\n STABLE = 'stable swap',\n}\n\nexport interface SwapParams {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n simplePools: Pool[];\n options?: SwapOptions;\n}\n\nexport interface SwapOptions {\n enableSmartRouting?: boolean;\n stablePools?: Pool[];\n stablePoolsDetail?: StablePool[];\n}\n\nexport const getSimplePoolEstimate = ({\n tokenIn,\n tokenOut,\n pool,\n amountIn,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n pool: Pool;\n amountIn: string;\n}) => {\n const amount_with_fee = Number(amountIn) * (FEE_DIVISOR - pool.fee);\n const in_balance = toReadableNumber(\n tokenIn.decimals,\n pool.supplies[tokenIn.id]\n );\n const out_balance = toReadableNumber(\n tokenOut.decimals,\n pool.supplies[tokenOut.id]\n );\n const estimate = new Big(\n (\n (amount_with_fee * Number(out_balance)) /\n (FEE_DIVISOR * Number(in_balance) + amount_with_fee)\n ).toString()\n ).toFixed();\n\n return {\n estimate,\n pool,\n outputToken: tokenOut.id,\n inputToken: tokenIn.id,\n };\n};\n\nexport const getStablePoolEstimate = ({\n tokenIn,\n tokenOut,\n amountIn,\n stablePool,\n pool,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n stablePool: StablePool;\n pool?: Pool;\n}) => {\n const STABLE_LP_TOKEN_DECIMALS = getStablePoolDecimal(stablePool);\n\n const [amount_swapped, _, dy] = getSwappedAmount(\n tokenIn.id,\n tokenOut.id,\n amountIn,\n stablePool,\n STABLE_LP_TOKEN_DECIMALS\n );\n\n const amountOut =\n amount_swapped < 0 || isNaN(amount_swapped)\n ? '0'\n : toPrecision(scientificNotationToString(amount_swapped.toString()), 0);\n\n const dyOut =\n amount_swapped < 0 || isNaN(amount_swapped) || isNaN(dy)\n ? '0'\n : toPrecision(scientificNotationToString(dy.toString()), 0);\n\n const rates = stablePool.rates.reduce((acc, cur, i) => {\n return {\n ...acc,\n [stablePool.token_account_ids[i]]: cur,\n };\n }, {});\n\n return {\n estimate: toReadableNumber(STABLE_LP_TOKEN_DECIMALS, amountOut),\n noFeeAmountOut: toReadableNumber(STABLE_LP_TOKEN_DECIMALS, dyOut),\n pool: {\n ...stablePool,\n rates,\n },\n outputToken: tokenOut.id,\n inputToken: tokenIn.id,\n };\n};\n\n/**\n * @description Get the estimate of the amount of tokenOut that can be received\n *\n */\nexport const singlePoolSwap = ({\n tokenIn,\n tokenOut,\n simplePools,\n amountIn,\n stablePools,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n simplePools: Pool[];\n amountIn: string;\n stablePools?: StablePool[];\n}) => {\n if (!simplePools || simplePools.length === 0) {\n throw NoPoolError;\n }\n\n const parsedAmountIn = toNonDivisibleNumber(tokenIn.decimals, amountIn);\n\n // const pools = simplePools.concat(stablePools);\n\n const simplePoolsThisPair = simplePools.filter(\n p =>\n p.tokenIds.includes(tokenIn.id) &&\n p.tokenIds.includes(tokenOut.id) &&\n (!stablePools || !isStablePool(stablePools, p.id))\n );\n\n const estimatesSimplePool = simplePoolsThisPair.map(pool =>\n getSimplePoolEstimate({\n tokenIn,\n tokenOut,\n pool,\n amountIn,\n })\n );\n\n const stablePoolThisPair = stablePools?.filter(\n sp =>\n sp.token_account_ids.includes(tokenIn.id) &&\n sp.token_account_ids.includes(tokenOut.id)\n );\n\n // different stable lp token decimal for different type of pools\n const estimatesStablePool = stablePoolThisPair?.map(stablePool => {\n return getStablePoolEstimate({\n tokenIn,\n tokenOut,\n amountIn,\n stablePool,\n pool: simplePools.find(p => p.id === stablePool.id) as Pool,\n });\n });\n\n const maxSimplePoolEstimate =\n estimatesSimplePool === undefined || estimatesSimplePool.length === 0\n ? undefined\n : estimatesSimplePool.length === 1\n ? estimatesSimplePool[0]\n : _.maxBy(estimatesSimplePool, estimate => Number(estimate.estimate));\n\n const maxStablePoolEstimate =\n estimatesStablePool === undefined || estimatesStablePool.length === 0\n ? undefined\n : estimatesStablePool.length === 1\n ? estimatesStablePool[0]\n : _.maxBy(estimatesStablePool, estimate => Number(estimate.estimate));\n\n if (!maxStablePoolEstimate && !maxSimplePoolEstimate) throw NoPoolError;\n\n maxSimplePoolEstimate &&\n (maxSimplePoolEstimate.pool.partialAmountIn = parsedAmountIn);\n\n maxStablePoolEstimate &&\n (maxStablePoolEstimate.pool.partialAmountIn = parsedAmountIn);\n\n if (!maxStablePoolEstimate) {\n maxSimplePoolEstimate &&\n (maxSimplePoolEstimate.pool.partialAmountIn = parsedAmountIn);\n\n return maxSimplePoolEstimate;\n } else if (!maxSimplePoolEstimate) {\n return maxStablePoolEstimate;\n } else {\n return Number(maxSimplePoolEstimate?.estimate) >\n Number(maxStablePoolEstimate?.estimate)\n ? maxSimplePoolEstimate\n : maxStablePoolEstimate;\n }\n};\n\nexport const getStablePoolsThisPair = ({\n tokenInId,\n tokenOutId,\n stablePools,\n}: {\n tokenInId: string;\n tokenOutId: string;\n stablePools: Pool[];\n}) => {\n return stablePools.filter(\n p =>\n p.tokenIds.includes(tokenInId) &&\n p.tokenIds.includes(tokenOutId) &&\n tokenInId !== tokenOutId\n );\n};\n\nexport const getPoolsByTokens = ({\n pools,\n tokenInId,\n tokenOutId,\n}: {\n pools: Pool[];\n tokenInId: string;\n tokenOutId: string;\n}) => {\n if (tokenInId === tokenOutId) return [];\n\n return pools.filter(\n p => p.tokenIds.includes(tokenInId) && p.tokenIds.includes(tokenOutId)\n );\n};\n\nexport const getPoolEstimate = async ({\n tokenIn,\n tokenOut,\n amountIn,\n stablePoolDetail,\n pool,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n pool: Pool;\n stablePoolDetail?: StablePool;\n}) => {\n if (!!stablePoolDetail) {\n return getStablePoolEstimate({\n tokenIn,\n tokenOut,\n stablePool: stablePoolDetail,\n amountIn,\n pool,\n });\n } else {\n return getSimplePoolEstimate({\n tokenIn,\n tokenOut,\n pool,\n amountIn,\n });\n }\n};\n\nexport async function getHybridStableSmart(\n tokenIn: TokenMetadata,\n tokenOut: TokenMetadata,\n amountIn: string,\n stablePools: Pool[],\n stablePoolsDetail: StablePool[],\n simplePools: Pool[],\n allTokens: Record<string, TokenMetadata>\n) {\n if (\n !isStablePoolToken(stablePoolsDetail, tokenIn.id) &&\n !isStablePoolToken(stablePoolsDetail, tokenOut.id)\n ) {\n return { actions: [], estimate: '0' };\n }\n\n const stablePoolsDetailById = stablePoolsDetail.reduce((acc, cur) => {\n return {\n ...acc,\n [cur.id]: cur,\n };\n }, {} as Record<string, StablePool>);\n\n const parsedAmountIn = toNonDivisibleNumber(tokenIn.decimals, amountIn);\n\n let pool1: Pool, pool2: Pool;\n\n let pools1: Pool[] = [];\n let pools2: Pool[] = [];\n\n let pools1Right: Pool[] = [];\n let pools2Right: Pool[] = [];\n\n let candidatePools: Pool[][] = [];\n\n /**\n * find possible routes for this pair\n *\n *\n */\n\n if (isStablePoolToken(stablePoolsDetail, tokenIn.id)) {\n // first hop will be through stable pool.\n pools1 = stablePools.filter(pool => pool.tokenIds.includes(tokenIn.id));\n\n const otherStables = pools1\n .map(pool => pool.tokenIds.filter(id => id !== tokenIn.id))\n .flat();\n\n for (var otherStable of otherStables) {\n let stablePoolsThisPair = getStablePoolsThisPair({\n tokenInId: otherStable,\n tokenOutId: tokenOut.id,\n stablePools,\n });\n\n let tmpPools = getPoolsByTokens({\n tokenInId: otherStable,\n tokenOutId: tokenOut.id,\n pools: simplePools,\n });\n const tobeAddedPools = tmpPools.concat(stablePoolsThisPair);\n pools2.push(\n ...tobeAddedPools.filter(p => {\n const supplies = Object.values(p.supplies);\n return new Big(supplies[0]).times(new Big(supplies[1])).gt(0);\n })\n );\n }\n }\n\n if (isStablePoolToken(stablePoolsDetail, tokenOut.id)) {\n // second hop will be through stable pool.\n pools2Right = stablePools.filter(pool =>\n pool.tokenIds.includes(tokenOut.id)\n );\n\n const otherStables = pools2Right\n .map(pool => pool.tokenIds.filter(id => id !== tokenOut.id))\n .flat();\n for (let otherStable of otherStables) {\n let stablePoolsThisPair = getStablePoolsThisPair({\n tokenInId: tokenIn.id,\n tokenOutId: otherStable,\n stablePools,\n });\n\n let tmpPools = getPoolsByTokens({\n tokenInId: tokenIn.id,\n tokenOutId: otherStable,\n pools: simplePools,\n });\n\n const tobeAddedPools = tmpPools.concat(stablePoolsThisPair);\n\n pools1Right.push(\n ...tobeAddedPools.filter(p => {\n const supplies = Object.values(p.supplies);\n return new Big(supplies[0]).times(new Big(supplies[1])).gt(0);\n })\n );\n }\n }\n\n // find candidate pools\n\n for (let p1 of pools1) {\n let middleTokens = p1.tokenIds.filter((id: string) => id !== tokenIn.id);\n for (let middleToken of middleTokens) {\n let p2s = pools2.filter(\n p =>\n p.tokenIds.includes(middleToken) &&\n p.tokenIds.includes(tokenOut.id) &&\n middleToken !== tokenOut.id\n );\n let p2 = _.maxBy(p2s, p =>\n Number(\n new Big(toReadableNumber(tokenOut.decimals, p.supplies[tokenOut.id]))\n )\n );\n\n if (middleToken === tokenOut.id) {\n p2 = p1;\n }\n\n if (p1 && p2) {\n if (p1.id === p2.id) candidatePools.push([p1]);\n else candidatePools.push([p1, p2]);\n }\n }\n }\n for (let p1 of pools1Right) {\n let middleTokens = p1.tokenIds.filter((id: string) => id !== tokenIn.id);\n for (let middleToken of middleTokens) {\n let p2s = pools2Right.filter(\n p =>\n p.tokenIds.includes(middleToken) &&\n p.tokenIds.includes(tokenOut.id) &&\n middleToken !== tokenOut.id\n );\n let p2 = _.maxBy(p2s, p =>\n Number(\n new Big(toReadableNumber(tokenOut.decimals, p.supplies[tokenOut.id]))\n )\n );\n\n if (middleToken === tokenOut.id) {\n p2 = p1;\n }\n\n if (p1 && p2) {\n if (p1.id === p2.id) candidatePools.push([p1]);\n else candidatePools.push([p1, p2]);\n }\n }\n }\n\n if (candidatePools.length > 0) {\n const tokensMedata = await ftGetTokensMetadata(\n candidatePools.map(cp => cp.map(p => p.tokenIds).flat()).flat(),\n allTokens\n );\n\n const BestPoolPair =\n candidatePools.length === 1\n ? candidatePools[0]\n : _.maxBy(candidatePools, poolPair => {\n // only one pool case, only for stable tokens\n if (poolPair.length === 1) {\n if (isStablePool(stablePoolsDetail, poolPair[0].id)) {\n const stablePoolThisPair = getStablePoolsThisPair({\n tokenInId: tokenIn.id,\n tokenOutId: tokenOut.id,\n stablePools,\n })[0];\n\n const stablePoolDetailThisPair = stablePoolsDetail.find(\n spd => spd.id === stablePoolThisPair.id\n );\n\n return Number(\n getStablePoolEstimate({\n tokenIn,\n tokenOut,\n stablePool: stablePoolDetailThisPair as StablePool,\n amountIn,\n pool: poolPair[0],\n }).estimate\n );\n } else {\n return Number(\n getSimplePoolEstimate({\n tokenIn,\n tokenOut,\n amountIn,\n pool: poolPair[0],\n }).estimate\n );\n }\n }\n\n const [tmpPool1, tmpPool2] = poolPair;\n const tokenMidId = poolPair[0].tokenIds.find((t: string) =>\n poolPair[1].tokenIds.includes(t)\n ) as string;\n\n const tokenMidMeta = tokensMedata[tokenMidId];\n\n const estimate1 = {\n ...(isStablePool(stablePoolsDetail, tmpPool1.id)\n ? getStablePoolEstimate({\n tokenIn,\n tokenOut: tokenMidMeta,\n amountIn,\n stablePool: stablePoolsDetailById[tmpPool1.id],\n pool: tmpPool1,\n })\n : getSimplePoolEstimate({\n tokenIn,\n tokenOut: tokenMidMeta,\n amountIn,\n pool: tmpPool1,\n })),\n status: PoolMode.SMART,\n };\n\n const estimate2 = {\n ...(isStablePool(stablePoolsDetail, tmpPool2.id)\n ? getStablePoolEstimate({\n tokenIn: tokenMidMeta,\n tokenOut,\n amountIn: estimate1.estimate,\n stablePool: stablePoolsDetailById[tmpPool2.id],\n pool: tmpPool2,\n })\n : getSimplePoolEstimate({\n tokenIn: tokenMidMeta,\n tokenOut,\n pool: tmpPool2,\n amountIn: estimate1.estimate,\n })),\n status: PoolMode.SMART,\n };\n\n return Number(estimate2.estimate);\n });\n\n // one pool case only get best price\n\n if (!BestPoolPair) return { actions: [], estimate: '0' };\n\n if (BestPoolPair.length === 1) {\n const bestPool = BestPoolPair[0];\n const estimate = await getPoolEstimate({\n tokenIn,\n tokenOut,\n amountIn,\n pool: bestPool,\n stablePoolDetail: stablePoolsDetailById[bestPool.id],\n });\n\n return {\n actions: [\n {\n ...estimate,\n status: PoolMode.STABLE,\n\n pool: { ...estimate.pool, partialAmountIn: parsedAmountIn },\n tokens: [tokenIn, tokenOut],\n inputToken: tokenIn.id,\n outputToken: tokenOut.id,\n totalInputAmount: toNonDivisibleNumber(tokenIn.decimals, amountIn),\n },\n ],\n estimate: estimate.estimate,\n };\n }\n\n // two pool case get best price\n [pool1, pool2] = BestPoolPair;\n\n const tokenMidId = BestPoolPair[0].tokenIds.find((t: string) =>\n BestPoolPair[1].tokenIds.includes(t)\n ) as string;\n\n const tokenMidMeta =\n allTokens[tokenMidId] ||\n (await ftGetTokenMetadata(tokenMidId, 'hybridSmartRoutingEstimate'));\n\n const estimate1 = {\n ...(isStablePool(stablePoolsDetail, pool1.id)\n ? getStablePoolEstimate({\n tokenIn,\n tokenOut: tokenMidMeta,\n amountIn,\n stablePool: stablePoolsDetailById[pool1.id],\n pool: pool1,\n })\n : getSimplePoolEstimate({\n tokenIn,\n tokenOut: tokenMidMeta,\n amountIn,\n pool: pool1,\n })),\n tokens: [tokenIn, tokenMidMeta, tokenOut],\n inputToken: tokenIn.id,\n outputToken: tokenMidMeta.id,\n status: PoolMode.SMART,\n };\n\n estimate1.pool = {\n ...estimate1.pool,\n partialAmountIn: parsedAmountIn,\n };\n\n const estimate2 = {\n ...(isStablePool(stablePoolsDetail, pool2.id)\n ? getStablePoolEstimate({\n tokenIn: tokenMidMeta,\n tokenOut,\n amountIn: estimate1.estimate,\n stablePool: stablePoolsDetailById[pool2.id],\n pool: pool2,\n })\n : getSimplePoolEstimate({\n tokenIn: tokenMidMeta,\n tokenOut,\n amountIn: estimate1.estimate,\n pool: pool2,\n })),\n\n tokens: [tokenIn, tokenMidMeta, tokenOut],\n inputToken: tokenMidMeta.id,\n outputToken: tokenOut.id,\n status: PoolMode.SMART,\n };\n\n return { actions: [estimate1, estimate2], estimate: estimate2.estimate };\n }\n\n return { actions: [], estimate: '0' };\n}\n\n// simple pools and stable pools for this pair\nexport const estimateSwap = async ({\n tokenIn,\n tokenOut,\n amountIn,\n simplePools,\n options,\n}: SwapParams) => {\n if (tokenIn.id === tokenOut.id) throw SameInputTokenError;\n\n if (ONLY_ZEROS.test(amountIn)) throw ZeroInputError;\n\n const { enableSmartRouting, stablePools, stablePoolsDetail } = options || {};\n\n const parsedAmountIn = toNonDivisibleNumber(tokenIn.decimals, amountIn);\n\n let singleRouteEstimate: EstimateSwapView[] = [];\n\n try {\n const estimate = singlePoolSwap({\n tokenIn,\n tokenOut,\n simplePools,\n amountIn,\n stablePools: stablePoolsDetail,\n });\n\n singleRouteEstimate = [\n {\n ...estimate,\n status: PoolMode.PARALLEL,\n pool: { ...estimate?.pool, partialAmountIn: parsedAmountIn },\n totalInputAmount: toNonDivisibleNumber(tokenIn.decimals, amountIn),\n tokens: [tokenIn, tokenOut],\n },\n ] as EstimateSwapView[];\n if (!enableSmartRouting) {\n return singleRouteEstimate;\n }\n } catch (error) {\n if (!enableSmartRouting) throw error;\n }\n\n const inputPools = simplePools.map(p => poolFormatter(p));\n\n const allTokens = (await getTokens()) as Record<string, TokenMetadata>;\n\n const simplePoolSmartRoutingActions = await stableSmart(\n inputPools,\n tokenIn.id,\n tokenOut.id,\n parsedAmountIn,\n allTokens\n );\n\n const simplePoolSmartRoutingEstimate = getExpectedOutputFromActionsORIG(\n simplePoolSmartRoutingActions,\n tokenOut.id\n ).toString();\n\n const hybridSmartRoutingRes = await getHybridStableSmart(\n tokenIn,\n tokenOut,\n amountIn,\n stablePools || [],\n stablePoolsDetail || [],\n simplePools,\n allTokens\n );\n\n const hybridSmartRoutingEstimate = hybridSmartRoutingRes.estimate.toString();\n\n if (\n new Big(simplePoolSmartRoutingEstimate || '0').gte(\n hybridSmartRoutingEstimate || '0'\n )\n ) {\n if (!simplePoolSmartRoutingActions?.length) throw NoPoolError;\n\n if (\n typeof singleRouteEstimate !== 'undefined' &&\n singleRouteEstimate &&\n singleRouteEstimate?.[0]?.estimate &&\n new Big(singleRouteEstimate[0].estimate || '0').gt(\n simplePoolSmartRoutingEstimate || '0'\n )\n ) {\n return singleRouteEstimate;\n }\n return simplePoolSmartRoutingActions as EstimateSwapView[];\n } else {\n if (\n typeof singleRouteEstimate !== 'undefined' &&\n singleRouteEstimate &&\n singleRouteEstimate?.[0]?.estimate &&\n new Big(singleRouteEstimate[0].estimate || '0').gt(\n hybridSmartRoutingEstimate || '0'\n )\n ) {\n return singleRouteEstimate;\n }\n\n return hybridSmartRoutingRes.actions as EstimateSwapView[];\n }\n};\n","import {\n Pool,\n PoolRPCView,\n StablePool,\n SmartRoutingInputPool,\n Transaction,\n EstimateSwapView,\n} from './types';\nimport {\n FEE_DIVISOR,\n RATED_POOL_LP_TOKEN_DECIMALS,\n STABLE_LP_TOKEN_DECIMALS,\n} from './constant';\n\nimport {\n transactions,\n utils,\n transactions as nearTransactions,\n} from 'near-api-js';\n\nimport _, { sortBy } from 'lodash';\n\nimport BN from 'bn.js';\n\nimport * as math from 'mathjs';\nimport {\n REF_FI_CONTRACT_ID,\n WRAP_NEAR_CONTRACT_ID,\n STORAGE_TO_REGISTER_WITH_MFT,\n} from './constant';\nimport Big from 'big.js';\nimport { SignAndSendTransactionsParams } from '@near-wallet-selector/core/lib/wallet';\nimport { TokenMetadata } from './types';\nimport { PoolMode } from './v1-swap/swap';\nimport { getSwappedAmount } from './stable-swap';\nimport { NoFeeToPool } from './error';\nimport { CONSTANT_D, POINTLEFTRANGE, POINTRIGHTRANGE } from './constant';\nimport { DCL_POOL_FEE_LIST } from './dcl-swap/dcl-pool';\n\nexport const parsePool = (pool: PoolRPCView, id?: number): Pool => ({\n id: Number(typeof id === 'number' ? id : pool.id),\n tokenIds: pool.token_account_ids,\n supplies: pool.amounts.reduce(\n (acc: { [tokenId: string]: string }, amount: string, i: number) => {\n acc[pool.token_account_ids[i]] = amount;\n return acc;\n },\n {}\n ),\n fee: pool.total_fee,\n shareSupply: pool.shares_total_supply,\n tvl: pool.tvl,\n token0_ref_price: pool.token0_ref_price,\n pool_kind: pool.pool_kind,\n});\n\nexport const poolFormatter = (pool: Pool) => {\n return {\n id: pool.id,\n token1Id: pool.tokenIds[0],\n token2Id: pool.tokenIds[1],\n token1Supply: pool.supplies[pool.tokenIds[0]],\n token2Supply: pool.supplies[pool.tokenIds[1]],\n fee: pool.fee,\n shares: pool.shareSupply,\n token0_price: pool.token0_ref_price || '0',\n } as SmartRoutingInputPool;\n};\n\nexport const isStablePoolToken = (\n stablePools: StablePool[],\n tokenId: string | Number\n) => {\n return stablePools\n .map(p => p.token_account_ids)\n .flat()\n .includes(tokenId.toString());\n};\n\nexport const isStablePool = (\n stablePools: StablePool[],\n poolId: string | number\n) => {\n return stablePools.map(p => p.id.toString()).includes(poolId.toString());\n};\n\nexport const getStablePoolDecimal = (stablePool: StablePool) => {\n return stablePool.pool_kind === 'RATED_SWAP'\n ? RATED_POOL_LP_TOKEN_DECIMALS\n : STABLE_LP_TOKEN_DECIMALS;\n};\n\nexport const round = (decimals: number, minAmountOut: string) => {\n return Number.isInteger(Number(minAmountOut))\n ? minAmountOut\n : Math.ceil(\n Math.round(Number(minAmountOut) * Math.pow(10, decimals)) /\n Math.pow(10, decimals)\n ).toString();\n};\n\nexport const convertToPercentDecimal = (percent: number) => {\n return math.divide(percent, 100);\n};\n\nexport const percentOf = (percent: number, num: number | string) => {\n return math.evaluate(`${convertToPercentDecimal(percent)} * ${num}`);\n};\n\nexport const percentLess = (percent: number, num: number | string) => {\n return math.format(math.evaluate(`${num} - ${percentOf(percent, num)}`), {\n notation: 'fixed',\n });\n};\n\nexport const getGas = (gas: string | undefined) =>\n gas ? new BN(gas) : new BN('100000000000000');\n\nexport const getAmount = (amount: string) =>\n amount ? new BN(utils.format.parseNearAmount(amount) || '0') : new BN('0');\n\nexport const ONLY_ZEROS = /^0*\\.?0*$/;\n\nexport const toReadableNumber = (\n decimals: number,\n number: string = '0'\n): string => {\n if (!decimals) return number;\n\n const wholeStr = number.substring(0, number.length - decimals) || '0';\n const fractionStr = number\n .substring(number.length - decimals)\n .padStart(decimals, '0')\n .substring(0, decimals);\n\n return `${wholeStr}.${fractionStr}`.replace(/\\.?0+$/, '');\n};\n\nexport const toNonDivisibleNumber = (\n decimals: number,\n number: string\n): string => {\n if (decimals === null || decimals === undefined) return number;\n const [wholePart, fracPart = ''] = number.split('.');\n\n return `${wholePart}${fracPart.padEnd(decimals, '0').slice(0, decimals)}`\n .replace(/^0+/, '')\n .padStart(1, '0');\n};\n\nexport const scientificNotationToString = (strParam: string) => {\n let flag = /e/.test(strParam);\n if (!flag || !strParam) return strParam;\n\n let sysbol = true;\n if (/e-/.test(strParam)) {\n sysbol = false;\n }\n\n const negative = Number(strParam) < 0 ? '-' : '';\n\n let index = Number(strParam.match(/\\d+$/)?.[0]);\n\n let basis = strParam.match(/[\\d\\.]+/)?.[0];\n\n if (!index || !basis) return strParam;\n\n const ifFraction = basis.includes('.');\n\n let wholeStr;\n let fractionStr;\n\n if (ifFraction) {\n wholeStr = basis.split('.')[0];\n fractionStr = basis.split('.')[1];\n } else {\n wholeStr = basis;\n fractionStr = '';\n }\n\n if (sysbol) {\n if (!ifFraction) {\n return negative + wholeStr.padEnd(index + wholeStr.length, '0');\n } else {\n if (fractionStr.length <= index) {\n return negative + wholeStr + fractionStr.padEnd(index, '0');\n } else {\n return (\n negative +\n wholeStr +\n fractionStr.substring(0, index) +\n '.' +\n fractionStr.substring(index)\n );\n }\n }\n } else {\n if (!ifFraction)\n return (\n negative +\n wholeStr.padStart(index + wholeStr.length, '0').replace(/^0/, '0.')\n );\n else {\n return (\n negative +\n wholeStr.padStart(index + wholeStr.length, '0').replace(/^0/, '0.') +\n fractionStr\n );\n }\n }\n};\n\nexport const formatWithCommas = (value: string) => {\n const pattern = /(-?\\d+)(\\d{3})/;\n while (pattern.test(value)) {\n value = value.replace(pattern, '$1,$2');\n }\n return value;\n};\n\nexport const toPrecision = (\n number: string,\n precision: number,\n withCommas: boolean = false,\n atLeastOne: boolean = true\n): string => {\n const [whole, decimal = ''] = number.split('.');\n\n let str = `${withCommas ? formatWithCommas(whole) : whole}.${decimal.slice(\n 0,\n precision\n )}`.replace(/\\.$/, '');\n if (atLeastOne && Number(str) === 0 && str.length > 1) {\n var n = str.lastIndexOf('0');\n str = str.slice(0, n) + str.slice(n).replace('0', '1');\n }\n\n return str;\n};\n\nexport const transformTransactions = (\n transactions: Transaction[],\n AccountId: string\n) => {\n const parsedTransactions = transactions.map((t: Transaction) => {\n return {\n signerId: AccountId,\n receiverId: t.receiverId,\n actions: t.functionCalls.map(fc => {\n return {\n type: 'FunctionCall',\n params: {\n methodName: fc.methodName,\n args: fc.args || {},\n gas: getGas(fc.gas)\n .toNumber()\n .toFixed(),\n deposit: utils.format.parseNearAmount(fc.amount || '0')!,\n },\n };\n }),\n };\n });\n\n return parsedTransactions;\n};\n\nexport const WalletSelectorTransactions = (\n transactions: Transaction[],\n AccountId: string\n) => {\n const parsedTransactions = transactions.map((t: Transaction) => {\n return {\n signerId: AccountId,\n receiverId: t.receiverId,\n actions: t.functionCalls.map(fc => {\n return {\n type: 'FunctionCall',\n params: {\n methodName: fc.methodName,\n args: fc.args || {},\n gas: getGas(fc.gas)\n .toNumber()\n .toFixed(),\n deposit: utils.format.parseNearAmount(fc.amount || '0')!,\n },\n };\n }),\n };\n });\n\n return { transactions: parsedTransactions } as SignAndSendTransactionsParams;\n};\n\nexport const separateRoutes = (\n actions: EstimateSwapView[],\n outputToken: string\n) => {\n const res = [];\n let curRoute = [];\n\n for (let i in actions) {\n curRoute.push(actions[i]);\n if (actions[i].outputToken === outputToken) {\n res.push(curRoute);\n curRoute = [];\n }\n }\n\n return res;\n};\n\nexport const calculateExchangeRate = (\n from: string,\n to: string,\n precision?: number\n) => {\n return math\n .floor(math.evaluate(`${to} / ${from}`), precision || 4)\n .toString();\n};\n\nexport const getAvgFee = (\n estimates: EstimateSwapView[],\n outputToken: string,\n parsedAmountIn: string\n) => {\n if (!estimates || estimates.length === 0) {\n return 0;\n }\n\n const routes = separateRoutes(estimates, outputToken);\n\n let fee = new Big(0);\n\n routes.forEach(r => {\n const partialAmountIn = r[0].pool.partialAmountIn || '0';\n\n fee = fee.plus(\n r\n .reduce(\n (acc, cur) => acc.plus(cur.pool.fee || cur.pool.total_fee || 0),\n new Big(0)\n )\n .times(partialAmountIn)\n .div(ONLY_ZEROS.test(parsedAmountIn) ? '1' : parsedAmountIn)\n );\n });\n\n return fee.toNumber();\n};\n\nexport const getAccountName = (AccountId: string) => {\n if (!AccountId) return AccountId;\n\n const [account, network] = AccountId.split('.');\n const niceAccountId = `${account.slice(0, 10)}...${network || ''}`;\n\n return account.length > 10 ? niceAccountId : AccountId;\n};\n\nexport const symbolsArr = ['e', 'E', '+', '-'];\n\nexport const multiply = (factor1: string, factor2: string) => {\n return math.format(math.evaluate(`${factor1} * ${factor2}`), {\n notation: 'fixed',\n });\n};\n\nexport const toInternationalCurrencySystemLongString = (\n labelValue: string,\n percent?: number\n) => {\n return Math.abs(Number(labelValue)) >= 1.0e9\n ? (Math.abs(Number(labelValue)) / 1.0e9).toFixed(percent || 2) + 'B'\n : Math.abs(Number(labelValue)) >= 1.0e6\n ? (Math.abs(Number(labelValue)) / 1.0e6).toFixed(percent || 2) + 'M'\n : Math.abs(Number(labelValue)).toFixed(percent || 2);\n};\n\nexport const percentOfBigNumber = (\n percent: number,\n num: number | string,\n precision: number\n) => {\n const valueBig = math.bignumber(num);\n const percentBig = math.bignumber(percent).div(100);\n\n return toPrecision(\n scientificNotationToString(valueBig.mul(percentBig).toString()),\n precision\n );\n};\n\nexport const toRealSymbol = (symbol: string) => {\n if (!symbol) return '';\n const blackList = ['nUSDO'];\n\n if (symbol === 'nWETH' || symbol === 'WETH') return 'wETH';\n if (blackList.includes(symbol)) return symbol;\n return symbol.charAt(0) === 'n' &&\n symbol.charAt(1) === symbol.charAt(1).toUpperCase()\n ? symbol.substring(1)\n : symbol;\n};\n\nexport const calculateFeeCharge = (fee: number, total: string) => {\n return math.floor(math.evaluate(`(${fee} / ${FEE_DIVISOR}) * ${total}`), 3);\n};\n\nexport const calculateFeePercent = (fee: number) => {\n return math.divide(fee, 100);\n};\n\nexport function getExpectedOutputFromSwapTodos(\n estimates: EstimateSwapView[],\n outputToken: string\n) {\n if (!estimates || estimates.length === 0) return new Big(0);\n\n return estimates\n .filter(item => item.outputToken === outputToken)\n .map(item => new Big(item.estimate || 0))\n .reduce((a, b) => a.plus(b), new Big(0));\n}\n\nexport const calculateAmountReceived = (\n pool: Pool,\n amountIn: string,\n tokenIn: TokenMetadata,\n tokenOut: TokenMetadata\n) => {\n const partialAmountIn = toReadableNumber(tokenIn.decimals, amountIn);\n\n const in_balance = toReadableNumber(\n tokenIn.decimals,\n pool.supplies[tokenIn.id]\n );\n const out_balance = toReadableNumber(\n tokenOut.decimals,\n pool.supplies[tokenOut.id]\n );\n\n const big_in_balance = math.bignumber(in_balance);\n const big_out_balance = math.bignumber(out_balance);\n\n const constant_product = big_in_balance.mul(big_out_balance);\n\n const new_in_balance = big_in_balance.plus(math.bignumber(partialAmountIn));\n\n const new_out_balance = constant_product.div(new_in_balance);\n\n const tokenOutReceived = big_out_balance.minus(new_out_balance);\n\n return tokenOutReceived;\n};\n\nexport const calculateMarketPrice = (\n pool: Pool,\n tokenIn: TokenMetadata,\n tokenOut: TokenMetadata\n) => {\n const cur_in_balance = toReadableNumber(\n tokenIn.decimals,\n pool.supplies[tokenIn.id]\n );\n\n const cur_out_balance = toReadableNumber(\n tokenOut.decimals,\n pool.supplies[tokenOut.id]\n );\n\n return math.evaluate(`(${cur_in_balance} / ${cur_out_balance})`);\n};\n\nexport const calculateSmartRoutingPriceImpact = (\n tokenInAmount: string,\n swapTodos: EstimateSwapView[],\n tokenIn: TokenMetadata,\n tokenMid: TokenMetadata,\n tokenOut: TokenMetadata,\n stablePools: StablePool[]\n) => {\n const isPool1StablePool = isStablePool(stablePools, swapTodos[0].pool.id);\n const isPool2StablePool = isStablePool(stablePools, swapTodos[1].pool.id);\n\n const marketPrice1 = isPool1StablePool\n ? (\n Number(swapTodos[0].pool.rates?.[tokenMid.id]) /\n Number(swapTodos[0].pool.rates?.[tokenIn.id])\n ).toString()\n : calculateMarketPrice(swapTodos[0].pool, tokenIn, tokenMid);\n\n const marketPrice2 = isPool2StablePool\n ? (\n Number(swapTodos[1].pool.rates?.[tokenOut.id]) /\n Number(swapTodos[1].pool.rates?.[tokenMid.id])\n ).toString()\n : calculateMarketPrice(swapTodos[1].pool, tokenMid, tokenOut);\n\n const generalMarketPrice = math.evaluate(`${marketPrice1} * ${marketPrice2}`);\n\n const tokenMidReceived = isPool1StablePool\n ? swapTodos[0].noFeeAmountOut\n : calculateAmountReceived(\n swapTodos[0].pool,\n toNonDivisibleNumber(tokenIn.decimals, tokenInAmount),\n tokenIn,\n tokenMid\n );\n\n const formattedTokenMidReceived = scientificNotationToString(\n tokenMidReceived?.toString() || '0'\n );\n\n let stableOutPool2;\n if (isPool2StablePool) {\n const stablePool2 =\n stablePools.find(p => p.id === swapTodos[1].pool.id) || stablePools[0];\n\n const stableOut = getSwappedAmount(\n tokenMid.id,\n tokenOut.id,\n formattedTokenMidReceived,\n stablePool2,\n getStablePoolDecimal(stablePool2)\n );\n stableOutPool2 =\n stableOut[0] < 0\n ? '0'\n : toPrecision(scientificNotationToString(stableOut[2].toString()), 0);\n stableOutPool2 = toReadableNumber(\n getStablePoolDecimal(stablePool2),\n stableOutPool2\n );\n }\n\n const tokenOutReceived = isPool2StablePool\n ? stableOutPool2\n : calculateAmountReceived(\n swapTodos[1].pool,\n toNonDivisibleNumber(tokenMid.decimals, formattedTokenMidReceived),\n tokenMid,\n tokenOut\n );\n\n const newMarketPrice = math.evaluate(\n `${tokenInAmount} / ${tokenOutReceived}`\n );\n\n const PriceImpact = new Big(newMarketPrice)\n .minus(new Big(generalMarketPrice))\n .div(newMarketPrice)\n .times(100)\n .toString();\n\n return scientificNotationToString(PriceImpact);\n};\nexport const percent = (numerator: string, denominator: string) => {\n return math.evaluate(`(${numerator} / ${denominator}) * 100`);\n};\nexport const calcStableSwapPriceImpact = (\n from: string,\n to: string,\n marketPrice: string = '1'\n) => {\n const newMarketPrice = math.evaluate(`${from} / ${to}`);\n\n return math.format(\n percent(\n math.evaluate(`${newMarketPrice} - ${marketPrice}`),\n newMarketPrice\n ),\n {\n notation: 'fixed',\n }\n );\n};\n\nexport const calculatePriceImpact = (\n pools: Pool[],\n tokenIn: TokenMetadata,\n tokenOut: TokenMetadata,\n tokenInAmount: string\n) => {\n let in_balance: string = '0',\n out_balance: string = '0';\n\n pools.forEach((pool, i) => {\n const cur_in_balance = toReadableNumber(\n tokenIn.decimals,\n pool.supplies[tokenIn.id]\n );\n\n const cur_out_balance = toReadableNumber(\n tokenOut.decimals,\n pool.supplies[tokenOut.id]\n );\n\n in_balance = new Big(in_balance).plus(cur_in_balance).toString();\n out_balance = new Big(out_balance).plus(cur_out_balance).toString();\n });\n\n const finalMarketPrice = math.evaluate(`(${in_balance} / ${out_balance})`);\n\n const separatedReceivedAmount = pools.map(pool => {\n return calculateAmountReceived(\n pool,\n pool.partialAmountIn || '0',\n tokenIn,\n tokenOut\n );\n });\n\n const finalTokenOutReceived = math.sum(...separatedReceivedAmount);\n\n const newMarketPrice = math.evaluate(\n `${tokenInAmount} / ${finalTokenOutReceived}`\n );\n\n const PriceImpact = new Big(newMarketPrice)\n .minus(new Big(finalMarketPrice))\n .div(newMarketPrice)\n .times(100)\n .toString();\n\n return scientificNotationToString(PriceImpact);\n};\n\nexport function calculateSmartRoutesV2PriceImpact(\n actions: any,\n outputToken: string,\n tokenInPara: TokenMetadata,\n stablePools: StablePool[]\n) {\n const routes = separateRoutes(actions, outputToken);\n\n const tokenIn = routes[0][0].tokens?.[0] || tokenInPara;\n\n const totalInputAmount = routes[0][0].totalInputAmount;\n\n const priceImpactForRoutes = routes.map((r, i) => {\n const readablePartialAmountIn = toReadableNumber(\n tokenIn.decimals,\n r[0].pool.partialAmountIn\n );\n\n if (r.length > 1) {\n const tokenIn = r[0].tokens?.[0];\n const tokenMid = r[0].tokens?.[1];\n const tokenOut = r[0].tokens?.[2];\n\n return calculateSmartRoutingPriceImpact(\n readablePartialAmountIn,\n routes[i],\n tokenIn || tokenInPara,\n tokenMid || tokenInPara,\n tokenOut || tokenInPara,\n stablePools\n );\n } else {\n return isStablePool(stablePools, r[0].pool.id)\n ? calcStableSwapPriceImpact(\n readablePartialAmountIn,\n r[0].noFeeAmountOut || '0',\n (\n Number(r[0].pool.rates?.[outputToken]) /\n Number(r[0].pool.rates?.[tokenIn.id])\n ).toString()\n )\n : calculatePriceImpact(\n [r[0].pool],\n r[0].tokens?.[0] || tokenIn,\n r[0].tokens?.[1] || tokenIn,\n readablePartialAmountIn\n );\n }\n });\n\n const rawRes = priceImpactForRoutes.reduce(\n (pre, cur, i) => {\n return pre.plus(\n new Big(routes[i][0].pool.partialAmountIn || '0')\n .div(new Big(totalInputAmount || '1'))\n .mul(cur)\n );\n },\n\n new Big(0)\n );\n\n return scientificNotationToString(rawRes.toString());\n}\n\nexport const getPriceImpact = ({\n estimates,\n tokenIn,\n tokenOut,\n amountIn,\n amountOut,\n stablePools,\n}: {\n estimates: EstimateSwapView[];\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n amountOut: string;\n stablePools: StablePool[];\n}) => {\n let PriceImpactValue: string = '0';\n let priceImpactValueSmartRouting: string = '0';\n let priceImpactValueSmartRoutingV2: string = '0';\n\n if (typeof estimates === 'undefined') return '0';\n\n try {\n if (estimates?.length === 2 && estimates[0].status === PoolMode.SMART) {\n priceImpactValueSmartRouting = calculateSmartRoutingPriceImpact(\n amountIn,\n estimates,\n tokenIn,\n estimates[0].tokens?.[1] || tokenIn,\n tokenOut,\n stablePools\n );\n } else if (\n estimates?.length === 1 &&\n estimates[0].status === PoolMode.STABLE\n ) {\n priceImpactValueSmartRouting = calcStableSwapPriceImpact(\n toReadableNumber(tokenIn.decimals, estimates[0].totalInputAmount),\n estimates[0].noFeeAmountOut || '0',\n (\n Number(estimates[0].pool.rates?.[tokenOut.id]) /\n Number(estimates[0].pool.rates?.[tokenIn.id])\n ).toString()\n );\n } else priceImpactValueSmartRouting = '0';\n } catch (error) {\n priceImpactValueSmartRouting = '0';\n }\n\n try {\n priceImpactValueSmartRoutingV2 = calculateSmartRoutesV2PriceImpact(\n estimates,\n tokenOut.id,\n tokenIn,\n stablePools\n );\n } catch (error) {\n priceImpactValueSmartRoutingV2 = '0';\n }\n\n try {\n if (\n estimates[0].status === PoolMode.SMART ||\n estimates[0].status === PoolMode.STABLE\n ) {\n PriceImpactValue = priceImpactValueSmartRouting;\n } else {\n PriceImpactValue = priceImpactValueSmartRoutingV2;\n }\n\n return PriceImpactValue;\n } catch (error) {\n return '0';\n }\n};\n\nexport const subtraction = (initialValue: string, toBeSubtract: string) => {\n return math.format(math.evaluate(`${initialValue} - ${toBeSubtract}`), {\n notation: 'fixed',\n });\n};\n\nexport function getPoolAllocationPercents(pools: Pool[]) {\n if (pools.length === 1) return ['100'];\n\n if (pools) {\n const partialAmounts = pools.map(pool => {\n return math.bignumber(pool.partialAmountIn);\n });\n\n const ps: string[] = new Array(partialAmounts.length).fill('0');\n\n const sum =\n partialAmounts.length === 1\n ? partialAmounts[0]\n : math.sum(...partialAmounts);\n\n const sortedAmount = sortBy(partialAmounts, p => Number(p));\n\n let minIndexes: number[] = [];\n\n for (let k = 0; k < sortedAmount.length - 1; k++) {\n let minIndex = -1;\n\n for (let j = 0; j < partialAmounts.length; j++) {\n if (partialAmounts[j].eq(sortedAmount[k]) && !minIndexes.includes(j)) {\n minIndex = j;\n minIndexes.push(j);\n break;\n }\n }\n const res = math\n .round(percent(partialAmounts[minIndex].toString(), sum))\n .toString();\n\n if (Number(res) === 0) {\n ps[minIndex] = '1';\n } else {\n ps[minIndex] = res;\n }\n }\n\n const finalPIndex = ps.indexOf('0');\n\n ps[finalPIndex] = subtraction(\n '100',\n ps.length === 1 ? Number(ps[0]) : math.sum(...ps.map(p => Number(p)))\n ).toString();\n\n return ps;\n } else {\n return [];\n }\n}\n\nexport const isMobile = (): boolean => {\n return window.screen.width <= 600;\n};\nexport function divide(numerator: string, denominator: string) {\n return math.format(math.evaluate(`${numerator} / ${denominator}`), {\n notation: 'fixed',\n });\n}\n\nexport const getMax = function(id: string, amount: string) {\n return id !== WRAP_NEAR_CONTRACT_ID\n ? amount\n : Number(amount) <= 0.5\n ? '0'\n : String(Number(amount) - 0.5);\n};\n\nexport function getPointByPrice(\n pointDelta: number,\n price: string,\n decimalRate: number,\n noNeedSlot?: boolean\n) {\n const point = Math.log(+price * decimalRate) / Math.log(CONSTANT_D);\n const point_int = Math.round(point);\n let point_int_slot = point_int;\n if (!noNeedSlot) {\n point_int_slot = Math.floor(point_int / pointDelta) * pointDelta;\n }\n if (point_int_slot < POINTLEFTRANGE) {\n return POINTLEFTRANGE;\n } else if (point_int_slot > POINTRIGHTRANGE) {\n return 800000;\n }\n return point_int_slot;\n}\nexport const feeToPointDelta = (fee: number) => {\n switch (fee) {\n case 100:\n return 1;\n case 400:\n return 8;\n case 2000:\n return 40;\n case 10000:\n return 200;\n default:\n throw NoFeeToPool(fee);\n }\n};\n\nexport const priceToPoint = ({\n tokenA,\n tokenB,\n amountA,\n amountB,\n fee,\n}: {\n tokenA: TokenMetadata;\n tokenB: TokenMetadata;\n amountA: string;\n amountB: string;\n fee: number;\n}) => {\n if (DCL_POOL_FEE_LIST.indexOf(fee) === -1) throw NoFeeToPool(fee);\n\n const decimal_price_A_by_B = new Big(amountB).div(amountA);\n const undecimal_price_A_by_B = decimal_price_A_by_B\n .times(new Big(10).pow(tokenB.decimals))\n .div(new Big(10).pow(tokenA.decimals));\n\n const pointDelta = feeToPointDelta(fee);\n\n const price = decimal_price_A_by_B;\n\n const decimalRate = new Big(10)\n .pow(tokenB.decimals)\n .div(new Big(10).pow(tokenA.decimals))\n .toNumber();\n\n return getPointByPrice(\n pointDelta,\n scientificNotationToString(price.toString()),\n decimalRate\n );\n};\n\nexport const pointToPrice = ({\n tokenA,\n tokenB,\n point,\n}: {\n tokenA: TokenMetadata;\n tokenB: TokenMetadata;\n point: number;\n}) => {\n const undecimal_price = Math.pow(CONSTANT_D, point);\n const decimal_price_A_by_B = new Big(undecimal_price)\n .times(new Big(10).pow(tokenA.decimals))\n .div(new Big(10).pow(tokenB.decimals));\n\n return scientificNotationToString(decimal_price_A_by_B.toString());\n};\n\nexport const registerAccountOnToken = (AccountId: string) => {\n return {\n methodName: 'storage_deposit',\n args: {\n registration_only: true,\n account_id: AccountId,\n },\n gas: '30000000000000',\n amount: STORAGE_TO_REGISTER_WITH_MFT,\n };\n};\n","import {\n keyStores,\n KeyPair,\n InMemorySigner,\n providers,\n transactions as nearTransactions,\n utils,\n} from 'near-api-js';\nimport BN from 'bn.js';\nimport { getConfig } from './constant';\nimport fs from 'fs';\nimport os from 'os';\nimport {\n NoPuiblicKeyError,\n InValidAccessKeyError,\n NoCredential,\n} from './error';\nimport { AccessKeyView } from 'near-api-js/lib/providers/provider';\nimport { TransformedTransaction } from './types';\nimport { Transaction } from './types';\nimport { transformTransactions } from './utils';\nimport { AccountIdMisMatch } from './error';\n\nexport const getKeyStore = () => {\n return typeof window === 'undefined'\n ? new keyStores.InMemoryKeyStore()\n : new keyStores.BrowserLocalStorageKeyStore();\n};\n\nexport const provider = new providers.JsonRpcProvider({\n url: getConfig().nodeUrl,\n});\n\nexport const getMemorySigner = async ({\n AccountId,\n keyPath,\n}: {\n AccountId: string;\n keyPath: string;\n}) => {\n try {\n const homedir = os.homedir();\n const credentials = JSON.parse(\n fs.readFileSync(homedir + keyPath).toString()\n );\n\n const credentialAccountId = credentials?.account_id;\n\n if (!credentialAccountId) throw NoCredential;\n\n if (credentialAccountId !== AccountId) throw AccountIdMisMatch;\n\n const myKeyStore = new keyStores.InMemoryKeyStore();\n myKeyStore.setKey(\n getConfig().networkId,\n AccountId,\n KeyPair.fromString(credentials.private_key)\n );\n\n const signer = new InMemorySigner(myKeyStore);\n\n return signer;\n } catch (error) {\n throw error;\n }\n};\n\nconst validateAccessKey = (\n transaction: TransformedTransaction,\n accessKey: AccessKeyView\n) => {\n if (accessKey.permission === 'FullAccess') {\n return accessKey;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { receiver_id, method_names } = accessKey.permission.FunctionCall;\n\n if (transaction.receiverId !== receiver_id) {\n return null;\n }\n\n return transaction.actions.every(action => {\n if (action.type !== 'FunctionCall') {\n return false;\n }\n\n const { methodName, deposit } = action.params;\n\n if (method_names.length && method_names.includes(methodName)) {\n return false;\n }\n\n return parseFloat(deposit) <= 0;\n });\n};\n\nexport const getSignedTransactionsByMemoryKey = async ({\n transactionsRef,\n AccountId,\n keyPath,\n}: {\n transactionsRef: Transaction[];\n AccountId: string;\n keyPath: string;\n}) => {\n const transactions = transformTransactions(transactionsRef, AccountId);\n\n const block = await provider.block({ finality: 'final' });\n\n const signedTransactions: Array<nearTransactions.SignedTransaction> = [];\n const signer = await getMemorySigner({\n AccountId,\n keyPath,\n });\n\n for (let i = 0; i < transactions.length; i += 1) {\n const transaction = transactions[i];\n\n const publicKey = await signer.getPublicKey(\n AccountId,\n getConfig().networkId\n );\n if (!publicKey) {\n throw NoPuiblicKeyError;\n }\n\n const accessKey = await provider.query<AccessKeyView>({\n request_type: 'view_access_key',\n finality: 'final',\n account_id: AccountId,\n public_key: publicKey.toString(),\n });\n\n if (!validateAccessKey(transaction, accessKey)) {\n throw InValidAccessKeyError;\n }\n\n const tx = nearTransactions.createTransaction(\n AccountId,\n utils.PublicKey.from(publicKey.toString()),\n transactions[i].receiverId,\n accessKey.nonce + i + 1,\n transaction.actions.map(action => {\n const { methodName, args, gas, deposit } = action.params;\n return nearTransactions.functionCall(\n methodName,\n args,\n new BN(gas),\n new BN(deposit)\n );\n }),\n utils.serialize.base_decode(block.header.hash)\n );\n\n const [, signedTx] = await nearTransactions.signTransaction(\n tx,\n signer,\n transactions[i].signerId,\n getConfig().networkId\n );\n signedTransactions.push(signedTx);\n }\n\n return signedTransactions;\n};\n\nexport const sendTransactionsByMemoryKey = async ({\n signedTransactions,\n}: {\n signedTransactions: nearTransactions.SignedTransaction[];\n}) => {\n try {\n const results: Array<providers.FinalExecutionOutcome> = [];\n\n for (let i = 0; i < signedTransactions.length; i += 1) {\n results.push(await provider.sendTransaction(signedTransactions[i]));\n }\n\n return results;\n } catch (err) {\n throw err;\n }\n};\n","import {\n REF_FI_CONTRACT_ID,\n config,\n WRAP_NEAR_CONTRACT_ID,\n NEAR_META_DATA,\n getConfig,\n switchEnv,\n} from './constant';\nimport {\n keyStores,\n Near,\n providers,\n WalletConnection,\n utils,\n} from 'near-api-js';\nimport { NoAccountIdFound, TokenNotExistError, DCLInValid } from './error';\nimport { getKeyStore } from './near';\n\nimport {\n TokenMetadata,\n FTStorageBalance,\n RefFiViewFunctionOptions,\n} from './types';\nimport { AccountView } from 'near-api-js/lib/providers/provider';\nimport { Transaction } from './types';\nimport { ONE_YOCTO_NEAR, REF_TOKEN_ID, REF_META_DATA } from './constant';\n\nimport metaIconDefaults from './metaIcons';\n\nconst BANANA_ID = 'berryclub.ek.near';\nconst CHEDDAR_ID = 'token.cheddar.near';\nconst CUCUMBER_ID = 'farm.berryclub.ek.near';\nconst HAPI_ID = 'd9c2d319cd7e6177336b0a9c93c21cb48d84fb54.factory.bridge.near';\nconst WOO_ID = '4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near';\n\nexport const REPLACE_TOKENS = [\n BANANA_ID,\n CHEDDAR_ID,\n CUCUMBER_ID,\n HAPI_ID,\n WOO_ID,\n];\n\nlet near = new Near({\n keyStore: getKeyStore(),\n headers: {},\n ...getConfig(),\n});\nexport const init_env = (env: string) => {\n near = new Near({\n keyStore: getKeyStore(),\n headers: {},\n ...getConfig(env),\n });\n return switchEnv();\n};\n\nexport const refFiViewFunction = async ({\n methodName,\n args,\n}: RefFiViewFunctionOptions) => {\n const nearConnection = await near.account(REF_FI_CONTRACT_ID);\n\n return nearConnection.viewFunction(REF_FI_CONTRACT_ID, methodName, args);\n};\n\nexport const ftViewFunction = async (\n tokenId: string,\n { methodName, args }: RefFiViewFunctionOptions\n) => {\n const nearConnection = await near.account(REF_FI_CONTRACT_ID);\n\n return nearConnection.viewFunction(tokenId, methodName, args);\n};\n\nexport const ftGetStorageBalance = (\n tokenId: string,\n AccountId: string\n): Promise<FTStorageBalance | null> => {\n if (!AccountId) throw NoAccountIdFound;\n\n return ftViewFunction(tokenId, {\n methodName: 'storage_balance_of',\n args: { account_id: AccountId },\n });\n};\n\nexport const ftGetBalance = async (tokenId: string, AccountId: string) => {\n if (!AccountId) return '0';\n\n if (tokenId === 'NEAR') {\n return getAccountNearBalance(AccountId).catch(() => '0');\n }\n\n return ftViewFunction(tokenId, {\n methodName: 'ft_balance_of',\n args: {\n account_id: AccountId,\n },\n })\n .then(res => {\n return res;\n })\n .catch(() => '0');\n};\n\nexport const getTotalPools = async () => {\n return refFiViewFunction({\n methodName: 'get_number_of_pools',\n });\n};\n\nexport const ftGetTokenMetadata = async (\n id: string,\n tag?: string\n): Promise<TokenMetadata> => {\n if (id === REF_TOKEN_ID) return REF_META_DATA;\n\n const metadata = await ftViewFunction(id, {\n methodName: 'ft_metadata',\n }).catch(() => {\n throw TokenNotExistError;\n });\n\n if (\n !metadata.icon ||\n id === BANANA_ID ||\n id === CHEDDAR_ID ||\n id === CUCUMBER_ID ||\n id === HAPI_ID ||\n id === WOO_ID ||\n id === WRAP_NEAR_CONTRACT_ID\n ) {\n return {\n ...metadata,\n icon: metaIconDefaults[id],\n id,\n };\n }\n\n return { ...metadata, id };\n};\n\nexport const ftGetTokensMetadata = async (\n tokenIds: string[],\n allTokens: Record<string, TokenMetadata>\n) => {\n const tokensMetadata = await Promise.all(\n tokenIds.map((id: string) => allTokens[id] || ftGetTokenMetadata(id))\n );\n\n return tokensMetadata.reduce((pre, cur, i) => {\n return {\n ...pre,\n [tokenIds[i]]: cur,\n };\n }, {}) as Record<string, TokenMetadata>;\n};\n\nexport const getGlobalWhitelist = async (): Promise<string[]> => {\n const globalWhitelist = await refFiViewFunction({\n methodName: 'get_whitelisted_tokens',\n });\n return Array.from(new Set(globalWhitelist));\n};\n\nexport const getUserRegisteredTokens = async (\n AccountId?: string\n): Promise<string[]> => {\n if (!AccountId) return [];\n\n return refFiViewFunction({\n methodName: 'get_user_whitelisted_tokens',\n args: { account_id: AccountId },\n });\n};\n\nexport const getAccountNearBalance = async (accountId: string) => {\n const provider = new providers.JsonRpcProvider({\n url: getConfig().nodeUrl,\n });\n\n return provider\n .query<AccountView>({\n request_type: 'view_account',\n finality: 'final',\n account_id: accountId,\n })\n .then(data => data.amount);\n};\n\nexport const nearDepositTransaction = (amount: string) => {\n const transaction: Transaction = {\n receiverId: WRAP_NEAR_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'near_deposit',\n args: {},\n gas: '50000000000000',\n amount,\n },\n ],\n };\n\n return transaction;\n};\n\nexport const nearWithdrawTransaction = (amount: string) => {\n const transaction: Transaction = {\n receiverId: WRAP_NEAR_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'near_withdraw',\n args: { amount: utils.format.parseNearAmount(amount) },\n amount: ONE_YOCTO_NEAR,\n },\n ],\n };\n return transaction;\n};\n\nexport const refDCLSwapViewFunction = async ({\n methodName,\n args,\n}: RefFiViewFunctionOptions) => {\n const nearConnection = await near.account(REF_FI_CONTRACT_ID);\n\n if (!config.REF_DCL_SWAP_CONTRACT_ID) throw DCLInValid;\n\n return nearConnection.viewFunction(\n config.REF_DCL_SWAP_CONTRACT_ID,\n methodName,\n args\n );\n};\n\nexport const DCLSwapGetStorageBalance = (\n tokenId: string,\n AccountId: string\n) => {\n return refDCLSwapViewFunction({\n methodName: 'storage_balance_of',\n args: { account_id: AccountId },\n });\n};\n","import { TokenMetadata, Transaction } from '../types';\nimport {\n priceToPoint,\n toNonDivisibleNumber,\n toPrecision,\n registerAccountOnToken,\n} from '../utils';\nimport { ONE_YOCTO_NEAR, WRAP_NEAR_CONTRACT_ID, config } from '../constant';\nimport {\n nearDepositTransaction,\n ftGetStorageBalance,\n refDCLSwapViewFunction,\n} from '../ref';\nimport { NoFeeToPool } from '../error';\n\nexport const DCL_POOL_FEE_LIST = [100, 400, 2000, 10000];\n\ninterface PoolInfo {\n pool_id?: string;\n token_x?: string;\n token_y?: string;\n fee: number;\n point_delta?: number;\n current_point?: number;\n state?: string;\n liquidity?: string;\n liquidity_x?: string;\n max_liquidity_per_point?: string;\n percent?: string;\n total_x?: string;\n total_y?: string;\n tvl?: number;\n token_x_metadata?: TokenMetadata;\n token_y_metadata?: TokenMetadata;\n}\n\nexport const getDCLPoolId = (tokenA: string, tokenB: string, fee: number) => {\n if (DCL_POOL_FEE_LIST.indexOf(fee) === -1) throw NoFeeToPool(fee);\n\n const tokenSeq = [tokenA, tokenB].sort().join('|');\n\n return `${tokenSeq}|${fee}`;\n};\nexport const listDCLPools = () => {\n return refDCLSwapViewFunction({\n methodName: 'list_pools',\n });\n};\n\nexport const getDCLPool = async (pool_id: string) => {\n const [token_x, token_y, fee] = pool_id.split('|');\n\n const token_seq = [token_x, token_y].sort().join('|');\n\n const new_pool_id = `${token_seq}|${fee}`;\n\n return refDCLSwapViewFunction({\n methodName: 'get_pool',\n args: {\n pool_id: new_pool_id,\n },\n }) as Promise<PoolInfo>;\n};\n","import { config, getConfig } from './constant';\nimport { DCL_POOL_FEE_LIST } from './dcl-swap/dcl-pool';\n\nexport const formatError = (msg: string) => {\n return new Error(msg);\n};\n\nexport const unNamedError = formatError('Something wrong happened');\n\nexport const SameInputTokenError = formatError(\n 'Input token should be different with output token'\n);\n\nexport const ZeroInputError = formatError(\n 'Input amount should be greater than 0'\n);\n\nexport const NoPoolError = formatError('No pool found for the input tokens');\n\nexport const NotLoginError = formatError('Please login in first');\n\nexport const SwapRouteError = formatError(\n \"Something wrong happened, we don't get correct routes corrreponding to current input\"\n);\n\nexport const TokenNotExistError = formatError(\n `This token doesn't exist in ${getConfig().networkId}`\n);\n\nexport const NoPuiblicKeyError = formatError('No public key found');\n\nexport const NoLocalSignerError = formatError('No local signer found');\n\nexport const InValidAccessKeyError = formatError('Invalid access key');\n\nexport const AccountIdMisMatch = formatError(\n \"Your input account id doesn't match the account id in the credential\"\n);\n\nexport const NoCredential = formatError('No Credential to such path');\n\nexport const NoAccountIdFound = formatError('No account id found');\n\nexport const NoFeeToPool = (fee: number) =>\n formatError(\n `InValid fee ${fee} to DCL pool, the valid fee should be one of ${DCL_POOL_FEE_LIST}`\n );\n\nexport const DCLInValid = formatError(\n `DCL contract currently in Valid on ${config.networkId}`\n);\n\nexport const NoPoolOnThisPair = (tokenA: string, tokenB: string) =>\n formatError(`No pools on pair ${tokenA} <> ${tokenB}`);\n\nexport const SlippageError = formatError(\n 'slippage tolerance should be in range (0, 100)'\n);\n\nexport const NoOrderFound = (order_id?: string) =>\n formatError(`No order ${order_id || ''} found`);\n\nexport const OrderNoRemainedAmount = formatError(\n 'No remained amount on this order'\n);\n","import { TokenMetadata, EstimateSwapView, Transaction } from '../types';\nimport { ftGetStorageBalance } from '../ref';\nimport {\n STORAGE_TO_REGISTER_WITH_MFT,\n REF_FI_CONTRACT_ID,\n ONE_YOCTO_NEAR,\n} from '../constant';\nimport { round, percentLess } from '../utils';\nimport { toNonDivisibleNumber } from '../utils';\nimport { config } from '../constant';\nimport { SwapRouteError } from '../error';\n\nexport const instantSwap = async ({\n tokenIn,\n tokenOut,\n amountIn,\n slippageTolerance,\n swapTodos,\n AccountId,\n}: {\n tokenIn: TokenMetadata;\n tokenOut: TokenMetadata;\n amountIn: string;\n slippageTolerance: number;\n swapTodos: EstimateSwapView[];\n AccountId: string;\n}) => {\n const transactions: Transaction[] = [];\n\n if (swapTodos?.[swapTodos?.length - 1]?.outputToken !== tokenOut.id)\n throw SwapRouteError;\n\n const registerToken = async (token: TokenMetadata) => {\n const tokenRegistered = await ftGetStorageBalance(\n token.id,\n AccountId\n ).catch(() => {\n throw new Error(`${token.id} doesn't exist.`);\n });\n\n if (tokenRegistered === null) {\n transactions.push({\n receiverId: token.id,\n functionCalls: [\n {\n methodName: 'storage_deposit',\n args: {\n registration_only: true,\n account_id: AccountId,\n },\n gas: '30000000000000',\n amount: STORAGE_TO_REGISTER_WITH_MFT,\n },\n ],\n });\n }\n };\n\n if (tokenIn.id === config.WRAP_NEAR_CONTRACT_ID) {\n const registered = await ftGetStorageBalance(\n config.WRAP_NEAR_CONTRACT_ID,\n AccountId\n );\n if (registered === null) {\n await registerToken(tokenIn);\n }\n }\n\n await registerToken(tokenOut);\n let actionsList: any = [];\n let allSwapsTokens = swapTodos.map(s => [s.inputToken, s.outputToken]); // to get the hop tokens\n for (let i in allSwapsTokens) {\n let swapTokens = allSwapsTokens[i];\n if (swapTokens[0] === tokenIn.id && swapTokens[1] === tokenOut.id) {\n // parallel, direct hop route.\n actionsList.push({\n pool_id: swapTodos[i].pool.id,\n token_in: tokenIn.id,\n token_out: tokenOut.id,\n amount_in: swapTodos[i].pool.partialAmountIn,\n min_amount_out: round(\n tokenOut.decimals,\n toNonDivisibleNumber(\n tokenOut.decimals,\n percentLess(slippageTolerance, swapTodos[i].estimate)\n )\n ),\n });\n } else if (swapTokens[0] === tokenIn.id) {\n // first hop in double hop route\n //TODO -- put in a check to make sure this first hop matches with the next (i+1) hop as a second hop.\n actionsList.push({\n pool_id: swapTodos[i].pool.id,\n token_in: swapTokens[0],\n token_out: swapTokens[1],\n amount_in: swapTodos[i].pool.partialAmountIn,\n min_amount_out: '0',\n });\n } else {\n // second hop in double hop route.\n //TODO -- put in a check to make sure this second hop matches with the previous (i-1) hop as a first hop.\n actionsList.push({\n pool_id: swapTodos[i].pool.id,\n token_in: swapTokens[0],\n token_out: swapTokens[1],\n min_amount_out: round(\n tokenOut.decimals,\n toNonDivisibleNumber(\n tokenOut.decimals,\n percentLess(slippageTolerance, swapTodos[i].estimate)\n )\n ),\n });\n }\n }\n\n transactions.push({\n receiverId: tokenIn.id,\n functionCalls: [\n {\n methodName: 'ft_transfer_call',\n args: {\n receiver_id: REF_FI_CONTRACT_ID,\n amount: toNonDivisibleNumber(tokenIn.decimals, amountIn),\n msg: JSON.stringify({\n force: 0,\n actions: actionsList,\n }),\n },\n gas: '180000000000000',\n amount: ONE_YOCTO_NEAR,\n },\n ],\n });\n\n return transactions;\n};\n","import { getTotalPools, refFiViewFunction } from '../ref';\nimport { Pool, PoolRPCView } from '../types';\nimport { parsePool, toNonDivisibleNumber } from '../utils';\nimport { STABLE_LP_TOKEN_DECIMALS } from '../constant';\n\nlet DEFAULT_PAGE_LIMIT = 100;\n\nexport const getRatedPoolDetail = async ({ id }: { id: string | number }) => {\n return refFiViewFunction({\n methodName: 'get_rated_pool',\n args: { pool_id: Number(id) },\n }).then(pool_info => ({\n ...pool_info,\n id: Number(id),\n pool_kind: 'RATED_SWAP',\n }));\n};\n\nexport const getUnRatedPoolDetail = async ({ id }: { id: string | number }) => {\n return refFiViewFunction({\n methodName: 'get_stable_pool',\n args: { pool_id: Number(id) },\n }).then(pool_info => ({\n ...pool_info,\n id: Number(id),\n pool_kind: 'STABLE_SWAP',\n rates: pool_info.c_amounts.map((_: any) =>\n toNonDivisibleNumber(STABLE_LP_TOKEN_DECIMALS, '1')\n ),\n }));\n};\n\nexport const getStablePools = async (stablePools: Pool[]) => {\n return Promise.all(\n stablePools.map(pool =>\n pool.pool_kind === 'RATED_SWAP'\n ? getRatedPoolDetail({ id: pool.id })\n : getUnRatedPoolDetail({ id: pool.id })\n )\n );\n};\n\nexport const getPool = async (id: number): Promise<Pool> => {\n return await refFiViewFunction({\n methodName: 'get_pool',\n args: { pool_id: id },\n }).then((pool: PoolRPCView) => parsePool(pool, id));\n};\n\nexport const getRefPools = async (\n page: number = 1,\n perPage: number = DEFAULT_PAGE_LIMIT\n): Promise<Pool[]> => {\n const index = (page - 1) * perPage;\n const poolData: PoolRPCView[] = await refFiViewFunction({\n methodName: 'get_pools',\n args: { from_index: index, limit: perPage },\n });\n\n return poolData.map((rawPool, i) => parsePool(rawPool, i + index));\n};\n\nexport const fetchAllPools = async (perPage?: number) => {\n if (perPage) {\n DEFAULT_PAGE_LIMIT = Math.min(perPage, 500);\n }\n const totalPools = await getTotalPools();\n const pages = Math.ceil(totalPools / DEFAULT_PAGE_LIMIT);\n\n const pools = (\n await Promise.all(\n [...Array(pages)].fill(0).map((_, i) => getRefPools(i + 1))\n )\n ).flat() as Pool[];\n\n return {\n simplePools: pools.filter(\n p => p.pool_kind && p.pool_kind === 'SIMPLE_POOL'\n ),\n unRatedPools: pools.filter(\n p => p.pool_kind && p.pool_kind === 'STABLE_SWAP'\n ),\n ratedPools: pools.filter(p => p.pool_kind && p.pool_kind === 'RATED_SWAP'),\n };\n};\n","import React, {\n useEffect,\n useState,\n useContext,\n createContext,\n ReactNode,\n} from 'react';\nimport {\n ftGetBalance,\n ftGetTokenMetadata,\n getGlobalWhitelist,\n nearDepositTransaction,\n nearWithdrawTransaction,\n REPLACE_TOKENS,\n} from '../ref';\nimport {\n EstimateSwapView,\n Pool,\n StablePool,\n TokenMetadata,\n Transaction,\n} from '../types';\nimport { fetchAllPools, getStablePools } from '../v1-swap/pool';\nimport { estimateSwap, SwapOptions, SwapParams } from '../v1-swap/swap';\nimport { SwapOutParams } from './types';\nimport {\n percentLess,\n separateRoutes,\n toNonDivisibleNumber,\n calculateExchangeRate,\n getAvgFee,\n} from '../utils';\nimport Big from 'big.js';\nimport { instantSwap } from '../v1-swap/instantSwap';\n\nimport { getExpectedOutputFromActionsORIG } from '../v1-swap/smartRoutingLogic.js';\nimport { Theme } from './constant';\nimport { defaultTheme } from './constant';\nimport {\n getTokenPriceList,\n getTokens,\n getWhiteListTokensIndexer,\n} from '../indexer';\nimport {\n toReadableNumber,\n ONLY_ZEROS,\n getExpectedOutputFromSwapTodos,\n} from '../utils';\nimport { getUserRegisteredTokens } from '../ref';\nimport { WRAP_NEAR_CONTRACT_ID, NEAR_META_DATA } from '../constant';\nimport { scientificNotationToString } from '../utils';\nimport metaIconDefaults from '../metaIcons';\n\nexport const ThemeContext = createContext<Theme>(defaultTheme);\n\nexport const ThemeContextProvider: React.FC<{\n customTheme: Theme | undefined;\n}> = ({ customTheme, children }) => {\n const [theme, setTheme] = useState<Theme>(customTheme || defaultTheme);\n\n useEffect(() => {\n if (!customTheme) return;\n setTheme(customTheme);\n }, [customTheme]);\n\n return (\n <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider>\n );\n};\n\nexport const estimateValidator = (\n swapTodos: EstimateSwapView[],\n tokenIn: TokenMetadata,\n parsedAmountIn: string,\n tokenOut: TokenMetadata\n) => {\n const tokenInId = swapTodos[0]?.inputToken;\n const tokenOutId = swapTodos[swapTodos.length - 1]?.outputToken;\n\n const totalPartialAmountIn =\n swapTodos.length === 0\n ? new Big(swapTodos[0].pool.partialAmountIn || 0)\n : swapTodos.reduce(\n (acc, cur, i) => acc.plus(cur.pool.partialAmountIn || 0),\n new Big(0)\n );\n\n if (\n tokenInId !== tokenIn.id ||\n tokenOutId !== tokenOut.id ||\n !totalPartialAmountIn.eq(parsedAmountIn || '0')\n ) {\n return false;\n }\n return true;\n};\n\nexport const useAllTokens = ({ reload }: { reload?: boolean }) => {\n const [tokens, setTokens] = useState<Record<string, TokenMetadata>>();\n const [tokensLoading, setTokensLoading] = useState<boolean>(true);\n\n useEffect(() => {\n const fetchTokens = async () => {\n const tokens = await getTokens(reload);\n setTokens(tokens);\n setTokensLoading(false);\n };\n fetchTokens();\n }, [reload]);\n\n return { tokens, tokensLoading };\n};\n\nexport const useTokensIndexer = ({\n defaultTokenList,\n AccountId,\n}: {\n defaultTokenList?: TokenMetadata[];\n AccountId?: string;\n}) => {\n const [tokens, setTokens] = useState<TokenMetadata[]>([]);\n\n const [tokenLoading, setTokenLoading] = useState<boolean>(false);\n\n useEffect(() => {\n setTokenLoading(true);\n\n const getTokensList = async () => {\n const whiteList = await getGlobalWhitelist();\n const globalWhiteListTokens = (\n await getWhiteListTokensIndexer(whiteList)\n ).filter(token => !!token) as TokenMetadata[];\n\n const parsedTokens = globalWhiteListTokens.map(t => {\n return t.id === WRAP_NEAR_CONTRACT_ID\n ? {\n ...NEAR_META_DATA,\n id: t.id,\n }\n : t;\n });\n\n if (!defaultTokenList || defaultTokenList.length === 0) {\n setTokens(parsedTokens);\n setTokenLoading(false);\n } else {\n const newList = defaultTokenList\n .map(t => {\n return t.id === WRAP_NEAR_CONTRACT_ID\n ? {\n ...NEAR_META_DATA,\n id: t.id,\n }\n : t;\n })\n .filter(t => {\n return parsedTokens.findIndex(p => p.id === t.id) !== -1;\n });\n setTokens(\n newList.map(t =>\n !t.icon || REPLACE_TOKENS.includes(t.id)\n ? {\n ...t,\n icon: metaIconDefaults[t.id],\n }\n : t\n )\n );\n setTokenLoading(false);\n }\n };\n\n getTokensList();\n }, [AccountId, defaultTokenList]);\n\n return { tokens, tokenLoading };\n};\n\nexport const useRefPools = (refreshTrigger: boolean) => {\n const [allPools, setAllPools] = useState<{\n simplePools: Pool[];\n ratedPools: Pool[];\n unRatedPools: Pool[];\n }>({\n simplePools: [],\n ratedPools: [],\n unRatedPools: [],\n });\n\n const [poolFetchingState, setPoolFetchingState] = useState<'loading' | 'end'>(\n 'loading'\n );\n\n const [allStablePools, setAllStablePools] = useState<StablePool[]>([]);\n\n useEffect(() => {\n setPoolFetchingState('loading');\n\n fetchAllPools()\n .then(allPools => {\n setAllPools(allPools);\n\n return allPools;\n })\n .then(allPools => {\n const pools: Pool[] = allPools.unRatedPools.concat(allPools.ratedPools);\n\n return getStablePools(pools).then(setAllStablePools);\n })\n .finally(() => {\n setPoolFetchingState('end');\n });\n }, [refreshTrigger]);\n\n return {\n allPools,\n allStablePools,\n poolFetchingState,\n };\n};\n\nexport const useSwap = (\n params: {\n tokenIn?: TokenMetadata;\n tokenOut?: TokenMetadata;\n amountIn: string;\n simplePools: Pool[];\n options?: SwapOptions;\n } & {\n slippageTolerance: number;\n refreshTrigger: boolean;\n onSwap: (transactionsRef: Transaction[]) => void;\n AccountId?: string;\n poolFetchingState?: 'loading' | 'end';\n }\n): SwapOutParams => {\n const {\n slippageTolerance,\n refreshTrigger,\n onSwap,\n AccountId,\n poolFetchingState,\n ...swapParams\n } = params;\n\n const { tokenIn, tokenOut, amountIn } = params;\n\n const [estimates, setEstimates] = useState<EstimateSwapView[]>([]);\n\n const [canSwap, setCanSwap] = useState(false);\n\n const [swapError, setSwapError] = useState<Error | null>(null);\n\n const [amountOut, setAmountOut] = useState<string>('');\n\n const [isEstimating, setIsEstimating] = useState<boolean>(false);\n\n const [forceEstimate, setForceEstimate] = useState<boolean>(false);\n\n const minAmountOut = amountOut\n ? percentLess(slippageTolerance, amountOut)\n : '';\n\n const fee =\n !params.tokenOut || !params.tokenIn\n ? 0\n : getAvgFee(\n estimates,\n params.tokenOut.id,\n toNonDivisibleNumber(params.tokenIn.decimals, params.amountIn)\n );\n\n const rate = calculateExchangeRate(\n ONLY_ZEROS.test(params.amountIn) ? '1' : params.amountIn,\n amountOut || '1'\n );\n\n const makeSwap = async () => {\n if (!params.tokenIn || !params.tokenOut) return;\n\n const transactionsRef = await instantSwap({\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountIn: params.amountIn,\n swapTodos: estimates,\n slippageTolerance,\n AccountId: AccountId || '',\n });\n if (tokenIn && tokenIn.id === WRAP_NEAR_CONTRACT_ID) {\n transactionsRef.splice(-1, 0, nearDepositTransaction(amountIn));\n }\n if (tokenOut && tokenOut.id === WRAP_NEAR_CONTRACT_ID) {\n let outEstimate = new Big(0);\n const routes = separateRoutes(estimates, tokenOut.id);\n\n const bigEstimate = routes.reduce((acc, cur) => {\n const curEstimate = cur[cur.length - 1].estimate;\n return acc.plus(curEstimate);\n }, outEstimate);\n\n const minAmountOut = percentLess(\n slippageTolerance,\n\n scientificNotationToString(bigEstimate.toString())\n );\n\n transactionsRef.push(nearWithdrawTransaction(minAmountOut));\n }\n\n onSwap(transactionsRef);\n };\n\n const getEstimate = () => {\n if (\n !params.tokenIn ||\n !params.tokenOut ||\n poolFetchingState === 'loading'\n ) {\n setCanSwap(false);\n return;\n }\n setCanSwap(false);\n\n if (\n ONLY_ZEROS.test(params.amountIn) ||\n !params.tokenOut ||\n !params.tokenIn\n ) {\n setAmountOut('');\n setEstimates([]);\n return;\n }\n\n setSwapError(null);\n setIsEstimating(true);\n estimateSwap({\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountIn: params.amountIn,\n simplePools: params.simplePools,\n options: params.options,\n })\n .then(estimates => {\n if (\n ONLY_ZEROS.test(params.amountIn) ||\n !params.tokenOut ||\n !params.tokenIn\n ) {\n setAmountOut('');\n return;\n }\n setSwapError(null);\n\n const expectAmountOut = getExpectedOutputFromSwapTodos(\n estimates,\n params.tokenOut.id\n ).toString();\n\n setAmountOut(expectAmountOut);\n\n setEstimates(estimates);\n setCanSwap(true);\n })\n .catch(e => {\n setSwapError(e);\n setCanSwap(false);\n setAmountOut('');\n })\n .finally(() => {\n setIsEstimating(false);\n setForceEstimate(false);\n });\n };\n\n useEffect(() => {\n const estimateValidationPass =\n estimates.length > 0 &&\n params.tokenIn &&\n params.tokenOut &&\n estimateValidator(\n estimates,\n params.tokenIn,\n toNonDivisibleNumber(params.tokenIn.decimals, params.amountIn),\n params.tokenOut\n );\n\n if (isEstimating && estimates && !forceEstimate) return;\n if ((estimateValidationPass || swapError) && !forceEstimate) return;\n getEstimate();\n }, [\n params.amountIn,\n params.tokenIn?.id,\n params.tokenOut?.id,\n refreshTrigger,\n poolFetchingState,\n isEstimating,\n forceEstimate,\n ]);\n\n useEffect(() => {\n // setEstimating(false);\n\n setForceEstimate(true);\n }, [\n params.tokenIn?.id,\n params.tokenOut?.id,\n params.options?.enableSmartRouting,\n ]);\n\n return {\n amountOut,\n minAmountOut,\n fee,\n rate,\n estimates,\n makeSwap,\n canSwap,\n swapError,\n setAmountOut,\n isEstimating,\n };\n};\n\nexport const TokenPriceContext = createContext<Record<string, any> | null>(\n null\n);\n\nexport const useTokenPriceList = () => {\n const [tokenPriceList, setTokenPriceList] = useState<Record<string, any>>({});\n\n useEffect(() => {\n getTokenPriceList().then(setTokenPriceList);\n }, []);\n\n return tokenPriceList;\n};\n\nexport const TokenPriceContextProvider: React.FC = ({ children }) => {\n const tokenPriceList = useTokenPriceList();\n\n return (\n <TokenPriceContext.Provider value={tokenPriceList}>\n {children}\n </TokenPriceContext.Provider>\n );\n};\n\nexport const useTokenBalnces = (tokens: TokenMetadata[], AccountId: string) => {\n const [balances, setBalances] = useState<Record<string, string>>({});\n\n useEffect(() => {\n const validTokens = tokens.filter(t => !!t?.id);\n\n const ids = validTokens.map(token => token.id);\n\n Promise.all(\n ids.map(id =>\n ftGetBalance(id === WRAP_NEAR_CONTRACT_ID ? 'NEAR' : id, AccountId)\n )\n ).then(balances => {\n const balancesMap = validTokens.reduce((acc, token, index) => {\n return {\n ...acc,\n [token.id]: toReadableNumber(token.decimals, balances[index]),\n };\n }, {});\n\n setBalances(balancesMap);\n });\n }, [tokens.map(t => t?.id).join('-')]);\n\n return balances;\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useState, useEffect, useContext, useRef, useMemo } from 'react';\nimport { TokenMetadata, EstimateSwapView, Pool } from '../types';\nimport {\n ThemeContext,\n useTokenPriceList,\n TokenPriceContext,\n useTokenBalnces,\n} from './state';\n\nimport { FiChevronDown } from '@react-icons/all-files/fi/FiChevronDown';\n\nimport { FiChevronLeft } from '@react-icons/all-files/fi/FiChevronLeft';\n\nimport { FiChevronUp } from '@react-icons/all-files/fi/FiChevronUp';\n\nimport { FaSearch } from '@react-icons/all-files/fa/FaSearch';\n\nimport { RiRefreshLine } from '@react-icons/all-files/ri/RiRefreshLine';\n\nimport { TiArrowSortedUp } from '@react-icons/all-files/ti/TiArrowSortedUp';\n\nimport { TiArrowSortedDown } from '@react-icons/all-files/ti/TiArrowSortedDown';\n\nimport { HiOutlineExternalLink } from '@react-icons/all-files/hi/HiOutlineExternalLink';\n\nimport { AiFillPushpin } from '@react-icons/all-files/ai/AiFillPushpin';\n\nimport { AiOutlinePushpin } from '@react-icons/all-files/ai/AiOutlinePushpin';\n\nimport { RiExchangeFill } from '@react-icons/all-files/ri/RiExchangeFill';\n\nimport { IoWarning } from '@react-icons/all-files/io5/IoWarning';\n\nimport { IoCloseOutline } from '@react-icons/all-files/io5/IoCloseOutline';\n\nimport { AiOutlineClose } from '@react-icons/all-files/ai/AiOutlineClose';\n\nimport './style.css';\nimport {\n getAccountName,\n symbolsArr,\n multiply,\n percentOfBigNumber,\n ONLY_ZEROS,\n toRealSymbol,\n toPrecision,\n toInternationalCurrencySystemLongString,\n calculateFeeCharge,\n calculateFeePercent,\n} from '../utils';\nimport { REF_WIDGET_STAR_TOKEN_LIST_KEY } from './constant';\nimport Big from 'big.js';\nimport {\n config,\n FEE_DIVISOR,\n getConfig,\n NEAR_META_DATA,\n TokenLinks,\n WRAP_NEAR_CONTRACT_ID,\n} from '../constant';\nimport {\n scientificNotationToString,\n percent,\n getPoolAllocationPercents,\n} from '../utils';\nimport {\n REF_WIDGET_SWAP_DETAIL_KEY,\n DEFAULT_START_TOKEN_LIST_TESTNET,\n DEFAULT_START_TOKEN_LIST_MAINNET,\n} from './constant';\nimport { PoolMode } from '../v1-swap/swap';\nimport { isMobile, separateRoutes, divide, getMax } from '../utils';\n\ninterface TokenAmountProps {\n balance?: string;\n reloading?: JSX.Element;\n token?: TokenMetadata;\n onSelectToken: () => void;\n amount: string;\n onChangeAmount?: (amount: string) => void;\n price?: string;\n onForceUpdate?: () => void;\n poolFetchingState?: 'loading' | 'end';\n}\n\nexport const getPriceImpact = (\n value: string,\n tokenIn: TokenMetadata,\n tokenInAmount: string\n) => {\n const textColor =\n Number(value) <= 1\n ? 'text-greenLight'\n : 1 < Number(value) && Number(value) <= 2\n ? 'text-warn'\n : 'text-error';\n\n const displayValue = scientificNotationToString(\n multiply(tokenInAmount || '0', divide(value, '100'))\n );\n\n const tokenInInfo =\n Number(displayValue) <= 0\n ? ` / 0 ${toRealSymbol(tokenIn.symbol)}`\n : ` / -${toInternationalCurrencySystemLongString(\n displayValue,\n 3\n )} ${toRealSymbol(tokenIn.symbol)}`;\n\n if (Number(value) < 0.01)\n return (\n <span className=\"text-greenLight\">\n {`< -0.01%`}\n {tokenInInfo}\n </span>\n );\n\n if (Number(value) > 1000)\n return (\n <span className=\"text-error\">\n {`< -1000%`}\n {tokenInInfo}\n </span>\n );\n\n return (\n <span className={`${textColor} font-sans`}>\n {`≈ -${toPrecision(value, 2)}%`}\n {tokenInInfo}\n </span>\n );\n};\n\nexport const SmartRouteV2 = ({\n tokens: tokensRaw,\n p,\n pools,\n}: {\n tokens: TokenMetadata[];\n p: string;\n pools: Pool[];\n}) => {\n const theme = useContext(ThemeContext);\n\n const tokens = tokensRaw.map(t =>\n t.id === WRAP_NEAR_CONTRACT_ID\n ? { ...NEAR_META_DATA, id: WRAP_NEAR_CONTRACT_ID }\n : t\n );\n\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n const ParaTokenFrom = ({\n tokenIn,\n p,\n }: {\n tokenIn: TokenMetadata;\n p: string;\n }) => {\n return (\n <div\n className=\"__ref-swap-widget-row-flex-center \"\n style={{\n width: '60px',\n }}\n >\n <span\n style={{\n marginRight: '4px',\n }}\n >\n {p}%\n </span>\n <span className=\"\">\n <Icon token={tokenIn} />\n </span>\n </div>\n );\n };\n const Icon = ({ token }: { token: TokenMetadata }) => {\n if (token.icon) {\n return (\n <img\n src={token.icon}\n alt=\"\"\n style={{\n borderRadius: '100%',\n height: '16px',\n width: '16px',\n flexShrink: 0,\n }}\n />\n );\n } else {\n return (\n <div\n style={{\n borderRadius: '100%',\n height: '16px',\n width: '16px',\n }}\n />\n );\n }\n };\n const Hub = ({ token, poolId }: { token: TokenMetadata; poolId: number }) => {\n return (\n <div\n className={`__ref-swap-widget-row-flex-center`}\n style={{\n width: '62px',\n height: '22px',\n }}\n >\n <div\n className={`w-full flex items-center justify-start pl-2 `}\n style={{\n marginRight: '4px',\n }}\n >\n <span className=\"text-gray-400\">{`#${poolId}`}</span>\n </div>\n <Icon token={token} />\n </div>\n );\n };\n\n if (tokens.length === 3) {\n return (\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap_route_row\">\n {/* <Hub token={tokens[0]} /> */}\n\n <ParaTokenFrom tokenIn={tokens[0]} p={p} />\n <div\n className=\"\"\n style={{\n position: 'relative',\n bottom: '1px',\n }}\n >\n <ArrowRight />\n </div>\n\n <Hub token={tokens[1]} poolId={pools?.[0]?.id} />\n <div\n className=\"px-3\"\n style={{\n position: 'relative',\n bottom: '1px',\n }}\n >\n <ArrowRight />\n </div>\n\n <Hub token={tokens[2]} poolId={pools?.[1]?.id} />\n </div>\n );\n } else if (tokens.length === 2) {\n return (\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap_route_row\">\n <ParaTokenFrom tokenIn={tokens[0]} p={p} />\n <div className=\"px-3\">\n <ArrowRight />\n </div>\n <Hub token={tokens[1]} poolId={pools?.[0]?.id} />\n </div>\n );\n } else {\n return null;\n }\n};\n\nexport const DetailView = ({\n tokenIn,\n tokenOut,\n rate,\n fee,\n minReceived,\n amountIn,\n amountOut,\n priceImpact,\n estimates,\n}: {\n tokenIn: TokenMetadata | undefined;\n tokenOut: TokenMetadata | undefined;\n rate: string;\n fee: number;\n minReceived: string;\n amountIn: string;\n amountOut: string;\n priceImpact: string;\n estimates: EstimateSwapView[];\n}) => {\n const theme = useContext(ThemeContext);\n\n const storagedOpen = !!localStorage.getItem(REF_WIDGET_SWAP_DETAIL_KEY);\n\n const [showDetail, setShowDetail] = useState(storagedOpen || false);\n const [isRateReverse, setIsRateReverse] = useState(false);\n\n const tokensPerRoute = estimates\n .filter(swap => swap.inputToken === tokenIn?.id)\n .map(swap => swap.tokens);\n\n const identicalRoutes = separateRoutes(\n estimates,\n estimates[estimates.length - 1]?.outputToken || ''\n );\n\n const pools = identicalRoutes.map(r => r[0]).map(hub => hub.pool);\n const percents = useMemo(() => {\n if (!pools || pools.length === 0) return [];\n return getPoolAllocationPercents(pools);\n }, [pools]);\n\n const priceImpactDisplay = useMemo(() => {\n if (!priceImpact || !tokenIn || !amountIn) return null;\n return getPriceImpact(priceImpact, tokenIn, amountIn);\n }, [priceImpact, tokenIn, amountIn]);\n if (!tokenIn || !tokenOut) return null;\n\n const displayRate = `1 ${toRealSymbol(tokenIn.symbol)} ≈ ${\n Number(rate) < 0.01 ? '< 0.01' : toPrecision(rate, 2)\n } ${toRealSymbol(tokenOut.symbol)}`;\n\n const revertRate = new Big(1).div(ONLY_ZEROS.test(rate) ? '1' : rate || '1');\n\n const revertDisplayRate = `1 ${toRealSymbol(tokenOut.symbol)} ≈ ${\n Number(revertRate) < 0.01 ? '< 0.01' : toPrecision(revertRate.toString(), 2)\n } ${toRealSymbol(tokenIn.symbol)}`;\n\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n return (\n <div\n className=\"__ref-widget-swap-detail-view __ref-swap-widget-col-flex-start\"\n style={{\n color: secondary,\n }}\n >\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap-detail-view-item\">\n <div\n style={{\n color: primary,\n cursor: 'pointer',\n }}\n className=\"__ref-swap-widget-row-flex-center\"\n onClick={() => {\n if (showDetail) localStorage.removeItem(REF_WIDGET_SWAP_DETAIL_KEY);\n else {\n localStorage.setItem(REF_WIDGET_SWAP_DETAIL_KEY, '1');\n }\n setShowDetail(!showDetail);\n }}\n >\n <div>Detail</div>\n <div\n style={{\n position: 'relative',\n }}\n >\n {!showDetail ? <FiChevronDown /> : <FiChevronUp />}\n </div>\n </div>\n\n {amountIn && amountOut && (\n <div className=\"__ref-swap-widget-row-flex-center\">\n <div>{isRateReverse ? revertDisplayRate : displayRate}</div>\n\n <RiExchangeFill\n onClick={() => {\n setIsRateReverse(!isRateReverse);\n }}\n size={16}\n style={{\n marginLeft: '4px',\n cursor: 'pointer',\n }}\n fill={iconDefault}\n />\n </div>\n )}\n </div>\n {!showDetail ? null : (\n <>\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap-detail-view-item\">\n <div>Minimum received</div>\n <div>{toPrecision(minReceived || '0', 8)}</div>\n </div>\n\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap-detail-view-item\">\n <div>Fee</div>\n\n <div>\n {!amountIn\n ? '0'\n : `${calculateFeeCharge(fee, amountIn)} ${toRealSymbol(\n tokenIn.symbol\n )}(${toPrecision(calculateFeePercent(fee).toString(), 2)}%)`}\n </div>\n </div>\n </>\n )}\n\n {!showDetail ? null : (\n <>\n <div className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-swap-detail-view-item\">\n <div>Price impact</div>\n\n <div>{priceImpactDisplay}</div>\n </div>\n </>\n )}\n\n {estimates && estimates.length > 1 && showDetail && (\n <div\n className=\"__ref-swap-widget-swap_routes __ref-swap-widget-row-flex-center\"\n style={{\n border: `1px solid ${borderColor}`,\n flexDirection: isMobile() ? 'column' : 'row',\n position: 'relative',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n }}\n >\n <div className=\"__ref-swap-widget-row-flex-center\">\n <RouterIcon />\n <span\n className=\"__ref-swap-widget-valueStyle\"\n style={{\n marginLeft: '4px',\n whiteSpace: 'nowrap',\n }}\n >\n {'Auto Router'}\n </span>\n </div>\n\n <div\n className=\"\"\n style={{\n width: isMobile() ? '100%' : 'auto',\n minWidth: !isMobile() ? '70%' : '',\n }}\n >\n {tokensPerRoute.every(r => !!r) &&\n tokensPerRoute.map((tokens, index) => {\n if (!tokens) return null;\n return (\n <SmartRouteV2\n key={index + '-swap-route'}\n tokens={tokens}\n p={percents[index]}\n pools={identicalRoutes[index].map(hub => hub.pool)}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport const HalfAndMaxAmount = ({\n max,\n onChangeAmount,\n token,\n amount,\n}: {\n max: string;\n token: TokenMetadata;\n onChangeAmount: (amount: string) => void;\n amount: string;\n}) => {\n const halfValue = percentOfBigNumber(50, max, token.decimals);\n\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n } = theme;\n\n const [hoverHalf, setHoverHalf] = useState<boolean>(false);\n const [hoverMax, setHoverMax] = useState<boolean>(false);\n\n return (\n <div className=\"__ref-swap-widget-token-amount_quick_selector __ref-swap-widget-row-flex-center\">\n <span\n className=\"__ref-swap-widget-token-amount_quick_selector_item \"\n style={{\n color: secondary,\n borderRadius,\n border: `1px solid ${borderColor}`,\n marginRight: '4px',\n\n background:\n amount === halfValue && !ONLY_ZEROS.test(halfValue)\n ? active\n : hoverHalf\n ? hover\n : 'transparent',\n }}\n onMouseEnter={() => setHoverHalf(true)}\n onMouseLeave={() => setHoverHalf(false)}\n onClick={() => {\n const half = percentOfBigNumber(50, max, token.decimals);\n\n onChangeAmount(half);\n }}\n >\n Half\n </span>\n\n <span\n className=\"__ref-swap-widget-token-amount_quick_selector_item\"\n onClick={() => {\n onChangeAmount(max);\n }}\n onMouseEnter={() => setHoverMax(true)}\n onMouseLeave={() => setHoverMax(false)}\n style={{\n color: secondary,\n borderRadius,\n border: `1px solid ${borderColor}`,\n background:\n amount === max && !ONLY_ZEROS.test(max)\n ? active\n : hoverMax\n ? hover\n : 'transparent',\n }}\n >\n Max\n </span>\n </div>\n );\n};\n\nexport const TokenAmount = (props: TokenAmountProps) => {\n const {\n balance,\n reloading,\n token,\n onSelectToken,\n amount,\n onChangeAmount,\n price,\n onForceUpdate,\n poolFetchingState,\n } = props;\n\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n } = theme;\n\n const ref = useRef<HTMLInputElement>(null);\n\n const [hoverSelect, setHoverSelect] = useState<boolean>(false);\n\n const handleChange = (amount: string) => {\n if (onChangeAmount) {\n onChangeAmount(amount);\n }\n if (ref.current) {\n ref.current.value = amount;\n }\n };\n\n useEffect(() => {\n if (\n ref.current &&\n onChangeAmount &&\n token &&\n balance &&\n token.id === WRAP_NEAR_CONTRACT_ID &&\n Number(balance) - Number(ref.current.value) < 0.5\n ) {\n ref.current.setCustomValidity(\n 'Must have 0.5N or more left in wallet for gas fee.'\n );\n } else {\n ref.current?.setCustomValidity('');\n }\n }, [ref, balance, ref.current, ref.current?.value, token, amount]);\n\n const curMax = token ? getMax(token.id, balance || '0') : '0';\n\n return (\n <>\n <div\n className=\"__ref-swap-widger-token-amount \"\n style={{\n background: secondaryBg,\n flexDirection: isMobile() ? 'column' : 'row',\n }}\n >\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n width: isMobile() ? 'auto' : '40%',\n }}\n >\n <div\n className=\"__ref-swap-widget-row-flex-center __ref-swap-widget-token-amount_token-select-button\"\n style={{\n color: primary,\n background: hoverSelect ? hover : 'transparent',\n border: `1px solide ${hoverSelect ? borderColor : 'transparent'}`,\n }}\n onClick={onSelectToken}\n onMouseEnter={() => setHoverSelect(true)}\n onMouseLeave={() => setHoverSelect(false)}\n >\n {!token ? (\n <>\n <span\n style={{\n whiteSpace: 'nowrap',\n height: '26px',\n }}\n className=\"__ref-swap-widget-row-flex-center\"\n >\n Select Token\n </span>\n </>\n ) : (\n <>\n <img\n src={token?.icon}\n alt=\"\"\n className=\"__ref-swap-widget_token_icon\"\n style={{\n height: '26px',\n width: '26px',\n marginRight: '8px',\n }}\n />\n <span>{toRealSymbol(token?.symbol)}</span>\n </>\n )}\n <FiChevronDown\n style={{\n marginLeft: '4px',\n flexShrink: 0,\n }}\n />\n </div>\n\n {onForceUpdate && (\n <RiRefreshLine\n className={`${\n poolFetchingState === 'loading'\n ? '__ref-swap-widget-loading '\n : ''\n }`}\n style={{\n cursor: 'pointer',\n color: secondary,\n }}\n size={18}\n onClick={() => {\n onForceUpdate();\n }}\n />\n )}\n </div>\n\n <div\n className=\" __ref-swap-widget-token-amount_input\"\n style={{\n width: isMobile() ? '100%' : '60%',\n }}\n >\n <input\n ref={ref}\n max={!!onChangeAmount ? curMax : undefined}\n min=\"0\"\n onWheel={() => {\n if (ref.current) {\n ref.current.blur();\n }\n }}\n className=\"__ref-swap-widget-input-class\"\n step=\"any\"\n value={amount}\n type=\"number\"\n placeholder={!onChangeAmount ? '-' : '0.0'}\n onChange={({ target }) => {\n target.setCustomValidity('');\n handleChange(target.value);\n }}\n disabled={!onChangeAmount}\n onKeyDown={e => symbolsArr.includes(e.key) && e.preventDefault()}\n style={{\n color: primary,\n marginBottom: '8px',\n width: '100%',\n textAlign: 'right',\n fontSize: '20px',\n }}\n />\n\n <div\n style={{\n fontSize: '12px',\n color: secondary,\n textAlign: 'right',\n }}\n >\n {!price\n ? '$-'\n : '~$' +\n toInternationalCurrencySystemLongString(\n multiply(price, amount || '0'),\n 2\n )}\n </div>\n </div>\n </div>\n\n {!balance || !token || !onChangeAmount ? null : (\n <div\n className=\"__ref-swap-widger-token-amount_balance __ref-swap-widget-row-flex-center\"\n style={{\n fontSize: '12px',\n color: secondary,\n }}\n >\n <span>\n Balance:&nbsp;\n {toPrecision(balance, 2)}\n </span>\n {token && (\n <HalfAndMaxAmount\n token={token}\n max={getMax(token.id, balance)}\n onChangeAmount={handleChange}\n amount={amount}\n />\n )}\n </div>\n )}\n </>\n );\n};\n\nexport const SlippageSelector = ({\n slippageTolerance,\n onChangeSlippageTolerance,\n showSlip,\n setShowSlip,\n}: {\n slippageTolerance: number;\n onChangeSlippageTolerance: (slippageTolerance: number) => void;\n showSlip: boolean;\n setShowSlip: (showSlip: boolean) => void;\n}) => {\n const [invalid, setInValid] = useState<boolean>(false);\n\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n } = theme;\n\n const ref = useRef<HTMLInputElement>(null);\n\n const handleChange = (amount: string) => {\n onChangeSlippageTolerance(Number(amount));\n\n if (Number(amount) > 0 && Number(amount) < 100) {\n setInValid(false);\n } else {\n setInValid(true);\n }\n\n if (ref.current) {\n ref.current.value = amount;\n }\n };\n\n useEffect(() => {\n if (!showSlip) return;\n\n document.onclick = () => setShowSlip(false);\n\n return () => {\n document.onclick = null;\n };\n }, [showSlip, setShowSlip]);\n\n if (!showSlip) return null;\n\n return (\n <div\n className=\"__ref-swap-widget_slippage_selector __ref-swap-widget-col-flex-start\"\n onClick={e => e.stopPropagation()}\n style={{\n background: container,\n border: `1px solid ${borderColor}`,\n }}\n >\n <span\n style={{\n color: primary,\n paddingBottom: '14px',\n }}\n >\n Slippage tolerance\n </span>\n\n <div\n className={`__ref-swap-widget-row-flex-center\n `}\n >\n <div\n className={`__ref-swap-widget-row-flex-center\n __ref-swap-widget_slippage_selector_input_container`}\n style={{\n border: `1px solid ${invalid ? '#FF7575' : borderColor}`,\n borderRadius,\n }}\n >\n <input\n ref={ref}\n max={99.99999}\n min={0.000001}\n defaultValue={slippageTolerance ? slippageTolerance : 0.5}\n onWheel={() => {\n if (ref.current) {\n ref.current.blur();\n }\n }}\n value={slippageTolerance}\n step=\"any\"\n type=\"number\"\n required={true}\n placeholder=\"\"\n onChange={({ target }) => handleChange(target.value)}\n onKeyDown={e => symbolsArr.includes(e.key) && e.preventDefault()}\n style={{\n width: '100%',\n color: invalid ? '#FF7575' : primary,\n }}\n className=\"__ref-swap-widget-input-class\"\n />\n <span className=\"ml-2\">%</span>\n </div>\n\n <button\n className={`__ref-swap-widget_slippage_selector_button __ref-swap-widget-button ${\n isMobile()\n ? '__ref-swap-widget-opacity-active'\n : '__ref-swap-widget-opacity-hover'\n }`}\n style={{\n color: primary,\n background: buttonBg,\n borderRadius,\n }}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n onChangeSlippageTolerance(0.5);\n setInValid(false);\n }}\n >\n Auto\n </button>\n </div>\n {invalid && (\n <div\n className=\" text-xs py-3 __ref-swap-widget-row-flex-center\"\n style={{\n color: '#FF7575',\n fontSize: '12px',\n padding: '10px 0px',\n alignItems: 'start',\n }}\n >\n <IoWarning\n className=\"\"\n style={{\n marginRight: '4px',\n }}\n size={20}\n />\n <div>{'The slippage tolerance is invalid.'}</div>\n </div>\n )}\n </div>\n );\n};\n\nconst StarToken = ({\n price,\n token,\n onDelete,\n onClick,\n}: {\n token: TokenMetadata;\n price: string;\n onDelete: (token: TokenMetadata) => void;\n onClick: (token: TokenMetadata) => void;\n}) => {\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n const [hoverIcon, setHoverIcon] = useState(false);\n\n const [hoverClose, setHoverClose] = useState(false);\n\n return (\n <div\n className=\"__ref-swap-widget_star_token __ref-swap-widget-row-flex-center\"\n onMouseEnter={() => setHoverIcon(true)}\n onMouseLeave={() => setHoverIcon(false)}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onClick(token);\n }}\n style={{\n background: hoverIcon ? hover : 'transparent',\n border: `1px solid ${borderColor}`,\n }}\n >\n {hoverIcon && (\n <div\n style={{\n position: 'absolute',\n top: '-4px',\n right: '-4px',\n boxShadow: '0px 0px 2px rgba(0, 0, 0, 0.25)',\n border: `1px solid ${borderColor}`,\n borderRadius: '100%',\n width: '16px',\n height: '16px',\n background: '#E3E3E3',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onDelete(token);\n }}\n onMouseEnter={() => setHoverClose(true)}\n onMouseLeave={() => setHoverClose(false)}\n >\n <IoCloseOutline stroke={hoverClose ? 'black' : '#7e8a93'} />\n </div>\n )}\n\n <img\n src={token.icon}\n alt=\"\"\n className=\"__ref-swap-widget_token_icon\"\n style={{\n height: '26px',\n width: '26px',\n marginRight: '2px',\n }}\n />\n\n <div className=\"__ref-swap-widget-col-flex-start\">\n <span\n style={{\n fontSize: '14px',\n color: primary,\n }}\n >\n {toRealSymbol(token.symbol)}\n </span>\n\n <span\n style={{\n fontSize: '10px',\n color: secondary,\n }}\n >\n {!price\n ? '$-'\n : '$' + toInternationalCurrencySystemLongString(price, 2)}\n </span>\n </div>\n </div>\n );\n};\n\ninterface TokenProps {\n token: TokenMetadata;\n onClick: (token: TokenMetadata) => void;\n onClickPin: (token: TokenMetadata) => void;\n balance: string;\n price?: string;\n isSticky?: boolean;\n index: number;\n setHoverIndex: (index: number) => void;\n hoverIndex: number;\n}\n\nconst Token = ({\n token,\n onClick,\n price,\n balance,\n isSticky,\n onClickPin,\n index,\n setHoverIndex,\n hoverIndex,\n}: TokenProps) => {\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n const displayBalance =\n 0 < Number(balance) && Number(balance) < 0.001\n ? '< 0.001'\n : toPrecision(String(balance), 3);\n\n const [hoverOutLink, setHoverOutLink] = useState(false);\n\n const [hoverPin, setHoverPin] = useState(false);\n\n return (\n <div\n className=\"__ref-swap-widget_token-selector-token-list-item __ref-swap-widget-row-flex-center\"\n style={{\n background: hoverIndex === index ? hover : 'transparent',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onClick(token);\n }}\n onMouseEnter={() => setHoverIndex(index)}\n onMouseLeave={() => setHoverIndex(-1)}\n >\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n justifyContent: 'space-between',\n }}\n >\n <img\n src={token.icon}\n alt=\"\"\n className=\"__ref-swap-widget_token_icon\"\n style={{\n height: '36px',\n width: '36px',\n marginRight: '10px',\n }}\n />\n\n <div className=\"__ref-swap-widget-col-flex-start\">\n <span\n style={{\n fontSize: '14px',\n color: primary,\n }}\n className=\"__ref-swap-widget-row-flex-center\"\n >\n {toRealSymbol(token.symbol)}\n\n {TokenLinks[token.symbol] && (\n <HiOutlineExternalLink\n onMouseEnter={() => setHoverOutLink(true)}\n onMouseLeave={() => setHoverOutLink(false)}\n style={{\n marginLeft: '4px',\n marginTop: '2px',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n window.open(TokenLinks[token.symbol], '_blank');\n }}\n stroke={hoverOutLink ? iconHover : iconDefault}\n />\n )}\n </span>\n\n <span\n style={{\n fontSize: '10px',\n color: secondary,\n marginTop: '2px',\n }}\n >\n {!price\n ? '$-'\n : '$' + toInternationalCurrencySystemLongString(price, 2)}\n </span>\n </div>\n </div>\n\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n color: primary,\n }}\n >\n {displayBalance}\n\n {isSticky ? (\n <AiFillPushpin\n onMouseEnter={() => setHoverPin(true)}\n onMouseLeave={() => setHoverPin(false)}\n fill={hoverPin && hoverIndex === index ? iconHover : iconDefault}\n style={{\n marginLeft: '10px',\n cursor: 'pointer',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onClickPin(token);\n }}\n />\n ) : (\n <AiOutlinePushpin\n style={{\n marginLeft: '10px',\n cursor: 'pointer',\n }}\n onMouseEnter={() => setHoverPin(true)}\n onMouseLeave={() => setHoverPin(false)}\n fill={hoverPin && hoverIndex === index ? iconHover : iconDefault}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onClickPin(token);\n }}\n />\n )}\n </div>\n </div>\n );\n};\n\ninterface TokenListProps {\n tokens: TokenMetadata[];\n onClick: (token: TokenMetadata) => void;\n balances: { [tokenId: string]: string };\n tokenPriceList: Record<string, any> | null;\n starList: string[];\n setStarList: (starList: string[]) => void;\n onDelete: (token: TokenMetadata) => void;\n}\n\nexport const TokenListTable = ({\n tokens,\n onClick,\n balances,\n tokenPriceList,\n starList,\n setStarList,\n onDelete,\n}: TokenListProps) => {\n const [currentSort, setCurrentSort] = useState('down');\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n } = theme;\n\n const onClickPin = (token: TokenMetadata) => {\n if (starList.includes(token.id)) {\n onDelete(token);\n } else {\n const newList = [...starList, token.id];\n setStarList(newList);\n }\n };\n\n const [hoverIndex, setHoverIndex] = useState(-1);\n\n const tokenSorting = (a: TokenMetadata, b: TokenMetadata) => {\n const b1 = balances[a.id];\n const b2 = balances[b.id];\n\n if (currentSort === 'up') {\n return Number(b1) - Number(b2);\n } else return Number(b2) - Number(b1);\n };\n\n return !tokens || tokens.length === 0 ? null : (\n <div className=\"__ref-swap-widget_token_list_table\">\n <div\n className=\"__ref-swap-widget_token_list_table_header\"\n style={{\n color: secondary,\n borderBottom: `1px solid ${borderColor}`,\n }}\n >\n <span className=\"\">Asset</span>\n\n <span\n onClick={() => {\n setCurrentSort(currentSort === 'up' ? 'down' : 'up');\n }}\n style={{\n cursor: 'pointer',\n }}\n className=\"__ref-swap-widget-row-flex-center\"\n >\n <span className=\"ml-1\">Balance</span>\n {currentSort === 'up' ? <TiArrowSortedUp /> : <TiArrowSortedDown />}\n </span>\n </div>\n\n <div className=\"__ref-swap-widget_token_list_table_content\">\n {tokens.sort(tokenSorting).map((token, index) => (\n <Token\n key={token.id + '-select-token-list-item-' + index}\n onClick={onClick}\n index={index}\n token={token}\n price={tokenPriceList?.[token.id]?.price}\n balance={balances?.[token.id] || '0'}\n onClickPin={onClickPin}\n isSticky={starList.includes(token.id)}\n setHoverIndex={setHoverIndex}\n hoverIndex={hoverIndex}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport const TokenSelector = ({\n onSelect,\n width,\n tokens,\n onClose,\n AccountId,\n balances,\n className,\n}: {\n onSelect: (token: TokenMetadata) => void;\n width: string;\n tokens: TokenMetadata[];\n onClose: () => void;\n AccountId: string;\n balances: { [tokenId: string]: string };\n className?: string;\n}) => {\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n iconDefault,\n iconHover,\n } = theme;\n\n const [searchValue, setSearchValue] = useState<string>('');\n\n const tokenPriceList = useContext(TokenPriceContext);\n\n const handleSearch = (value: string) => {\n setSearchValue(value);\n };\n\n const storagedStartList = localStorage.getItem(REF_WIDGET_STAR_TOKEN_LIST_KEY)\n ? JSON.parse(localStorage.getItem(REF_WIDGET_STAR_TOKEN_LIST_KEY) || '[]')\n : null;\n\n const DEFAULT_START_TOKEN_LIST =\n getConfig().networkId === 'testnet'\n ? DEFAULT_START_TOKEN_LIST_TESTNET\n : DEFAULT_START_TOKEN_LIST_MAINNET;\n\n const [starList, setStarList] = useState<string[]>(\n storagedStartList || DEFAULT_START_TOKEN_LIST\n );\n\n const onDelete = (token: TokenMetadata) => {\n const newStarList = starList.filter(starToken => starToken !== token.id);\n\n setStarList(newStarList);\n\n localStorage.setItem(\n REF_WIDGET_STAR_TOKEN_LIST_KEY,\n JSON.stringify(newStarList)\n );\n };\n\n const tableListFilter = (token: TokenMetadata) => {\n if (!searchValue) return true;\n\n const searchValueLower = searchValue.toLowerCase();\n\n return token.symbol?.toLowerCase().includes(searchValueLower) || false;\n };\n\n return (\n <div\n className={`__ref-swap_widget-token_selector __ref-swap-widget-container ${className}`}\n style={{\n position: 'relative',\n width,\n background: container,\n }}\n >\n <FiChevronLeft\n onClick={onClose}\n style={{\n color: primary,\n position: 'absolute',\n cursor: 'pointer',\n }}\n />\n <div\n className=\"__ref-swap-widget-header-title __ref-swap-widget-row-flex-center\"\n style={{\n color: primary,\n justifyContent: 'center',\n paddingBottom: '24px',\n }}\n >\n Select a token\n </div>\n\n <div\n className=\"__ref-swap-widget-select-token_input __ref-swap-widget-row-flex-center\"\n style={{\n border: `1px solid ${buttonBg}`,\n background: secondaryBg,\n }}\n >\n <FaSearch\n fill={iconDefault}\n style={{\n marginRight: '8px',\n }}\n />\n\n <input\n className=\"__ref-swap-widget-input-class\"\n placeholder=\"Search token...\"\n onChange={evt => handleSearch(evt.target.value)}\n style={{\n fontSize: '14px',\n color: primary,\n }}\n />\n </div>\n\n <div className=\"__ref-swap-widget_token-selector-star-tokens __ref-swap-widget-row-flex-center\">\n {starList.map(id => {\n if (!tokens || tokens.length === 0) return null;\n\n const token = tokens.find(token => token.id === id);\n\n return !token ? null : (\n <StarToken\n key={token.id + '-star-token'}\n token={token}\n price={tokenPriceList?.[token.id]?.price}\n onDelete={onDelete}\n onClick={onSelect}\n />\n );\n })}\n </div>\n\n <TokenListTable\n tokens={tokens.filter(tableListFilter)}\n tokenPriceList={tokenPriceList}\n onClick={onSelect}\n balances={balances}\n starList={starList}\n setStarList={starList => {\n setStarList(starList);\n localStorage.setItem(\n REF_WIDGET_STAR_TOKEN_LIST_KEY,\n JSON.stringify(starList)\n );\n }}\n onDelete={onDelete}\n />\n </div>\n );\n};\n\nexport const Slider = ({\n showSlip,\n setShowSlip,\n}: {\n showSlip: boolean;\n setShowSlip: (show: boolean) => void;\n}) => {\n const [hover, setHover] = useState(false);\n\n return (\n <svg\n width=\"17\"\n height=\"17\"\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n onClick={() => setShowSlip(true)}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.6957 13.0652C12.6957 14.1338 11.8294 15 10.7609 15C9.69235 15 8.82611 14.1338 8.82611 13.0652C8.82612 11.9967 9.69235 11.1304 10.7609 11.1304C11.8294 11.1304 12.6957 11.9967 12.6957 13.0652ZM14.5749 12.0941C14.6145 12.0894 14.6548 12.0869 14.6957 12.0869L15.9565 12.0869C16.5088 12.0869 16.9565 12.5346 16.9565 13.0869C16.9565 13.6392 16.5088 14.0869 15.9565 14.0869L14.6957 14.0869C14.651 14.0869 14.6071 14.084 14.564 14.0783C14.1171 15.7605 12.5837 17 10.7609 17C8.93806 17 7.40472 15.7605 6.95777 14.0783C6.91471 14.084 6.87078 14.0869 6.82617 14.0869L1.00009 14.0869C0.447802 14.0869 8.61245e-05 13.6392 8.61728e-05 13.0869C8.62211e-05 12.5346 0.447802 12.0869 1.00009 12.0869L6.82617 12.0869C6.86702 12.0869 6.90729 12.0894 6.94686 12.0941C7.37926 10.3906 8.92291 9.13044 10.7609 9.13044C12.5989 9.13044 14.1425 10.3906 14.5749 12.0941ZM4.26086 3.93478C4.26086 2.86623 5.1271 2 6.19565 2C7.2642 2 8.13043 2.86623 8.13043 3.93478C8.13043 5.00333 7.2642 5.86957 6.19565 5.86957C5.1271 5.86956 4.26086 5.00333 4.26086 3.93478ZM6.19565 9.66601e-07C4.3728 8.07243e-07 2.83946 1.23952 2.39252 2.92168C2.34944 2.91601 2.3055 2.91309 2.26087 2.91309L0.999999 2.91309C0.447715 2.91309 -7.14972e-07 3.3608 -7.63254e-07 3.91309C-8.11537e-07 4.46537 0.447715 4.91309 0.999999 4.91309L2.26087 4.91309C2.30173 4.91309 2.34202 4.91063 2.3816 4.90587C2.81401 6.60936 4.35766 7.86956 6.19565 7.86957C8.03363 7.86957 9.57728 6.60936 10.0097 4.90588C10.0493 4.91064 10.0895 4.91309 10.1304 4.91309L15.9565 4.91309C16.5087 4.91309 16.9565 4.46537 16.9565 3.91309C16.9565 3.3608 16.5087 2.91309 15.9565 2.91309L10.1304 2.91309C10.0858 2.91309 10.0418 2.91601 9.99877 2.92167C9.55182 1.23952 8.01849 1.12596e-06 6.19565 9.66601e-07Z\"\n fill={hover || showSlip ? '#00C6A2' : '#7E8A93'}\n />\n </svg>\n );\n};\n\nexport const RefIcon = (props: any) => {\n return (\n <svg\n {...props}\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M6.36365 10H10L6.36365 6.36363V10Z\" fill=\"currentColor\" />\n <path\n d=\"M10 4.05312e-06L7.87879 3.86767e-06L10 2.12122L10 4.05312e-06Z\"\n fill=\"#00C6A2\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.51531 6.36364C6.46444 6.36364 6.41387 6.36232 6.36365 6.35971V4.08371L8.83901 1.78516C9.18802 2.26148 9.3941 2.8491 9.3941 3.48485C9.3941 5.07476 8.10522 6.36364 6.51531 6.36364ZM8.19255 1.14486L6.36365 2.84313V0.60999C6.41387 0.607383 6.46444 0.606064 6.51531 0.606064C7.14111 0.606064 7.72027 0.805743 8.19255 1.14486Z\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.06046 0.606064H3.33319V3.29661L4.55696 4.52039L6.06046 3.12428V0.606064ZM6.06046 4.36486L4.5336 5.78267L3.33319 4.58226V10H6.06046V4.36486Z\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.0303 0.606064H0V4.50881L2.27284 2.23598L3.0303 2.99344V0.606064ZM3.0303 4.27909L2.27284 3.52162L0 5.79446V10H3.0303V4.27909Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport const Loading = () => {\n return (\n <svg\n width=\"38\"\n height=\"38\"\n viewBox=\"0 0 38 38\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"__ref-swap-widget-loading\"\n >\n <circle\n cx=\"19\"\n cy=\"19\"\n r=\"16\"\n stroke=\"#EEEEEE\"\n strokeWidth=\"6\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M19 35C27.8366 35 35 27.8366 35 19C35 10.1634 27.8366 3 19 3C10.1634 3 3 10.1634 3 19\"\n stroke=\"#00C6A2\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n};\n\nexport const Warning = () => {\n return (\n <svg\n width=\"49\"\n height=\"49\"\n viewBox=\"0 0 49 49\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21.0359 5.99999C22.5755 3.33333 26.4245 3.33333 27.9641 6L42.2535 30.75C43.7931 33.4167 41.8686 36.75 38.7894 36.75H10.2106C7.13137 36.75 5.20688 33.4167 6.74648 30.75L21.0359 5.99999Z\"\n stroke=\"#FF689E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"24\"\n y1=\"14\"\n x2=\"24\"\n y2=\"24\"\n stroke=\"#FF689E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n <circle cx=\"24\" cy=\"30\" r=\"2\" fill=\"#FF689E\" />\n </svg>\n );\n};\n\nexport const Success = () => {\n return (\n <div\n style={{\n position: 'relative',\n height: '32px',\n width: '32px',\n }}\n >\n <svg\n width=\"38\"\n height=\"38\"\n viewBox=\"0 0 38 38\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n }}\n >\n <circle\n cx=\"19\"\n cy=\"19\"\n r=\"16\"\n stroke=\"#EEEEEE\"\n strokeWidth=\"6\"\n strokeLinecap=\"round\"\n />\n </svg>\n\n <svg\n width=\"30\"\n height=\"23\"\n viewBox=\"0 0 30 23\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n position: 'absolute',\n top: 4,\n left: 4,\n }}\n >\n <path\n d=\"M2 11.2727L10.4898 20L28 2\"\n stroke=\"#00C6A2\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n </svg>\n </div>\n );\n};\n\nexport const RouterIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"12\"\n viewBox=\"0 0 16 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"mr-2\"\n >\n <path\n d=\"M13.4862 6.25488C12.2813 6.25488 11.2485 7.10159 11.019 8.28698H6.02703L4.7647 7.21448C4.93684 6.8758 5.05159 6.48067 5.10897 6.0291C5.10897 5.52107 4.93684 4.9566 4.59257 4.56147L6.02703 3.1503H11.0763C11.478 4.44858 12.8551 5.23884 14.1748 4.84371C15.4945 4.44858 16.2978 3.09385 15.8961 1.79557C15.4945 0.497295 14.1174 -0.292963 12.7977 0.102166C11.937 0.327954 11.3059 1.00532 11.0763 1.79557H5.51062L3.50237 3.77122C3.21548 3.65832 2.92859 3.60188 2.58432 3.60188C1.20723 3.54543 0.0596573 4.61792 0.00227872 5.97265C-0.0550999 7.32738 0.977715 8.45632 2.3548 8.51276H2.58432C3.04334 8.51276 3.44499 8.39987 3.84664 8.17408L5.568 9.6417H11.1911C11.7075 10.8835 13.142 11.5045 14.4043 11.0529C15.6666 10.5449 16.2978 9.13368 15.8388 7.89185C15.4371 6.8758 14.5191 6.25488 13.4862 6.25488V6.25488ZM13.4862 1.344C14.1174 1.344 14.6338 1.85202 14.6338 2.47294C14.6338 3.09385 14.1174 3.60188 13.4862 3.60188C12.8551 3.60188 12.3387 3.09385 12.3387 2.47294C12.3387 1.85202 12.8551 1.344 13.4862 1.344ZM2.58432 7.15804C1.95315 7.15804 1.43674 6.65001 1.43674 6.0291C1.43674 5.40818 1.95315 4.90016 2.58432 4.90016C3.21548 4.90016 3.73189 5.40818 3.73189 6.0291C3.73189 6.65001 3.21548 7.15804 2.58432 7.15804ZM13.4862 9.86749C12.8551 9.86749 12.3387 9.35947 12.3387 8.73855C12.3387 8.11763 12.8551 7.60961 13.4862 7.60961C14.1174 7.60961 14.6338 8.11763 14.6338 8.73855C14.6338 9.35947 14.1174 9.86749 13.4862 9.86749Z\"\n fill=\"url(#paint0_linear_12461_2312)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_12461_2312\"\n x1=\"8\"\n y1=\"0\"\n x2=\"8\"\n y2=\"11.2\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#00C6A2\" />\n <stop offset=\"1\" stopColor=\"#8C78FF\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport const Notification = ({\n state,\n tx,\n detail,\n open,\n setOpen,\n setState,\n}: {\n state?: 'success' | 'fail' | null;\n setState?: (state: 'success' | 'fail' | null) => void;\n tx?: string;\n detail?: string;\n\n open: boolean;\n setOpen: (open: boolean) => void;\n}) => {\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n } = theme;\n\n if (!open) return null;\n\n return (\n <div\n className=\"__ref-swap-widget-notification\"\n style={{\n color: primary,\n background: container,\n }}\n >\n <div className=\"__ref-swap-widget-notification__icon\">\n {state === null && <Loading />}\n {state === 'fail' && <Warning />}\n {state === 'success' && <Success />}\n </div>\n\n <div\n style={{\n fontSize: '16px',\n marginTop: '10px',\n marginBottom: '6px',\n }}\n >\n {state === 'success' && <p>Success!</p>}\n {state === 'fail' && <p>Swap Failed!</p>}\n </div>\n <div\n className=\"__ref-swap-widget-notification__text\"\n style={{\n color: primary,\n }}\n >\n {(state === null || state === undefined) && (\n <p>Waiting for confirmation</p>\n )}\n {state === 'fail' && !!tx && (\n <a\n className=\"text-primary font-semibold\"\n href={`${config.explorerUrl}/txns/${tx}`}\n target=\"_blank\"\n style={{\n textDecoration: 'underline',\n fontSize: '14px',\n color: primary,\n }}\n rel=\"noreferrer\"\n >\n Click to view.\n </a>\n )}\n\n {state === 'success' && detail}\n </div>\n {state !== null && (\n <button\n className=\"__ref-swap-widget-notification__button __ref-swap-widget-button\"\n style={{\n background: buttonBg,\n fontWeight: 700,\n color: 'white',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n setOpen(false);\n setState && setState(null);\n }}\n >\n Close\n </button>\n )}\n </div>\n );\n};\n\nexport const ArrowRight = () => {\n return (\n <div className=\"mx-1\">\n <svg\n width=\"12\"\n height=\"5\"\n viewBox=\"0 0 12 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.864 4.4C9.024 4.05867 9.17867 3.76 9.328 3.504C9.488 3.248 9.64267 3.03467 9.792 2.864H0.464V2.192H9.792C9.64267 2.01067 9.488 1.792 9.328 1.536C9.17867 1.28 9.024 0.986666 8.864 0.656H9.424C10.096 1.43467 10.8 2.01067 11.536 2.384V2.672C10.8 3.03467 10.096 3.61067 9.424 4.4H8.864Z\"\n fill=\"#7E8A93\"\n />\n </svg>\n </div>\n );\n};\n\nexport const AccountButton = ({\n AccountId,\n onDisConnect,\n}: {\n AccountId: string;\n onDisConnect: () => void;\n}) => {\n const [hoverAccount, setHoverAccount] = useState<boolean>(false);\n\n const theme = useContext(ThemeContext);\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n iconDefault,\n iconHover,\n borderColor,\n } = theme;\n\n return !AccountId ? null : (\n <div\n className=\"__ref-swap-widget-header-button-account __ref-swap-widget-row-flex-center\"\n style={{\n color: primary,\n background: secondaryBg,\n border: `1px solid ${borderColor}`,\n cursor: 'pointer',\n }}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n hoverAccount && onDisConnect();\n }}\n onMouseEnter={() => setHoverAccount(true)}\n onMouseLeave={() => setHoverAccount(false)}\n >\n {hoverAccount ? 'Disconnect' : getAccountName(AccountId)}\n </div>\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { SwapWidgetProps } from './types';\nimport { TokenMetadata } from '../types';\nimport {\n useRefPools,\n useSwap,\n ThemeContextProvider,\n TokenPriceContextProvider,\n useAllTokens,\n} from './state';\nimport { ftGetBalance, ftGetTokenMetadata } from '../ref';\nimport {\n getAccountName,\n toReadableNumber,\n toPrecision,\n getPriceImpact,\n isMobile,\n} from '../utils';\nimport {\n Slider,\n SlippageSelector,\n TokenSelector,\n TokenAmount,\n DetailView,\n Notification,\n} from './components';\nimport { FiChevronDown } from '@react-icons/all-files/fi/FiChevronDown';\n\nimport { TiWarning } from '@react-icons/all-files/ti/TiWarning';\n\nimport './style.css';\nimport { useTokenPriceList, useTokenBalnces, useTokensIndexer } from './state';\n\nimport { CgArrowsExchangeAltV } from '@react-icons/all-files/cg/CgArrowsExchangeAltV';\nimport { RefIcon, AccountButton } from './components';\nimport Big from 'big.js';\nimport { ONLY_ZEROS } from '../utils';\nimport {\n defaultTheme,\n defaultDarkModeTheme,\n REF_WIDGET_SWAP_IN_KEY,\n REF_WIDGET_SWAP_OUT_KEY,\n} from './constant';\nimport {\n WRAP_NEAR_CONTRACT_ID,\n NEAR_META_DATA,\n REF_TOKEN_ID,\n REF_META_DATA,\n} from '../constant';\n\nexport const SwapWidget = (props: SwapWidgetProps) => {\n const {\n theme,\n defaultTokenList,\n onSwap,\n connection,\n width,\n height,\n enableSmartRouting,\n className,\n transactionState,\n onConnect,\n defaultTokenIn,\n defaultTokenOut,\n onDisConnect,\n darkMode,\n } = props;\n\n const curTheme = theme || (darkMode ? defaultDarkModeTheme : defaultTheme);\n\n const STORAGED_TOKEN_IN = localStorage.getItem(REF_WIDGET_SWAP_IN_KEY);\n\n const STORAGED_TOKEN_OUT = localStorage.getItem(REF_WIDGET_SWAP_OUT_KEY);\n\n const {\n container,\n buttonBg,\n primary,\n secondary,\n borderRadius,\n fontFamily,\n hover,\n active,\n secondaryBg,\n borderColor,\n iconDefault,\n iconHover,\n refIcon,\n } = curTheme;\n\n const { AccountId, isSignedIn: isSignedInProp } = connection;\n\n const isSignedIn = !!AccountId && isSignedInProp;\n\n const [tokenIn, setTokenIn] = useState<TokenMetadata>();\n\n const handleSetTokenIn = (token: TokenMetadata) => {\n setTokenIn(token);\n localStorage.setItem(REF_WIDGET_SWAP_IN_KEY, token.id);\n };\n\n const handleSetTokenOut = (token: TokenMetadata) => {\n setTokenOut(token);\n localStorage.setItem(REF_WIDGET_SWAP_OUT_KEY, token.id);\n };\n\n const [tokenOut, setTokenOut] = useState<TokenMetadata>();\n const [tokenInBalance, setTokenInBalance] = useState<string>('');\n\n const [tokenOutBalance, setTokenOutBalance] = useState<string>('');\n\n const [notOpen, setNotOpen] = useState<boolean>(false);\n\n useEffect(() => {\n if (!transactionState) return;\n\n if (transactionState && transactionState.state !== null) {\n setNotOpen(true);\n }\n transactionState?.setState(transactionState?.state || null);\n }, [transactionState]);\n\n const [widgetRoute, setWidgetRoute] = useState<\n 'swap' | 'token-selector-in' | 'token-selector-out'\n >('swap');\n\n const [amountIn, setAmountIn] = useState<string>('1');\n\n const [showSlip, setShowSlip] = useState<boolean>(false);\n\n const [slippageTolerance, setSlippageTolerance] = useState<number>(0.5);\n\n const { tokens, tokenLoading } = useTokensIndexer({\n defaultTokenList,\n AccountId,\n });\n\n // cache list tokens\n useAllTokens({ reload: true });\n\n const balances = useTokenBalnces(tokens, AccountId);\n\n const [refreshTrigger, setRreshTrigger] = useState<boolean>(false);\n\n const tokenPriceList = useTokenPriceList();\n\n const { allPools, allStablePools, poolFetchingState } = useRefPools(\n refreshTrigger\n );\n\n useEffect(() => {\n const defaultIn =\n STORAGED_TOKEN_IN || defaultTokenIn || WRAP_NEAR_CONTRACT_ID;\n\n const defaultOut = STORAGED_TOKEN_OUT || defaultTokenOut || REF_TOKEN_ID;\n\n if (\n tokens.length > 0 &&\n defaultIn &&\n tokens.findIndex(t => t.id === defaultIn) !== -1\n ) {\n if (defaultIn === WRAP_NEAR_CONTRACT_ID || defaultIn === 'NEAR') {\n handleSetTokenIn({\n ...NEAR_META_DATA,\n id: WRAP_NEAR_CONTRACT_ID,\n });\n } else {\n ftGetTokenMetadata(defaultIn).then(handleSetTokenIn);\n }\n } else if (\n tokens.length > 0 &&\n defaultIn &&\n tokens.findIndex(t => t.id === defaultIn) === -1\n ) {\n handleSetTokenIn({\n ...NEAR_META_DATA,\n id: WRAP_NEAR_CONTRACT_ID,\n });\n }\n if (\n tokens.length > 0 &&\n defaultOut &&\n tokens.findIndex(t => t.id === defaultOut) !== -1\n ) {\n if (defaultOut === WRAP_NEAR_CONTRACT_ID || defaultOut === 'NEAR') {\n handleSetTokenOut({\n ...NEAR_META_DATA,\n id: WRAP_NEAR_CONTRACT_ID,\n });\n } else {\n ftGetTokenMetadata(defaultOut).then(handleSetTokenOut);\n }\n } else if (\n tokens.length > 0 &&\n defaultOut &&\n tokens.findIndex(t => t.id === defaultOut) === -1\n ) {\n handleSetTokenOut(REF_META_DATA);\n }\n }, [tokens, tokenLoading]);\n\n useEffect(() => {\n if (!tokenIn) return;\n\n const wrapedId = tokenIn.id === WRAP_NEAR_CONTRACT_ID ? 'NEAR' : tokenIn.id;\n\n if (balances[wrapedId]) {\n setTokenInBalance(balances[wrapedId]);\n return;\n }\n\n ftGetBalance(wrapedId, AccountId).then(available => {\n setTokenInBalance(toReadableNumber(tokenIn.decimals, available));\n });\n }, [tokenIn, AccountId, balances]);\n\n useEffect(() => {\n if (!tokenOut) return;\n\n const wrapedId =\n tokenOut.id === WRAP_NEAR_CONTRACT_ID ? 'NEAR' : tokenOut.id;\n\n if (balances[wrapedId]) {\n setTokenOutBalance(balances[wrapedId]);\n return;\n }\n ftGetBalance(wrapedId, AccountId).then(available => {\n setTokenOutBalance(toReadableNumber(tokenOut.decimals, available));\n });\n }, [tokenOut, AccountId, balances]);\n\n const {\n amountOut,\n minAmountOut,\n rate,\n fee,\n estimates,\n canSwap,\n swapError,\n makeSwap,\n setAmountOut,\n } = useSwap({\n tokenIn: tokenIn,\n tokenOut: tokenOut,\n amountIn,\n simplePools: allPools.simplePools.filter(p => Number(p.shareSupply) > 0),\n options: {\n enableSmartRouting,\n stablePools: allPools.ratedPools\n .concat(allPools.unRatedPools)\n .filter(p => Number(p.shareSupply) > 0),\n stablePoolsDetail: allStablePools.filter(\n p => Number(p.shares_total_supply) > 0\n ),\n },\n slippageTolerance,\n onSwap,\n AccountId,\n refreshTrigger,\n poolFetchingState,\n });\n\n const priceImpact = useMemo(() => {\n if (!tokenIn || !tokenOut) return '0';\n\n return getPriceImpact({\n estimates,\n tokenIn,\n tokenOut,\n amountIn,\n amountOut,\n stablePools: allStablePools,\n });\n }, [estimates, tokenIn, tokenOut, amountIn, amountOut, allStablePools]);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n setNotOpen(true);\n makeSwap();\n };\n\n const canSubmit =\n tokenIn &&\n tokenOut &&\n canSwap &&\n !swapError &&\n isSignedIn &&\n new Big(tokenInBalance || '0').gte(amountIn || '0') &&\n slippageTolerance > 0 &&\n slippageTolerance < 100 &&\n !ONLY_ZEROS.test(tokenInBalance);\n\n return (\n <ThemeContextProvider customTheme={curTheme}>\n <TokenPriceContextProvider>\n {widgetRoute === 'swap' && (\n <form\n className={`__ref-swap-widget-container ${className}`}\n onSubmit={handleSubmit}\n style={{\n background: container,\n fontFamily,\n width,\n height,\n }}\n >\n <div className=\"__ref-swap-widget-header __ref-swap-widget-row-flex-center\">\n <div\n style={{\n color: primary,\n }}\n className=\"__ref-swap-widget-header-title\"\n >\n Swap\n </div>\n\n <div\n className=\"__ref-swap-widget-header-button __ref-swap-widget-row-flex-center\"\n style={{\n position: 'relative',\n }}\n >\n <AccountButton\n onDisConnect={onDisConnect}\n AccountId={AccountId}\n />\n\n <Slider showSlip={showSlip} setShowSlip={setShowSlip} />\n\n <SlippageSelector\n slippageTolerance={slippageTolerance}\n onChangeSlippageTolerance={setSlippageTolerance}\n showSlip={showSlip}\n setShowSlip={setShowSlip}\n />\n </div>\n </div>\n\n <TokenAmount\n amount={amountIn}\n balance={tokenInBalance}\n token={tokenIn}\n price={!tokenIn ? null : tokenPriceList?.[tokenIn.id]?.price}\n onChangeAmount={setAmountIn}\n onSelectToken={() => {\n setWidgetRoute('token-selector-in');\n }}\n />\n\n <div\n className={`__ref-swap-widget-exchange-button __ref-swap-widget-row-flex-center `}\n style={{\n color: iconDefault,\n }}\n >\n <CgArrowsExchangeAltV\n style={{\n cursor: 'pointer',\n }}\n className={`__ref-swap-widget-exchange-button-icon ${\n isMobile()\n ? '__ref-swap-widget-active'\n : '__ref-swap-widget-hover'\n }`}\n size={30}\n onClick={() => {\n tokenOut && handleSetTokenIn(tokenOut);\n tokenIn && handleSetTokenOut(tokenIn);\n setAmountIn('1');\n setAmountOut('');\n }}\n />\n </div>\n\n <TokenAmount\n amount={toPrecision(amountOut, 8)}\n balance={tokenOutBalance}\n token={tokenOut}\n price={!tokenOut ? null : tokenPriceList?.[tokenOut.id]?.price}\n onSelectToken={() => {\n setWidgetRoute('token-selector-out');\n }}\n onForceUpdate={() => {\n setRreshTrigger(!refreshTrigger);\n }}\n poolFetchingState={poolFetchingState}\n />\n {!swapError && amountIn && amountOut && (\n <DetailView\n fee={fee}\n rate={rate}\n amountIn={amountIn}\n minReceived={minAmountOut}\n tokenIn={tokenIn}\n tokenOut={tokenOut}\n amountOut={amountOut}\n priceImpact={priceImpact}\n estimates={estimates}\n />\n )}\n\n {swapError && (\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n color: '#DE9450',\n fontSize: '14px',\n\n paddingTop: '16px',\n }}\n >\n <TiWarning fill=\"#DE9450\" size={20} />\n &nbsp;\n {swapError.message}\n </div>\n )}\n {isSignedIn ? (\n <button\n type=\"submit\"\n className=\"__ref-swap-widget-submit-button __ref-swap-widget-button\"\n style={{\n color: 'white',\n background: buttonBg,\n opacity: !canSubmit ? 0.5 : 1,\n cursor: !canSubmit ? 'not-allowed' : 'pointer',\n }}\n disabled={!canSubmit}\n >\n {'Swap'}\n </button>\n ) : (\n <button\n type=\"button\"\n className=\"__ref-swap-widget-submit-button __ref-swap-widget-button\"\n onClick={onConnect}\n style={{\n color: 'white',\n background: buttonBg,\n cursor: 'pointer',\n }}\n >\n {'Connect Wallet'}\n </button>\n )}\n <div\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n justifyContent: 'center',\n }}\n >\n <a\n className=\"__ref-swap-widget-row-flex-center\"\n style={{\n color: secondary,\n justifyContent: 'center',\n paddingTop: '12px',\n fontSize: '14px',\n display: 'inline-flex',\n }}\n href=\"https://ref.finance\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <RefIcon\n style={{\n color: refIcon || 'black',\n }}\n />\n &nbsp; Powered by Ref.finance\n </a>\n </div>\n\n <Notification\n state={transactionState?.state}\n setState={transactionState?.setState}\n open={notOpen}\n setOpen={setNotOpen}\n tx={transactionState?.tx}\n detail={transactionState?.detail}\n />\n </form>\n )}\n\n {widgetRoute === 'token-selector-in' && (\n <TokenSelector\n balances={balances}\n tokens={tokens}\n width={width}\n onSelect={token => {\n handleSetTokenIn(token);\n setWidgetRoute('swap');\n }}\n onClose={() => setWidgetRoute('swap')}\n AccountId={AccountId}\n className={className}\n />\n )}\n\n {widgetRoute === 'token-selector-out' && (\n <TokenSelector\n tokens={tokens}\n balances={balances}\n width={width}\n onSelect={token => {\n handleSetTokenOut(token);\n setWidgetRoute('swap');\n }}\n onClose={() => setWidgetRoute('swap')}\n AccountId={AccountId}\n className={className}\n />\n )}\n </TokenPriceContextProvider>\n </ThemeContextProvider>\n );\n};\n","import { getConfig } from '../constant';\n\nexport const DefaultTestnetTokenList = [\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped NEAR fungible token',\n symbol: 'wNEAR',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'wrap.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Banana',\n symbol: 'BANANA',\n icon:\n 'https://assets.onlinelabels.com/images/clip-art/pitr/pitr_Bananas_icon.png',\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'banana.ft-fin.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'NEAR Wrapped USDC',\n symbol: 'nUSDC',\n icon: 'https://s2.coinmarketcap.com/static/img/coins/64x64/3408.png',\n reference: null,\n reference_hash: null,\n decimals: 2,\n id: 'nusdc.ft-fin.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'NEAR Wrapped Tether',\n symbol: 'nUSDT',\n icon: 'https://s2.coinmarketcap.com/static/img/coins/64x64/825.png',\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'nusdt.ft-fin.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Ref Finance Token',\n symbol: 'RFT',\n icon: '',\n reference: null,\n reference_hash: null,\n decimals: 8,\n id: 'rft.tokenfactory.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USD Coin',\n symbol: 'USDC',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'usdc.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tether USD',\n symbol: 'USDT.e',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2326A17B'/%3E%3Cpath fill='%23FFF' d='M17.922 17.383v-.002c-.11.008-.677.042-1.942.042-1.01 0-1.721-.03-1.971-.042v.003c-3.888-.171-6.79-.848-6.79-1.658 0-.809 2.902-1.486 6.79-1.66v2.644c.254.018.982.061 1.988.061 1.207 0 1.812-.05 1.925-.06v-2.643c3.88.173 6.775.85 6.775 1.658 0 .81-2.895 1.485-6.775 1.657m0-3.59v-2.366h5.414V7.819H8.595v3.608h5.414v2.365c-4.4.202-7.709 1.074-7.709 2.118 0 1.044 3.309 1.915 7.709 2.118v7.582h3.913v-7.584c4.393-.202 7.694-1.073 7.694-2.116 0-1.043-3.301-1.914-7.694-2.117'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'usdt.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Dai Stablecoin',\n symbol: 'DAI',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23F4B731' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cpath d='M9.277 8h6.552c3.985 0 7.006 2.116 8.13 5.194H26v1.861h-1.611c.031.294.047.594.047.898v.046c0 .342-.02.68-.06 1.01H26v1.86h-2.08C22.767 21.905 19.77 24 15.83 24H9.277v-5.131H7v-1.86h2.277v-1.954H7v-1.86h2.277V8zm1.831 10.869v3.462h4.72c2.914 0 5.078-1.387 6.085-3.462H11.108zm11.366-1.86H11.108v-1.954h11.37c.041.307.063.622.063.944v.045c0 .329-.023.65-.067.964zM15.83 9.665c2.926 0 5.097 1.424 6.098 3.528h-10.82V9.666h4.72z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'dai.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped Ether',\n symbol: 'WETH',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🍌%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'weth.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'HAPI',\n symbol: 'HAPI',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='Layer_2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='600px' height='600px' viewBox='0 0 600 600' enable-background='new 0 0 600 600' xml:space='preserve'%3E %3Cg%3E %3Cg%3E %3Cpath fill='%23141414' d='M263.7,122.8c-3.6,0.3-7.1,0.9-10.7,1.8c-24.5,6-40.3,18.1-50.4,31c24.5-4.7,49.9,1.3,67.3,7.4 c0.5,0.2,1,0.4,1.6,0.6c-2.7-4.2-5.2-9-7.2-14.4C261.2,141.1,261.6,131.6,263.7,122.8z'/%3E %3Cpath fill='%23141414' d='M201.2,197.7c-9.8-1.1-19.1-2.1-24.6-2.1c-0.7,0-1.4,0-2,0.1c-38.1,2.6-67.2,37.3-69.1,82.4 c-1.4,32.2,13.5,53.1,23.3,63.4c-1.5-12.5-0.1-25,4.3-37.3c11.7-32.6,34.3-42.1,60.6-53.1c10.8-4.5,22.5-9.5,34.3-16.6l50.1-39.6 c-10.1,2.2-24.4,4.5-42.9,5.3C227.1,200.6,213.9,199.1,201.2,197.7z'/%3E %3Cpath fill='%23141414' d='M319.1,176.5c-0.5,1.1,0.9,2.1,1.8,1.2c5.3-5.4,16.3-14.3,30.8-14.2c15.6,0.1,35.5,10.2,40.5,22.1 c4,9.8-6.6,16.5-6.6,16.5l0,0c-2.5-2.7-8-6.3-18.2-6.6c-15-0.5-25.3,12.1-24.1,12.9c7.5,4.7,17.3,3.7,23.1,3.5 c5.8-0.2,15.1-2.5,17.8-3.5c4.7-1.8,11.7-7.8,14.9-16.1c2.5-6.5,8.4-28.7-25.2-34.4C352.7,154.3,327,159.6,319.1,176.5z'/%3E %3Cpath fill='%23141414' d='M473.1,225.1c-0.5-0.6-1.1-1.3-1.7-2l-0.3-0.3c-3.9-4.4-7.6-8.3-9.4-10.1c1.2-4.2,4-16.2,1-26.1 c-2.3-7.7-6.8-15.5-9.2-19.4l-0.8-1.2h0c-0.4-0.6-0.8-1.2-1.1-1.7c-0.3-0.4-0.5-0.7-0.6-1l-0.2-0.7c-2.5-7-8.6-22.3-16.4-28.1 l59.4-91.7c2.3-3.5-2.1-7.5-5.4-5l-86.8,66.5c-8.7-12.3-21.1-21.8-21.8-22.4c-0.8-0.6-2-0.7-2.9-0.2c-0.9,0.5-1.4,1.6-1.3,2.6 c0,0.1,0.6,5.9-2.9,17.6c7.5,2.7,13.9,6,19.3,9.7l-4.5,3.5c-8.8-5.7-20-10.5-34.3-12.6c-17.7-2.6-31.9,1-42.1,10.7c0,0,0,0,0,0 c5.9,3.8,13.1,8.7,17,12.4c0.8,0.7,1.5,1.5,2.2,2.3c-3.1,0.9-6.2,1.9-9.3,2.9c-0.3-0.2-0.5-0.5-0.8-0.7c-1.9-1.7-4.4-3.4-7-5.3 c-5.4-3.8-11.7-8.3-15.8-14c-2.2-3.1-3.8-6.5-4.3-10.4c-0.3-2.4-1-4-2.2-4.9c0,0,0,0,0,0c0,0,0,0,0,0c-0.6-0.5-2.8-2-5.8,0.3 c-2,1.6-4.4,5.3-6.5,10.3c-5.2,12.3-8.7,32.1-1.8,46.1c1.2,2.3,2.4,4.5,3.7,6.6c-0.4,1-0.7,2.1-0.9,3.1c-0.6,3.4-0.9,7.8-1.2,12.7 c-19.8-8.3-50.5-17.5-78.5-10.7c-23.9,5.8-39.4,17.5-49.6,30c7.4-3.1,15.2-5,23.5-5.6c5.6-0.4,16.4,0.8,27.9,2.1 c11.8,1.3,25.3,2.8,32.9,2.4c19.2-0.8,33.7-3.3,43.5-5.6c0,5.4,0.1,11.1,0.4,16.9c0.7,16.8,2.5,34.3,5,46.5 c3.6,17.9,16.5,55.2,31.4,64.6c5.5,3.5,13.5,8.2,22.9,13.4c-2.5,6.4-5.1,15.1-5.1,23.5c0,15.2,5.2,26.6,11,37 c4.6,8.2,9.6,15.7,12.8,24c2.5,6.5-2.7,27.7-5.6,38.9c-1.2,4.5-1.9,7.3-1.7,7c3.7-5.1,7.5-10.8,11.3-16.8 c15.3-24.2,19.4-47,19.5-48l0.2-1.4l-1.1-1c-0.2-0.2-17.2-15.7-18.3-33.3c-0.4-6.9,1-11.5,4.3-13.8c0.5-0.3,1-0.6,1.6-0.9 c7.5,3.7,15,7.3,22.2,10.5c2.8,3.5,9,9.4,11.8,12c3.4,3.2,6.9,7.8,12.2,7.8c5.3,0,15.9,0,21.3,0s13.1,0,17.3-2.1 c4.2-2.1,10.9-5.6,11-12.6c0-1.5,0.4-3.9,0.9-6.8c3.7-4.9,4.1-10.6,4.8-19.2c0.5-5.7,1.7-15.5,3-25.9c2-15.7,4.1-32,3.9-37.9 c-0.2-8.2-1.1-14.3-1.4-16.2C475.3,249.4,479.5,232.4,473.1,225.1z M318,310.6c-13.3-8.4-25.6-44.6-29-61.2 c-4.8-23.9-6.9-68.5-3.9-86.8c2.7-16.7,49-34.5,81.7-35.6c1.9-0.1,3.8-0.1,5.6-0.1c1,0,2,0,3,0c-0.1,4.9,1.3,15.6,13.8,25.5 c13.9,11,30.4,5,30.4,5l12.1-18.7c4.5,3.5,9.4,12.7,13,22.1c-0.9-0.4-1.9-0.7-3.1-0.9c-8.1-1.3-31.6-0.9-24,31.3 c1,4,5.2,9.4,17.2,22.3c2.8,3,5.1,5.3,7,7.2c5.6,5.6,7.4,7.4,7.5,11.8c0,0.3-0.2,1.6-0.4,3c-0.8-0.6-1.9-1.1-3.4-1 c-3.6-0.2-33.7,5.6-42.4,15.1c-1.7,1.9-4.5,2.6-6.7,1.4c-0.1-0.1-0.2-0.1-0.3-0.2c-1.4-0.8-2.3-1.9-2.8-3.5 c-1.3-5.1,2.9-13.2,4.6-16c0.6-1,0.3-2.3-0.6-2.9c-1-0.6-2.3-0.3-2.9,0.6c-0.1,0.2-0.9,1.5-1.9,3.5c-3.3,6.6-8.2,12.2-14.3,16.3 c-9.8,6.6-24,15.2-35.5,18.2c-18,4.7-24.9-8.2-25.2-8.8c-0.5-1-1.8-1.4-2.8-0.9c-1,0.5-1.5,1.8-0.9,2.8 c0.1,0.1,6.3,12.1,21.5,12.1c0.6,0,1.4-0.1,2.2-0.2c4.3-0.5,8.6,0.5,12.3,2.7c3.5,2.1,8,4.7,12.5,7c12.6,6.3,14.7,6.2,19.5,5.4 c1.1-0.2,49.8-2.4,80.1-8.2l3.6,0.2c2.4,0.1,4.3,2.3,4,4.7l0,0.1c-0.2,1.4-1,2.6-2.2,3.3c-2.7,1.5-6.5,3.5-9.9,4.9 c-1.6,0.6-3.3,1.2-5.1,1.6c-5.5,1.3-11.1,1.6-11.1,1.6s-5.4,1.2-13.5,2.1c-3.4,0.4-7.2,0.7-11.3,0.9c-14,0.7-13,1.6-24.8,1 c-2.9-0.1-5.7-0.3-8.3-0.6c-2.5-0.3-3.2,3.4-0.7,4c6.1,1.5,13.3,2.6,21.3,2.5c1,0,1.9,0,2.9,0c12.8-0.1,24.4,7.5,29.4,19.3 c2.1,5,4.1,12,5.4,18.5c1.8,8.4-5.3,16.1-13.8,15.3c-12.5-1.3-26.6-4.8-34.6-8.3C365.3,338.1,332.4,319.8,318,310.6z M448.7,169.2 l1.2,1.9c2.4,4,5.9,10.5,7.9,16.9c3.1,10.4-1.4,24.4-1.4,24.5l-0.5,1.5l1.1,1.1c0,0.1,5,5.2,10.3,11.1l0.1,0.2 c0.6,0.7,1.2,1.3,1.8,2c3.7,4.3,1.9,17-0.1,23.9l-0.2,0.6l0.1,0.6c0,0,0.3,1.5,0.6,3.9c-2.7,0.3-4.7,2.7-4.4,5.5l0.8,7.5l-8.6,0.1 l-13.5-15.3c-1-1.2-1-3,0.2-4c0,0,0,0,0,0c7.1-6.4,8.1-9.5,8.3-10.7c0.9-5.4,1.2-7.4,1.2-8.1c0-6.1-2.9-9-8.7-14.8 c-1.9-1.9-4.2-4.2-6.9-7.1c-0.6-0.6-1.1-1.2-1.7-1.8c2.1,0.6,4.9,1.2,8.5,1.5c8.4,0.7,10.9-1.4,10.9-1.4s1.5-2.7-1.1-6.6 c-2.6-3.9-6.2-6.7-13.2-6.9c-5-0.2-9.5,3.7-11.7,6c-0.9-1-2.9-4.7-3.8-10.9c-1.5-9.7,2.1-14.2,4.7-16.4c4.6-3.9,10.9-7.7,14.4-7.5 c0.9,0.1,1.9,0.2,2.7,0.4C447.8,167.7,448.2,168.4,448.7,169.2z M463.4,332.9c-0.7,8.2-1.1,12.8-3.8,16.5c-2.3,3.1-7.3,0.8-6.6-3 c0.4-2.1,0.7-4.3,0.8-6.4c0.3-10.7-4.9-20.9-6.7-27.7c0,0,0-0.1,0-0.1c-0.9-3.8,1.2-7.7,4.8-9.3c1.6-0.7,3.4-1.6,5.3-2.6 c4.6-2.3,9.9,1.3,9.2,6.4l0,0.1C465.2,317.2,463.9,327.1,463.4,332.9z M385.1,249.4c1.8-1.3,4.4-0.8,5.6,1.2 c0.8,1.4,1.9,2.9,3.4,4.1c4.5,3.7,9.8,3.5,13.2,3.5c3.3,0,5.4-0.6,6-0.8c0,0,0,0,0,0c2.4-0.5,4.3,2,3.1,4.2 c-2.6,4.8-6.1,11.1-6.5,11.4c-0.7,0.5-22.8,5.1-25.6,5.4s-11.6,1.2-18.2-3c-2.8-1.7-5.5-3.7-7.7-5.3c-1.7-1.2-1.4-3.8,0.4-4.7 C368.8,260.4,378.7,253.9,385.1,249.4z M436.8,263.8l8.3,9.1c1.5,1.7,0.5,4.4-1.7,4.7c-5,0.6-10,1.2-14.9,1.7 c-2.3,0.2-3.9-2.3-2.7-4.3c1.9-3,4.3-7,6.5-10.8C433.2,262.6,435.5,262.4,436.8,263.8z M396.4,117.1l83.5-69.1l-76.9,76.9 c-2.5,2.4-6.6,1.6-8.1-1.5h0C393.9,121.2,394.5,118.5,396.4,117.1z'/%3E %3Cpath fill='%23141414' d='M196.6,258.1c-25.6,10.7-45.8,19.2-56.4,48.7c-15.1,42,9.4,88.5,62.5,120.1c-17.4-68,3.5-93.1,22.1-115.3 c6.4-7.7,12.5-15,16.9-23.7c12.9-25.8,12.3-50.5,11.1-62C233.7,242.5,214.1,250.8,196.6,258.1z'/%3E %3C/g%3E %3Cg%3E %3Cpath d='M201.6,477.1h-9.1l-2.8,17.1h-14.3l2.8-17.1h-9.1l-2.8,17.1h-9.3l-1.5,9.1h9.3l-2.3,14h-9.4l-1.5,9.1h9.4l-2.8,17.1h9.1 l2.8-17.1h14.3l-2.8,17.1h9.1l2.8-17.1h9.3l1.5-9.1h-9.3l2.3-14h9.4l1.5-9.1h-9.4L201.6,477.1z M186,517.4h-14.3l2.3-14h14.3 L186,517.4z'/%3E %3Cpolygon points='260.8,505.3 230,505.3 230,477.1 218,477.1 218,543.6 230,543.6 230,515.4 260.8,515.4 260.8,543.6 272.9,543.6 272.9,477.1 260.8,477.1 '/%3E %3Cpath d='M307.1,477.1l-23.4,66.4h12.8l5.5-16.4h25l5.5,16.4h12.8l-23.4-66.4H307.1z M305.3,517.5l9-26.8h0.5l9,26.8H305.3z'/%3E %3Cpath d='M394,480c-3.5-1.9-7.8-2.9-12.9-2.9h-24.9v66.4h12v-22.4H381c5.1,0,9.4-0.9,12.9-2.8s6.2-4.5,7.9-7.8 c1.8-3.3,2.7-7.1,2.7-11.3c0-4.2-0.9-8-2.7-11.3C400.1,484.5,397.4,481.9,394,480z M390.9,505.4c-0.9,1.8-2.3,3.2-4.2,4.3 c-1.9,1-4.3,1.6-7.3,1.6h-11.1v-24h11c3,0,5.5,0.5,7.4,1.5c1.9,1,3.3,2.4,4.2,4.2c0.9,1.8,1.4,3.9,1.4,6.2 S391.8,503.6,390.9,505.4z'/%3E %3Crect x='417.1' y='477.1' width='12' height='66.4'/%3E %3C/g%3E %3C/g%3E %3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'hapi.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'PARAS',\n symbol: 'PARAS',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'paras.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Ref Finance Token',\n symbol: 'REF',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'ref.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Pulse',\n symbol: 'PULSE',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgdmlld0JveD0iMCAwIDIwMCAyMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iMTAwIiBmaWxsPSIjMEYyQUMzIi8+CjxwYXRoIGQ9Ik0xMDMuNTc0IDg0LjU3M0MxMDIuMDUyIDg2LjU4MDggMTAwLjg1MyA4OS4xNDAyIDk5LjY5NzIgOTEuNjU1OUM5OC41NDA5IDk0LjE3MTYgOTcuMzkyIDk2LjY1OTYgOTYuMjE0OSA5OC40MjU1Qzk1LjAzNzggMTAwLjE5MSA5My45Mjg0IDEwMS4wNTggOTIuNzMyNiAxMDEuMDU4QzkxLjI3MDMgMTAxLjA1OCA5MC40NDI1IDEwMC42NDMgODkuNzEwMiA5OS44NjcyQzg4Ljk3NzYgOTkuMDkxNiA4OC40MDY1IDk3LjkwNSA4Ny44NzAzIDk2LjY3MDRDODcuMzMzOSA5NS40MzU4IDg2Ljg0NzcgOTQuMTM1MSA4Ni4wMzA1IDkzLjAzNDlDODUuMjEzMyA5MS45MzQ3IDgzLjkxMDQgOTEuMDI5MSA4Mi4yMTk4IDkxLjAyOTFDODEuMjYzMyA5MS4wMjkxIDgwLjQyMzcgOTEuNDQ1MSA3OS43ODg2IDkyLjAzMkM3OS4xNTM0IDkyLjYxODkgNzguNjkwMSA5My4zOTAxIDc4LjI3NzQgOTQuMjI1OUM3Ny40NTIxIDk1Ljg5NjggNzYuODM1NCA5Ny45NjgyIDc2LjA0MzUgOTkuOTkyN0M3NS4yNTE2IDEwMi4wMTcgNzQuMjc3MSAxMDMuOTk1IDcyLjk1NTUgMTA1LjM4M0M3MS42MzM2IDEwNi43NzIgNjkuOTk5MiAxMDcuNjQgNjcuNTAxOCAxMDcuNjRIMzguMDY2MkMzNy42ODcxIDEwNy42MzUgMzcuMzM0NSAxMDcuODI1IDM3LjE0MzMgMTA4LjEzN0MzNi45NTIyIDEwOC40NDkgMzYuOTUyMiAxMDguODM2IDM3LjE0MzMgMTA5LjE0OEMzNy4zMzQ1IDEwOS40NjEgMzcuNjg3MSAxMDkuNjUxIDM4LjA2NjIgMTA5LjY0Nkg2Ny41MDE4QzcwLjU0NzkgMTA5LjY0NiA3Mi44OTg1IDEwOC40MTYgNzQuNTMyMyAxMDYuN0M3Ni4xNjYyIDEwNC45ODQgNzcuMTg3NSAxMDIuNzk3IDc4LjAxNDYgMTAwLjY4MkM3OC44NDE3IDk4LjU2NzUgNzkuNDc1IDk2LjQ3NDEgODAuMTgyOCA5NS4wNDA3QzgwLjUzNyA5NC4zMjQgODAuODg5MyA5My43OTE5IDgxLjIzNDEgOTMuNDczOEM4MS41Nzg5IDkzLjE1NTIgODEuODI2NiA5My4wMzQ5IDgyLjIxOTggOTMuMDM0OUM4My4yMjc5IDkzLjAzNDkgODMuNzQyNyA5My40NDUzIDg0LjMyMjIgOTQuMjI1OUM4NC45MDE4IDk1LjAwNiA4NS40MTIgOTYuMjEyNyA4NS45NjQ5IDk3LjQ4NTRDODYuNTE3NyA5OC43NTc3IDg3LjA4OTYgMTAwLjA3OCA4OC4xMzMxIDEwMS4xODRDODkuMTc2NiAxMDIuMjg5IDkwLjczNzUgMTAzLjA2NCA5Mi43MzI2IDEwMy4wNjRDOTQuOTkzOCAxMDMuMDY0IDk2LjY1OTEgMTAxLjQ4NiA5Ny45ODg4IDk5LjQ5MTJDOTkuMzE4NSA5Ny40OTYyIDEwMC40NTQgOTQuOTY5NSAxMDEuNjAzIDkyLjQ3MDlDMTAyLjc1MSA4OS45NzE4IDEwMy45NTMgODcuNTE2OSAxMDUuMjgyIDg1Ljc2MzhDMTA2LjYxMSA4NC4wMTA3IDEwNy45MjUgODMuMDA1OCAxMDkuNTUzIDgzLjAwNThDMTEwLjI5NSA4My4wMDU4IDExMC45NDYgODMuMjcyOCAxMTEuNjU2IDgzLjg4MzRDMTEyLjM2NSA4NC40OTM5IDExMy4wNjggODUuNDUxNyAxMTMuNzU4IDg2LjY0MTRDMTE1LjEzOCA4OS4wMjA3IDExNi40NDcgOTIuMzI4OCAxMTcuODMyIDk1LjY2NzVDMTE5LjIxNiA5OS4wMDYyIDEyMC43MTcgMTAyLjM3NiAxMjIuNjk0IDEwNS4wMDdDMTI0LjY3MSAxMDcuNjM4IDEyNy4yMzQgMTA5LjU4MyAxMzAuNTc4IDEwOS41ODNIMTYwLjkzNEMxNjEuMzEzIDEwOS41ODggMTYxLjY2NiAxMDkuMzk4IDE2MS44NTcgMTA5LjA4NkMxNjIuMDQ4IDEwOC43NzMgMTYyLjA0OCAxMDguMzg3IDE2MS44NTcgMTA4LjA3NEMxNjEuNjY2IDEwNy43NjIgMTYxLjMxMyAxMDcuNTcyIDE2MC45MzQgMTA3LjU3N0gxMzAuNTc4QzEyOC4wNjcgMTA3LjU3NyAxMjYuMTcgMTA2LjIzMiAxMjQuNDAyIDEwMy44NzlDMTIyLjYzNCAxMDEuNTI2IDEyMS4xMDggOTguMjgzNyAxMTkuNzM3IDk0Ljk3ODFDMTE4LjM2NiA5MS42NzIxIDExNy4xMDggODguMzA1MiAxMTUuNTk4IDg1LjcwMTJDMTE0Ljg0MyA4NC4zOTkxIDExNC4wOCA4My4yODQ2IDExMy4xMDEgODIuNDQxOEMxMTIuMTIyIDgxLjU5ODcgMTEwLjg4MyA4MSAxMDkuNTUzIDgxQzEwNy4wMzYgODEgMTA1LjA5NiA4Mi41NjUzIDEwMy41NzQgODQuNTczWiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSI1Ii8+Cjwvc3ZnPgo=',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'pulse.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Ether',\n symbol: 'ETH',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'eth.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Aurora',\n symbol: 'AURORA',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 288 288' style='enable-background:new 0 0 288 288;' xml:space='preserve'%3E %3Cstyle type='text/css'%3E .st0%7Bfill:%2370D44B;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E %3Cpath class='st0' d='M144,0L144,0c79.5,0,144,64.5,144,144v0c0,79.5-64.5,144-144,144h0C64.5,288,0,223.5,0,144v0 C0,64.5,64.5,0,144,0z'/%3E %3Cpath class='st1' d='M144,58.8c7.6,0,14.5,4.3,17.9,11.1l56.2,112.5c4.9,9.9,0.9,21.9-9,26.8c-2.8,1.4-5.8,2.1-8.9,2.1H87.8 c-11,0-20-9-20-20c0-3.1,0.7-6.2,2.1-8.9l56.2-112.5C129.5,63,136.4,58.7,144,58.8 M144,45c-12.8,0-24.5,7.2-30.2,18.7L57.6,176.2 c-8.3,16.7-1.6,36.9,15.1,45.3c4.7,2.3,9.9,3.6,15.1,3.6h112.5c18.6,0,33.8-15.1,33.8-33.7c0-5.2-1.2-10.4-3.6-15.1L174.2,63.7 C168.5,52.2,156.8,45,144,45z'/%3E %3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'aurora.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Skyward Finance Token',\n symbol: 'SKYWARD',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'skyward.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked NEAR',\n symbol: 'STNEAR',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 67.79 67.79' version='1.1'%3E%3Cpath style='fill:%23fff' d='M33.934.311a33.9 33.9 0 1 0 33.89 33.9 33.9 33.9 0 0 0-33.89-33.9z' id='path505'%3E%3C/path%3E%3Cpath style='fill:%23ffbd00;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1' d='m11.803 27.8 12.387.359 2.361 5.959 7.616 3.31 8.523-3.322 2.348-5.87 12.269.03L54.822 54.2 31.837 58.86 12.89 52.648z' id='path1051'%3E%3C/path%3E%3Cpath style='fill:%23a0a0ff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1' d='m34.657 12.575-10.43 9.633 1.096 10.01 8.844 5.21 9.785-5.287 1.086-11.33z' id='path1815'%3E%3C/path%3E%3Cpath id='path928' style='fill:%23666;fill-opacity:1' d='M33.928 4.282a29.93 29.93 0 0 1 4.682.367 29.93 29.93 0 0 1 25.244 29.572 29.93 29.93 0 0 1-29.92 29.92 29.93 29.93 0 0 1-.006-59.86zm.729 8.293c-2.03 5.668-8.815 9.76-8.815 14.521 0 4.76 3.912 8.62 8.737 8.62 4.824 0 8.736-3.86 8.736-8.62s-6.707-8.697-8.658-14.521zM37.84 22.67a2.524 2.446 0 0 1 .246.012 2.524 2.446 0 0 1 .246.035 2.524 2.446 0 0 1 .24.059 2.524 2.446 0 0 1 .233.08 2.524 2.446 0 0 1 .225.104 2.524 2.446 0 0 1 .213.123 2.524 2.446 0 0 1 .197.142 2.524 2.446 0 0 1 .183.162 2.524 2.446 0 0 1 .168.178 2.524 2.446 0 0 1 .147.191 2.524 2.446 0 0 1 .127.207 2.524 2.446 0 0 1 .105.217 2.524 2.446 0 0 1 .084.227 2.524 2.446 0 0 1 .06.232 2.524 2.446 0 0 1 .038.237 2.524 2.446 0 0 1 .012.24 2.524 2.446 0 0 1-.086.633 2.524 2.446 0 0 1-.252.59 2.524 2.446 0 0 1-.403.507 2.524 2.446 0 0 1-.521.389 2.524 2.446 0 0 1-.61.244 2.524 2.446 0 0 1-.652.084 2.524 2.446 0 0 1-.654-.084 2.524 2.446 0 0 1-.607-.244 2.524 2.446 0 0 1-.524-.389 2.524 2.446 0 0 1-.4-.508 2.524 2.446 0 0 1-.252-.59 2.524 2.446 0 0 1-.086-.632 2.524 2.446 0 0 1 .086-.633 2.524 2.446 0 0 1 .252-.59 2.524 2.446 0 0 1 .4-.506A2.524 2.446 0 0 1 36.58 23a2.524 2.446 0 0 1 .607-.247 2.524 2.446 0 0 1 .654-.082zM24.19 28.16a16.579 2.485 0 0 0-6.502 1.965 16.579 2.485 0 0 0 7.635 2.093 10.483 10.6 0 0 1-1.133-4.058zm20.848.078a10.483 10.6 0 0 1-1.086 3.904 16.579 2.485 0 0 0 6.894-2.017 16.579 2.485 0 0 0-5.808-1.887zm6.925 3.21c-.455 1.177-4.097 2.154-9.273 2.659a10.483 10.6 0 0 1-8.072 3.861 10.483 10.6 0 0 1-8.067-3.85c-5.276-.506-8.978-1.498-9.398-2.64h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24zm.032 7.323c-.67 1.73-8.22 3.03-17.43 3.03-9.23 0-16.771-1.34-17.381-3h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24zm0 7.21c-.67 1.69-8.22 3.03-17.43 3.03-9.23 0-16.771-1.34-17.381-3h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24z'%3E%3C/path%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'stnear.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Octopus Network Token',\n symbol: 'OCT',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 113.39 113.39' style='enable-background:new 0 0 113.39 113.39;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23014299;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E%3Ccircle class='st0' cx='56.69' cy='56.69' r='56.69'/%3E%3Cg%3E%3Cpath class='st1' d='M44.25,59.41c-1.43,0-2.59,1.16-2.59,2.59v20.28c0,1.43,1.16,2.59,2.59,2.59c1.43,0,2.59-1.16,2.59-2.59V62 C46.84,60.57,45.68,59.41,44.25,59.41z'/%3E%3Cpath class='st1' d='M56.69,59.41c-1.45,0-2.62,1.17-2.62,2.62v26.47c0,1.45,1.17,2.62,2.62,2.62s2.62-1.17,2.62-2.62V62.02 C59.31,60.58,58.14,59.41,56.69,59.41z'/%3E%3Cpath class='st1' d='M79.26,78.87c-0.33,0.15-0.64,0.28-0.95,0.38c0,0-0.01,0-0.01,0c-0.59,0.19-1.13,0.29-1.63,0.31h-0.06 c-1,0.03-1.84-0.27-2.59-0.75c-0.49-0.32-0.91-0.73-1.25-1.23c-0.3-0.43-0.53-0.93-0.71-1.51c0-0.01-0.01-0.02-0.01-0.03 c-0.22-0.74-0.34-1.61-0.34-2.59V62.02c0-1.45-1.17-2.62-2.62-2.62c-1.45,0-2.62,1.17-2.62,2.62v11.43c0,4.5,1.64,8.03,4.63,9.96 c1.5,0.97,3.21,1.45,5.04,1.45c1.68,0,3.45-0.41,5.25-1.22c1.32-0.59,1.9-2.14,1.31-3.46C82.13,78.86,80.57,78.27,79.26,78.87z'/%3E%3Cpath class='st1' d='M68.33,45.9c0-2.15-1.75-3.9-3.9-3.9c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9 C66.58,49.8,68.33,48.05,68.33,45.9z'/%3E%3Cpath class='st1' d='M48.96,41.99c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9s3.9-1.75,3.9-3.9S51.11,41.99,48.96,41.99z'/%3E%3Cpath class='st1' d='M56.69,22.28c-15.17,0-27.52,12.34-27.52,27.52v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 c0-12.26,9.98-22.24,22.24-22.24c12.26,0,22.24,9.98,22.24,22.24v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 C84.21,34.62,71.87,22.28,56.69,22.28z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'oct.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Debio',\n symbol: 'DBIO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIxOTAgOTcgNDIwIDQyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgODAwIDgwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48c3R5bGU+LnN0MHtmaWxsOiMzNjM2MzZ9LnN0M3tmaWxsOiNmZjU2ZTB9PC9zdHlsZT48L2RlZnM+PGNpcmNsZSBjbGFzcz0ic3QzIiBjeD0iNDAwIiBjeT0iMzA3LjM5IiByPSIyMDguNTgiLz48cGF0aCBkPSJNNDczLjk5IDIxMS4zczIuMzQgNTYuMjUtNzcuMzQgOTguNDMtNzAuMzEgOTMuNzQtNzAuMzEgOTMuNzQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNlNmU2ZTY7c3Ryb2tlLXdpZHRoOjM3LjQ5NzU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMzI2LjAxIDIxMS4zcy0yLjM0IDU2LjI1IDc3LjM0IDk4LjQzIDcwLjMxIDkzLjc0IDcwLjMxIDkzLjc0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS13aWR0aDozNy40OTc1O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwIi8+PGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNDAwIiBjeT0iMjE2LjQyIiByPSIyMC40OSIvPjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjQwMCIgY3k9IjM5OC4zNiIgcj0iMjAuNDkiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMzYuMzQyIDY1OC4wNzUpIiBjbGFzcz0ic3QzIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlO2ZvbnQtc2l6ZToxMTIuNDkyNXB4O2ZvbnQtZmFtaWx5OidBcnRlZ3JhU2Fucy1TZW1pQm9sZCciPkRlQmlvPC90ZXh0Pjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'dbio.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Game GEM!!',\n symbol: 'gGEM',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 4,\n id: 'gem.thegame.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Game Gold!!',\n symbol: 'gGOLD',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 2,\n id: 'gold.thegame.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Game Elixir!!',\n symbol: 'gELXR',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 2,\n id: 'elixir.thegame.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USN',\n symbol: 'USN',\n icon:\n \"data:image/svg+xml;charset=UTF-8,%3Csvg width='38' height='38' viewBox='0 0 38 38' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='38' height='38' rx='19' fill='black'/%3E%3Cpath d='M14.8388 10.6601C14.4203 10.1008 13.6748 9.86519 12.9933 10.0768C12.3119 10.2885 11.85 10.8991 11.85 11.5883V14.7648H8V17.9412H11.85V20.0589H8V23.2353H11.85V28H15.15V16.5108L23.1612 27.2165C23.5797 27.7758 24.3252 28.0114 25.0067 27.7997C25.6881 27.5881 26.15 26.9775 26.15 26.2882V23.2353H30V20.0589H26.15V17.9412H30V14.7648H26.15V10.0001H22.85V21.3658L14.8388 10.6601Z' fill='white'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'usdn.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Learn NEAR Club',\n symbol: 'LNC',\n icon:\n 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIACAAIAMBIgACEQEDEQH/xAAZAAADAAMAAAAAAAAAAAAAAAAABgcDBAj/xAAjEAACAgICAgMAAwAAAAAAAAABAgMEBQYAEQcSEyExFCJB/8QAGAEAAgMAAAAAAAAAAAAAAAAAAQMABwj/xAAlEQACAQMDBAIDAAAAAAAAAAABEQMAAgQxQWESIZHwUXGBwfH/2gAMAwEAAhEDEQA/AOqOHNHN5vF67jnyuZtCtVSSKJpCjN00kixoOlBP27qPz/fv64qZDzBq+L8h2/Gt2rk0yVXFJlROK3tVlVhMwhEoPSzeteZgr+vsqMVJ9W6zZHBLKCbLSV38J+GKva+aONC8p/v+U88ORWv5t3fyTFTbwTpWPvxpjMfl8lc2O49SvCLldbENGMwLJ72vidWf7CxB4ifcSDqmaPseS2rXIMtmdYva9kRJLWuY632TDPE5jf436HyxFlJjlAAdCrADvrjZ8OXHt6pEOGGPhjUP3alxZUc9ys78oo/R0rD5E1O3u+oXdboZaPGWrD15oLctU2EikhnjlUtGHQuCYwCPZf394jZDwNc2pdht75uMF3LZ2ji4I72LxQpGhZoT25YLMKySzdN1aVSpJBCOD2shVa7w5IcyaC3ojKDegex1T2HbTtRkxYpruq8MpannbTc1EcB4D3jx3UxaeLPK1fFSpgcfhsxBkcH/AC6V+epWirR5CKFZ42gn+OPpv7uHCQq31GDymeP9XymnarTwed27JbPk0LzXcrfIElmeRy8jKgJEUfsxCRKSqIFUdgd8YuHDPmzZIUpB5QB4ZAZ9+BQhxIoC4wR+SvDXvNf/2Q==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'lnc.factory.tokenhub.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped BTC',\n symbol: 'WBTC',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%23201A2D' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M22.818 9.586l-.6.6a8.494 8.494 0 010 11.464l.6.6a9.352 9.352 0 000-12.678v.014zM10.2 9.638a8.494 8.494 0 0111.464 0l.6-.6a9.352 9.352 0 00-12.678 0l.614.6zm-.562 12.018a8.494 8.494 0 010-11.458l-.6-.6a9.352 9.352 0 000 12.678l.6-.62zm12.018.554a8.494 8.494 0 01-11.464 0l-.6.6a9.352 9.352 0 0012.678 0l-.614-.6zm-1.942-8.286c-.12-1.252-1.2-1.672-2.566-1.8V10.4h-1.056v1.692h-.844V10.4H14.2v1.736h-2.142v1.13s.78-.014.768 0a.546.546 0 01.6.464v4.752a.37.37 0 01-.128.258.366.366 0 01-.272.092c.014.012-.768 0-.768 0l-.2 1.262h2.122v1.764h1.056V20.12h.844v1.73h1.058v-1.744c1.784-.108 3.028-.548 3.184-2.218.126-1.344-.506-1.944-1.516-2.186.614-.302.994-.862.908-1.778zm-1.48 3.756c0 1.312-2.248 1.162-2.964 1.162v-2.328c.716.002 2.964-.204 2.964 1.166zm-.49-3.28c0 1.2-1.876 1.054-2.472 1.054v-2.116c.596 0 2.472-.188 2.472 1.062z'/%3E%3Cpath d='M15.924 26.852C9.89 26.851 5 21.959 5 15.925 5 9.892 9.892 5 15.925 5c6.034 0 10.926 4.89 10.927 10.924a10.926 10.926 0 01-10.928 10.928zm0-21c-5.559.004-10.062 4.513-10.06 10.072.002 5.559 4.51 10.064 10.068 10.064 5.559 0 10.066-4.505 10.068-10.064A10.068 10.068 0 0015.924 5.852z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 8,\n id: 'wbtc.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Huobi BTC',\n symbol: 'HBTC',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'hbtc.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Celo Dollar',\n symbol: 'cUSD',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTEwMCA1MGMwLTI3LjYxNDItMjIuMzg1OC01MC01MC01MHMtNTAgMjIuMzg1OC01MCA1MCAyMi4zODU4IDUwIDUwIDUwIDUwLTIyLjM4NTggNTAtNTB6IiBmaWxsPSIjNDVjZDg1Ii8+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibTY5Ljg4MDUgNjIuNjQzOGMtMS41NjcxIDMuMzkzMS0zLjkzNzUgNi4zNTMyLTYuOTA2MSA4LjYyNDEtMi45Njg1IDIuMjcwOC02LjQ0NTggMy43ODQxLTEwLjEzMDcgNC40MDg3LTMuNjg1LjYyNDYtNy40NjY3LjM0MTctMTEuMDE3Ny0uODI0MS0zLjU1MTEtMS4xNjU4LTYuNzY0Ni0zLjE3OTQtOS4zNjIzLTUuODY2Ni0yLjU5NzgtMi42ODcxLTQuNTAxNS01Ljk2NjktNS41NDY1LTkuNTU1NC0xLjA0NDktMy41ODg1LTEuMTk5Ni03LjM3NzUtLjQ1MDctMTEuMDM5My43NDg5LTMuNjYxNyAyLjM3ODktNy4wODU3IDQuNzQ4OS05Ljk3NTggMi4zNzAxLTIuODkgNS40MDg3LTUuMTU4OSA4Ljg1MjktNi42MTAzbDIuMjY2OCA1LjM3OTJjLTIuNTcgMS4wODMxLTQuODM3NSAyLjc3NjEtNi42MDYgNC45MzI3LTEuNzY4NSAyLjE1NjUtMi45ODQ4IDQuNzExNS0zLjU0MzYgNy40NDM5LS41NTg5IDIuNzMyNC0uNDQzNSA1LjU1OTguMzM2MyA4LjIzNzYuNzc5OCAyLjY3NzcgMi4yMDAzIDUuMTI1MSA0LjEzODggNy4xMzAyIDEuOTM4NCAyLjAwNTIgNC4zMzYzIDMuNTA3OCA2Ljk4NjEgNC4zNzc3czUuNDcxNyAxLjA4MSA4LjIyMTUuNjE0OWMyLjc0OTctLjQ2NjEgNS4zNDQ0LTEuNTk1MyA3LjU1OTUtMy4yODk4IDIuMjE1Mi0xLjY5NDUgMy45ODQtMy45MDMzIDUuMTUzNC02LjQzNTNsNS45MTg5LjMwNDJ6Ii8+PHBhdGggZD0ibTU2LjEwNjEgMjQuNXYtNGg0LjUwMDV2NGMyIDAgNS4xNjY3LjY2NjcgNi41IDF2NC41Yy0xOS0zLTE1LjUwMTEgMy44NDYyLTggNSA2LjcyMTcgMS4wMzM5IDExIDIgMTEuNSA5IC40IDUuNi01LjgzMzMgNy42NjY3LTkgOHYzLjVoLTV2LTMuNWMtMi40IDAtNi42NjY3LTEuNjY2Ny04LjUtMi41di01LjVjNC41IDIuNSAxNyA0LjUgMTcgMHMtMTYuNTAxMS0zLTE4LjAwMDUtMTFjLTEuMDAyMy01LjM0NzUgNS4zMzMzLTcuODMzMyA5LTguNXoiLz48L2c+PC9zdmc+',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'cusd.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'LiNEAR',\n symbol: 'LINEAR',\n icon:\n \"data:image/svg+xml,%3Csvg width='40' height='40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M30.74 28.78c.21-.36.32-.78.32-1.21v-6.33c0-.24-.06-.46-.17-.66-.12-.21-.28-.38-.48-.49l-16.86-9.77c-.35-.2-.73-.31-1.13-.32-.64 0-1.24.26-1.69.72-.45.45-.7 1.07-.71 1.71v6.39c0 .24.06.47.18.67.11.21.28.37.48.48l16.82 9.71c.36.22.77.32 1.19.32.41 0 .82-.12 1.19-.33.36-.21.66-.52.86-.89zm.32-16.27c0-.42-.1-.84-.29-1.21-.2-.38-.49-.7-.85-.93-.36-.22-.78-.34-1.21-.34-.42 0-.84.12-1.21.34l-4.97 2.81c-.04.02-.08.07-.1.12-.03.04-.04.1-.04.14 0 .06.01.11.04.16.02.04.06.08.1.1l8.05 4.62c.05.02.1.04.15.04.05 0 .1-.02.15-.05.04-.02.08-.06.11-.11.02-.04.04-.1.03-.15l.04-5.54zM10.05 27.5c-.01.43.08.86.28 1.23.2.38.49.7.85.93.36.22.78.34 1.2.34.42 0 .83-.12 1.2-.34l4.92-2.85c.04-.02.08-.06.1-.11.03-.04.05-.1.05-.15 0-.05-.02-.11-.05-.15-.02-.05-.06-.09-.1-.12l-8.05-4.6c-.05-.03-.09-.04-.15-.04-.05 0-.1.01-.15.04-.05.02-.08.07-.11.12-.02.04-.04.09-.04.14l.05 5.56z' fill='url(%23paint0_linear_186_370)'/%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_186_370' x1='11.135' y1='11.152' x2='30.145' y2='30.457' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%231BB3CC'/%3E%3Cstop offset='1' stop-color='%23824ACC'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'linear-protocol.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked NEAR',\n symbol: 'STNEAR',\n icon:\n \"data:image/svg+xml,%3Csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='96' height='96' rx='48' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M48.0006 20L41.2575 26.7431L48.0006 33.4862L54.7437 26.7431L48.0006 20ZM37.281 30.7188L30.7144 37.2853L47.9998 54.5707L65.2851 37.2853L58.7186 30.7188L47.9998 41.4376L37.281 30.7188ZM26.7384 41.261L19.9953 48.0041L47.9995 76.0083L76.0037 48.0041L69.2606 41.2611L47.9995 62.5221L26.7384 41.261Z' fill='%23231B51'/%3E%3C/svg%3E\",\n reference: 'https://metapool.app',\n reference_hash: null,\n decimals: 24,\n id: 'meta-v2.pool.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'NearX',\n symbol: 'NearX',\n icon:\n \"data:image/svg+xml,%0A%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3848L21.3848 17.1421L19.3669 15.1243C18.5576 17.0303 17.0303 18.5576 15.1243 19.3669L17.1421 21.3848ZM9.43294 19.5793C7.45322 18.909 5.82115 17.4848 4.87848 15.6484L3.24264 17.2843L7.48528 21.5269L9.43294 19.5793ZM4.63306 8.8757C5.44239 6.96975 6.96975 5.44239 8.8757 4.63306L7.24264 3L3 7.24264L4.63306 8.8757ZM15.6484 4.87848L17.3848 3.14214L21.6274 7.38478L19.5793 9.43294C18.909 7.45322 17.4848 5.82115 15.6484 4.87848Z' fill='black'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E\",\n reference: 'https://near.staderlabs.com',\n reference_hash: null,\n decimals: 24,\n id: 'v2-nearx.staderlabs.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'refLove Finance Token',\n symbol: 'refLove',\n icon:\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyODggMzI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyODggMzI0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzAwQzA4Qjt9Cjwvc3R5bGU+CjxnPgoJPHBhdGggZD0iTTE3My40LDE5MS40VjI2OEgyNTBMMTczLjQsMTkxLjR6IE0xMDcuMiwxMjUuMmwzMCwzMGwzMC4zLTMwLjNWNjkuMmgtNjAuNFYxMjUuMnogTTEwNy4yLDE1Mi4zVjI2OGg2MC40VjE1MmwtMzAuMywzMC4zCgkJTDEwNy4yLDE1Mi4zeiBNMTc3LjEsNjkuMmgtMy43VjExOUwyMTIsODAuNUMyMDEuOCw3My4yLDE4OS42LDY5LjIsMTc3LjEsNjkuMnogTTM4LDE3NS41VjI2OGg2My4zVjE0Ni40bC0xNy4xLTE3LjFMMzgsMTc1LjV6CgkJIE0zOCwxNDguNWw0Ni4yLTQ2LjJsMTcuMSwxNy4xVjY5LjJIMzhWMTQ4LjV6IE0yMzYuOCwxMjguOUwyMzYuOCwxMjguOWMwLTEyLjUtMy45LTI0LjctMTEuMi0zNC44bC01Mi4xLDUydjQyLjRoMy43CgkJQzIxMC4xLDE4OC41LDIzNi44LDE2MS44LDIzNi44LDEyOC45eiIvPgoJPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIyMTAuMiw1NiAyNTAsOTUuOCAyNTAsNTYgCSIvPgo8L2c+Cjwvc3ZnPgo=',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'v010.refve.testnet',\n },\n {\n decimals: 18,\n icon:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAs3SURBVHhe7Z1XqBQ9FMdFsYu999577wUfbCiiPoggFkQsCKJP9t57V7AgimLBjg8qKmLBXrD33hVUEAQ1H7+QXMb9Zndnd+/MJJf7h8Pu3c3Mzua3yTk5SeZmEZkySplADFMmEMOUCcQwZQggHz58EHfu3FF/2a0MAWTjxo2iWbNm6i+7ZT2QW7duiUWLFolixYqJQ4cOqVftlfVAZs6cKdauXSuqV68uKlWqpF61V1YDoUXMmTNHrFu3TtSoUUNCmTBhgnrXTlkL5Nu3b2Ly5MmyuwJIzZo1RaNGjUTx4sXFu3fvVCn7ZC2QVatWiQULFvwPSL169USnTp1UKftkJZCbN2+KGTNmSBiLFy/+BwhWoUIFsX//flXaLlkJZPr06WkwIoE0btxYNGzYUFSsWFGVtkvWATlw4IB05BqGGxAMBz9u3Dh1lD2yCsjXr1/THHk8IDwvVaqUeP36tTraDlkFZOXKldKRO2HEAoKD79ixozraDlkD5Pr16/848nhANBQc/N69e9VZzJc1QCIduRcgGA4eKLbICiD79u37nyN3WiwgvMZ7Y8eOVWczW8YDwZFPmTIlauvA4gHhsUSJEuLFixfqrObKeCArVqxwdeROiwUE43UcfNu2bdVZzZXRQK5duyYduRsEp8UDog1fsnPnTnV2M2U0kFiO3GlegeDgy5cvr85upowFQqg6d+5cVwCR5hUI71NuzJgx6lPMk5FAPn365Doij2ZegWCUIUX/9OlT9WlmyUggy5Yti+vInZYIEAwH37JlS/VpZsk4IJcvX5bTsl5bB5YoEMqRDd62bZv6VHNkHJBp06YlBANLFAiGgy9btqz6VHNkFJBdu3Z5duROSwYIxjEjRoxQn26GjAHy8ePHuCPyaJYsEMozgn/48KG6ivBlDJAlS5Yk5MidlgqQ+vXri+bNm6urCF9GALl48aJ05G6V7cWSBYJxDOu5Nm/erK4mXBkBJBlH7rRUgGAmOfjQgZBbSsaROy1VIBjHDxs2TF1VeAoVyPv37+WI3K2SE7H0AMKxJUuWFHfv3lVXF45CBZKKI3daegDBcPBNmzZVVxeOQgNy/vz5hEfkbsbxAGFtb6pAOL5y5cpye0NYCg1Iqo5c29KlS2WEVKdOHdGkSZOUoeDgS5cura4yeIUCZMeOHWLevHkpASEBScvAB/Xs2VMUKVJE1K1bV44pUgHDcbVq1RJDhgxRVxusAgfy5s0bMXXq1IRgOMsuX75c7gcZP368aN++vez3W7VqJfLnzy8KFCggU+tUKNncZMFwDA6eNcRBK3AgCxculOas8HiG82duffXq1WLkyJGiRYsWokGDBrI1UPHMlQOjaNGisqUUKlRIPrKclLKA0RUdWfnRDNCUD1qBAjl79qyYNWuWa6VHGq0CEGw7oHsaNGiQrCBMg9DmBKJNgylYsKAciQOFfYhUtlcwHEe3GKQCA/Lnzx/PyUMc9Zo1a+SAsV+/fvLXSgXxa3eCiAXECaZw4cISDPPpGijniweG93HwXHtQCgwIk0E4cjcAGhItAf8AuG7dukknzbgAENFgYLGAaNNgKMcibGYNdXdGxUeDgz8aOHCg+hb+KxAgr169kpUcCUKb01GzOJrKonuJB0KbFyBOAw4thgCgdu3aaWAA4AYGB8/a4iAUCBBG405Hrv2Dm6MGhFulx7JEgWjTYHisVq2a/GxapBMGgLguLAj5DuTMmTP/OHLtqPETdAW6u4h01IlYskC06e6MIICROlA0GH19vM51+y1fgfz+/TvNkWtHjR/p27ev7JboJrx2S7EsVSAYUDCgcC4CAEbtXJsGg4PnO/kpX4Fs3bpVwiB0BEz37t09O+pELD2AOE23GM5ZpkwZGeVxraRnBgwYoL6dP/INCCNyfAeOukOHDmmZVLcKTdXSG4jTNBidAaDlXLlyRX3L9JdvQPr06SObvHbU6dUa3MxPINp0d5Y3b16RJ08e9S3TX74Befz4sejcubOoWrWqdNi2AgEEj8DIkiWLdO4PHjxQ3zL95asPQQcPHpSTR/gOv6D4BUQ7+uzZs4usWbOK7du3q2/ln3wHosU+j3LlysmIxa1SUzG/gOTLl0+2ilGjRqlv4b8CA4K+fPkievXqJZt9MgPAaJbeQHT3hA9kJX6QChSI1smTJ+U4RKct3Co5EUsvIHRP2bJlEzlz5hRHjhxRVxusfANy4cIF9Sy6GLnrAZhbRXu1VIEAguiJVuHlfltbtmxRz9JfvgHhxpQMBt++fatecdfPnz/lYIvtAcmOU1IBQi4LEG3atJHXEkssEWK0fvv2bfVK+svXLosJKW4AQ3QSb07h6tWr0uEz+Eq0G0sGCAM+IieOI98WS3///hVDhw4VOXLkkAlRP+W7D9mwYYNMLtJa4n1xRBqe3bIMKL2CSQQI3VPu3Lllq+C64olsNPMnBCJdunRRr/qnQJw6IS/pdypg/vz5cff38YscPny49C9eujGvQCgDiB49eqhPii4WgJPuAQQ+Lqi1v4EAefToUVrWFzCsyWIx2q9fv1QJd92/f1+0bt1aLlaINdqPB4TuCRD80rmtbCzhR8hG66SizvKeOHFClfBXgQBBe/bskfcr0dO1pOFZU3Xs2DFVIrqY/q1SpUpa1tUrELqnXLlySRhe5jKYw2d2kHBcz4OwIjLIXVaBAUF0V5Ezh7Nnz5Z27949VSq6CBDoOphHiQYECDyyTgsQ/fv3V0dH1/Hjx2V6h7wbEAguMH4ABBlBKlAgbneE090Yd21Yv369+P79uyrtrpcvX/6TtIwEorsnlvA8efJEHeUuRuFdu3aVKR2CCCcMnpNyf/78uSodjAIFgk6fPh11txQtCGBebhlO0pLuhKSlBkISEBhMjMXTxIkTZYVzvBOEhgFQriloBQ4EEUrGWhKEryEyu3HjhjoiuggWqDxAeOnrufcW5QkUIkFoGEBiUi0MhQKEeel4q995DyjcZ/Hz58/qSHfRrcTbSUuZdu3ayTEOYawbDIz3iLDiRYB+KRQgiP/3waJrNxjagMI0MK2AKC1ZjR49Wm5/JqEZDQTGe8A4fPiwOjJ4hQYEsS3By/5CwFCOVsWAzatIAhKVed3MQznWEIepUIEg/IUzFI5lgCEgYG1XrKQlyT9CY3wFXZBb5UcaURZ+JWyFDoSs8KRJk2L6E6dRDoB0YyQtneukSGAOHjxYDu70KNut8iONckRcJvzbpNCBIAZmXrcpYBoekRpgyBQzhiE1wkDOKwiMsuSr6BJNkBFAENEU45DIyo9nwGGxNs44ERAY5QlxmQsxRcYAIcxMdKubtmS3RVOe7u3Hjx/qKsKXMUAQA0EiKbdKj2XJAiEC2717t/p0M2QUEETaw0so7LREgVCO8l4Sj0HLOCAIB+81FMYSAUIZQmGSkybKSCAs1I7MCseyRIEwaveSJwtDRgJBR48e9RwKewXC+0x0AdtUGQsEMSL3cnMaL0B4j1wWc/Qmy2ggzG/ruXg3ENq8AmHgyCSZyTIaCLp06VLce8DHA8LrrGDxMnEVtowHgjZt2hR1QguLB4R0Su/evdXZzJYVQJBe25UoELK4Nv1PQ2uAPHv2LKo/iQaEv0mNeFn4bYqsAYL4p5IsGfIChOfMb7Dp1CZZBQTRQiJDYTcgerrWNlkHhHVbkV1XJBAemXDirqe2yTog6Ny5c9LJayhOIBgrS1h1b6OsBIKocB0KO4FwtwVu7WSrrAWC9NouDYQsLstCbZbVQNjmwCwjQFjCwzTuqVOn1Lt2ymogiBk/PafOfbdsl/VAEEBs+gfEsZQhgDChxVKgjKAMASQjKROIYcoEYpgygRglIf4D6lp/+XognSwAAAAASUVORK5CYII=',\n name: 'Ether',\n reference: null,\n reference_hash: null,\n spec: 'ft-1.0.0',\n symbol: 'ETH',\n id: 'aurora',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USDT',\n symbol: 'USDT',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'usdt.itachicara.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USDC',\n symbol: 'USDC',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'usdc.itachicara.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked CORN',\n symbol: 'xCORN',\n icon:\n \"data:image/svg+xml,%3Csvg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.43 32L99.7144 61.4389L150.43 90.8705L201.145 61.4389L150.43 32Z' fill='%235C65A5'/%3E%3Cpath d='M201.146 61.4388L150.431 90.8703L201.146 120.309L251.854 90.8703L201.146 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 61.4388L49 90.8703L99.7152 120.309L150.43 90.8703L99.7152 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M150.43 90.8707L99.7144 120.31L150.43 149.749L201.145 120.31L150.43 90.8707Z' fill='%235C65A5'/%3E%3Cpath d='M99.7152 120.31L49 90.8707V149.749L99.7152 179.187V120.31Z' fill='%235C65A5'/%3E%3Cpath d='M150.43 149.748L99.7144 120.309V179.187L150.43 208.626V149.748Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 179.187L49 149.748V208.626L99.7152 238.058V179.187Z' fill='%233B4274'/%3E%3Cpath d='M150.43 208.626L99.7144 179.187V238.057L150.43 267.496V208.626Z' fill='%235C65A5'/%3E%3Cpath d='M150.431 267.496L201.146 238.057L150.431 208.626V267.496Z' fill='%233B4274'/%3E%3Cpath d='M224.085 213.702L209.447 198.197L194.809 213.702H167.656L195.643 182.183L167.656 150.665H194.809L209.447 166.933L224.085 150.665H251.086L223.175 182.183L251.086 213.702H224.085Z' fill='%233B4274'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'xcorn.corndao.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tether USD',\n symbol: 'USDt',\n icon:\n \"data:image/svg+xml,%3Csvg width='111' height='90' viewBox='0 0 111 90' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.4825 0.862305H88.0496C89.5663 0.862305 90.9675 1.64827 91.7239 2.92338L110.244 34.1419C111.204 35.7609 110.919 37.8043 109.549 39.1171L58.5729 87.9703C56.9216 89.5528 54.2652 89.5528 52.6139 87.9703L1.70699 39.1831C0.305262 37.8398 0.0427812 35.7367 1.07354 34.1077L20.8696 2.82322C21.6406 1.60483 23.0087 0.862305 24.4825 0.862305ZM79.8419 14.8003V23.5597H61.7343V29.6329C74.4518 30.2819 83.9934 32.9475 84.0642 36.1425L84.0638 42.803C83.993 45.998 74.4518 48.6635 61.7343 49.3125V64.2168H49.7105V49.3125C36.9929 48.6635 27.4513 45.998 27.3805 42.803L27.381 36.1425C27.4517 32.9475 36.9929 30.2819 49.7105 29.6329V23.5597H31.6028V14.8003H79.8419ZM55.7224 44.7367C69.2943 44.7367 80.6382 42.4827 83.4143 39.4727C81.0601 36.9202 72.5448 34.9114 61.7343 34.3597V40.7183C59.7966 40.8172 57.7852 40.8693 55.7224 40.8693C53.6595 40.8693 51.6481 40.8172 49.7105 40.7183V34.3597C38.8999 34.9114 30.3846 36.9202 28.0304 39.4727C30.8066 42.4827 42.1504 44.7367 55.7224 44.7367Z' fill='%23009393'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'usdtt.fakes.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked CORN',\n symbol: 'xCORN',\n icon:\n \"data:image/svg+xml,%3Csvg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.43 32L99.7144 61.4389L150.43 90.8705L201.145 61.4389L150.43 32Z' fill='%235C65A5'/%3E%3Cpath d='M201.146 61.4388L150.431 90.8703L201.146 120.309L251.854 90.8703L201.146 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 61.4388L49 90.8703L99.7152 120.309L150.43 90.8703L99.7152 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M150.43 90.8707L99.7144 120.31L150.43 149.749L201.145 120.31L150.43 90.8707Z' fill='%235C65A5'/%3E%3Cpath d='M99.7152 120.31L49 90.8707V149.749L99.7152 179.187V120.31Z' fill='%235C65A5'/%3E%3Cpath d='M150.43 149.748L99.7144 120.309V179.187L150.43 208.626V149.748Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 179.187L49 149.748V208.626L99.7152 238.058V179.187Z' fill='%233B4274'/%3E%3Cpath d='M150.43 208.626L99.7144 179.187V238.057L150.43 267.496V208.626Z' fill='%235C65A5'/%3E%3Cpath d='M150.431 267.496L201.146 238.057L150.431 208.626V267.496Z' fill='%233B4274'/%3E%3Cpath d='M224.085 213.702L209.447 198.197L194.809 213.702H167.656L195.643 182.183L167.656 150.665H194.809L209.447 166.933L224.085 150.665H251.086L223.175 182.183L251.086 213.702H224.085Z' fill='%233B4274'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'xcorn.v1.corndao.testnet',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tiptoken',\n symbol: 'TT',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'tiptoken.testnet',\n },\n];\n\nexport const DefaultMainnetTokenList = [\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped NEAR fungible token',\n symbol: 'wNEAR',\n icon: null,\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'wrap.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USD Coin',\n symbol: 'USDC',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 6,\n id: 'a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tether USD',\n symbol: 'USDT.e',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2326A17B'/%3E%3Cpath fill='%23FFF' d='M17.922 17.383v-.002c-.11.008-.677.042-1.942.042-1.01 0-1.721-.03-1.971-.042v.003c-3.888-.171-6.79-.848-6.79-1.658 0-.809 2.902-1.486 6.79-1.66v2.644c.254.018.982.061 1.988.061 1.207 0 1.812-.05 1.925-.06v-2.643c3.88.173 6.775.85 6.775 1.658 0 .81-2.895 1.485-6.775 1.657m0-3.59v-2.366h5.414V7.819H8.595v3.608h5.414v2.365c-4.4.202-7.709 1.074-7.709 2.118 0 1.044 3.309 1.915 7.709 2.118v7.582h3.913v-7.584c4.393-.202 7.694-1.073 7.694-2.116 0-1.043-3.301-1.914-7.694-2.117'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 6,\n id: 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Dai Stablecoin',\n symbol: 'DAI',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23F4B731' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cpath d='M9.277 8h6.552c3.985 0 7.006 2.116 8.13 5.194H26v1.861h-1.611c.031.294.047.594.047.898v.046c0 .342-.02.68-.06 1.01H26v1.86h-2.08C22.767 21.905 19.77 24 15.83 24H9.277v-5.131H7v-1.86h2.277v-1.954H7v-1.86h2.277V8zm1.831 10.869v3.462h4.72c2.914 0 5.078-1.387 6.085-3.462H11.108zm11.366-1.86H11.108v-1.954h11.37c.041.307.063.622.063.944v.045c0 .329-.023.65-.067.964zM15.83 9.665c2.926 0 5.097 1.424 6.098 3.528h-10.82V9.666h4.72z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped Ether',\n symbol: 'WETH',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: '1INCH Token',\n symbol: '1INCH',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '111111111117dc0aa78b770fa6a738034120c302.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Graph Token',\n symbol: 'GRT',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'c944e90c64b2c07662a292be6244bdf05cda44a7.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Skyward Finance Token',\n symbol: 'SKYWARD',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.skyward.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Banana',\n symbol: 'BANANA',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🍌%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'berryclub.ek.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Cucumber',\n symbol: 'CUCUMBER',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🥒%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'farm.berryclub.ek.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'HuobiToken',\n symbol: 'HT',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '6f259637dcd74c767781e37bc6133cd6a68aa161.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Gitcoin',\n symbol: 'GTC',\n icon: null,\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'de30da39c46104798bb5aa3fe8b9e0e1f348163f.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Uniswap',\n symbol: 'UNI',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23FF007A' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M12.261 5.767c-.285-.044-.297-.05-.163-.07.257-.04.865.015 1.284.114.977.233 1.866.828 2.816 1.885l.252.28.36-.057c1.52-.245 3.067-.05 4.36.547.356.164.917.491.987.576.023.026.064.199.091.383.096.637.048 1.125-.146 1.49-.106.198-.112.26-.041.43a.416.416 0 00.372.236c.322 0 .668-.52.828-1.243l.064-.287.126.143c.692.784 1.235 1.853 1.328 2.613l.025.199-.117-.18c-.2-.31-.4-.522-.658-.693-.464-.307-.955-.411-2.255-.48-1.174-.062-1.839-.162-2.497-.377-1.121-.365-1.686-.852-3.018-2.599-.591-.776-.957-1.205-1.32-1.55-.827-.786-1.639-1.198-2.678-1.36z' fill-rule='nonzero'/%3E%3Cpath d='M22.422 7.5c.03-.52.1-.863.242-1.176.056-.124.109-.226.117-.226a.773.773 0 01-.055.204c-.103.304-.12.72-.049 1.203.09.614.142.702.79 1.365.305.311.659.703.787.872l.233.306-.233-.219c-.285-.267-.941-.79-1.086-.864-.097-.05-.112-.049-.172.01-.055.056-.067.138-.074.529-.012.608-.095 1-.296 1.39-.108.21-.125.166-.027-.073.073-.178.08-.256.08-.845 0-1.184-.141-1.468-.966-1.956a9.046 9.046 0 00-.764-.396 2.916 2.916 0 01-.374-.182c.023-.023.827.211 1.15.336.482.185.561.209.62.186.039-.015.058-.129.077-.464zm-9.607 2.025c-.579-.797-.937-2.02-.86-2.934l.024-.283.132.024c.248.045.675.204.875.326.548.333.786.772 1.027 1.898.071.33.164.703.207.83.068.203.328.678.54.987.152.222.05.327-.286.297-.514-.047-1.21-.527-1.659-1.145zm8.905 5.935c-2.707-1.09-3.66-2.036-3.66-3.632 0-.235.008-.427.017-.427.01 0 .115.077.233.172.549.44 1.164.628 2.865.876 1.001.147 1.565.265 2.085.437 1.652.548 2.674 1.66 2.918 3.174.07.44.029 1.265-.086 1.7-.09.344-.367.963-.44.987-.02.006-.04-.071-.046-.178-.028-.568-.315-1.122-.798-1.537-.549-.471-1.286-.847-3.089-1.572zm-1.9.452a4.808 4.808 0 00-.131-.572l-.07-.206.129.144c.177.2.318.454.436.794.091.259.101.336.1.757 0 .414-.011.5-.095.734a2.32 2.32 0 01-.571.908c-.495.504-1.13.782-2.048.898-.16.02-.624.054-1.033.075-1.03.054-1.707.164-2.316.378a.488.488 0 01-.174.042c-.024-.025.39-.272.733-.437.483-.233.963-.36 2.04-.539.532-.089 1.082-.196 1.221-.239 1.318-.404 1.995-1.446 1.778-2.737z' fill-rule='nonzero'/%3E%3Cpath d='M21.06 18.116c-.36-.773-.442-1.52-.245-2.216.021-.074.055-.135.075-.135a.73.73 0 01.189.102c.166.112.498.3 1.383.782 1.105.603 1.735 1.07 2.164 1.602.375.467.607.999.719 1.647.063.367.026 1.25-.068 1.62-.297 1.166-.988 2.082-1.972 2.616a2.53 2.53 0 01-.288.143c-.014 0 .038-.133.117-.297.33-.692.369-1.366.118-2.116-.153-.459-.466-1.02-1.097-1.966-.734-1.1-.914-1.394-1.095-1.782zm-10.167 4.171c1.005-.848 2.254-1.45 3.393-1.635.49-.08 1.308-.048 1.762.068.728.186 1.38.604 1.719 1.101.33.486.473.91.62 1.852.06.372.123.745.142.83.11.488.327.879.595 1.075.425.311 1.158.33 1.878.05a.981.981 0 01.236-.074c.026.026-.336.269-.592.397a2.014 2.014 0 01-.983.238c-.66 0-1.208-.335-1.665-1.02-.09-.135-.292-.538-.45-.897-.482-1.1-.72-1.436-1.28-1.803-.489-.32-1.118-.377-1.591-.145-.622.305-.795 1.1-.35 1.603.177.2.507.373.777.406a.83.83 0 00.939-.83c0-.332-.128-.52-.448-.665-.437-.197-.907.033-.905.444.001.175.077.285.253.365.113.05.115.055.023.036-.401-.084-.495-.567-.172-.888.387-.386 1.188-.216 1.463.31.116.221.129.662.028.928-.225.595-.883.907-1.55.737-.454-.116-.639-.241-1.186-.805-.951-.98-1.32-1.17-2.692-1.384l-.263-.041.3-.253z' fill-rule='nonzero'/%3E%3Cpath d='M6.196 3.35l.096.117c3.708 4.54 5.624 6.896 5.746 7.064.2.278.125.527-.219.723-.191.109-.585.219-.781.219-.223 0-.474-.107-.657-.28-.129-.123-.65-.901-1.853-2.768a188.53 188.53 0 00-1.712-2.633c-.049-.046-.048-.045 1.618 2.936 1.046 1.872 1.4 2.533 1.4 2.622 0 .18-.05.274-.272.522-.37.413-.535.877-.655 1.837-.134 1.077-.51 1.837-1.554 3.138-.61.762-.71.902-.865 1.209-.194.386-.247.603-.269 1.091-.023.516.022.85.18 1.343.138.432.282.718.65 1.288.318.493.501.859.501 1.002 0 .114.022.114.515.003 1.179-.266 2.136-.735 2.675-1.309.333-.355.411-.551.414-1.038.001-.318-.01-.385-.096-.568-.14-.298-.395-.546-.957-.93-.737-.504-1.051-.91-1.138-1.467-.072-.457.011-.78.419-1.634.421-.884.526-1.26.597-2.151.045-.576.108-.803.274-.985.172-.19.328-.255.755-.313.696-.095 1.139-.275 1.503-.61.316-.292.448-.573.468-.995l.016-.32-.177-.206c-.254-.296-2.355-2.614-6.304-6.956l-.106-.115-.212.165zM7.91 19.732a.566.566 0 00-.174-.746c-.228-.152-.583-.08-.583.118 0 .06.033.104.108.143.127.065.136.139.037.288-.101.152-.093.286.023.377.186.146.45.065.59-.18zm5.524-7.176c-.327.1-.644.447-.743.81-.06.221-.026.61.064.73.145.194.286.245.666.242.744-.005 1.39-.324 1.466-.723.062-.327-.223-.78-.614-.98-.202-.102-.631-.143-.839-.079zm.87.68c.115-.163.064-.34-.13-.458-.372-.227-.934-.04-.934.312 0 .174.293.365.561.365.18 0 .424-.107.503-.219z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '1f9840a85d5af5bf1d1762f925bdaddc4201f984.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wrapped BTC',\n symbol: 'WBTC',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%23201A2D' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M22.818 9.586l-.6.6a8.494 8.494 0 010 11.464l.6.6a9.352 9.352 0 000-12.678v.014zM10.2 9.638a8.494 8.494 0 0111.464 0l.6-.6a9.352 9.352 0 00-12.678 0l.614.6zm-.562 12.018a8.494 8.494 0 010-11.458l-.6-.6a9.352 9.352 0 000 12.678l.6-.62zm12.018.554a8.494 8.494 0 01-11.464 0l-.6.6a9.352 9.352 0 0012.678 0l-.614-.6zm-1.942-8.286c-.12-1.252-1.2-1.672-2.566-1.8V10.4h-1.056v1.692h-.844V10.4H14.2v1.736h-2.142v1.13s.78-.014.768 0a.546.546 0 01.6.464v4.752a.37.37 0 01-.128.258.366.366 0 01-.272.092c.014.012-.768 0-.768 0l-.2 1.262h2.122v1.764h1.056V20.12h.844v1.73h1.058v-1.744c1.784-.108 3.028-.548 3.184-2.218.126-1.344-.506-1.944-1.516-2.186.614-.302.994-.862.908-1.778zm-1.48 3.756c0 1.312-2.248 1.162-2.964 1.162v-2.328c.716.002 2.964-.204 2.964 1.166zm-.49-3.28c0 1.2-1.876 1.054-2.472 1.054v-2.116c.596 0 2.472-.188 2.472 1.062z'/%3E%3Cpath d='M15.924 26.852C9.89 26.851 5 21.959 5 15.925 5 9.892 9.892 5 15.925 5c6.034 0 10.926 4.89 10.927 10.924a10.926 10.926 0 01-10.928 10.928zm0-21c-5.559.004-10.062 4.513-10.06 10.072.002 5.559 4.51 10.064 10.068 10.064 5.559 0 10.066-4.505 10.068-10.064A10.068 10.068 0 0015.924 5.852z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 8,\n id: '2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'ChainLink Token',\n symbol: 'LINK',\n icon:\n \"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%232A5ADA' cx='16' cy='16' r='16'/%3E%3Cpath d='M16 6l-1.799 1.055L9.3 9.945 7.5 11v10l1.799 1.055 4.947 2.89L16.045 26l1.799-1.055 4.857-2.89L24.5 21V11l-1.799-1.055-4.902-2.89L16 6zm-4.902 12.89v-5.78L16 10.22l4.902 2.89v5.78L16 21.78l-4.902-2.89z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '514910771af9ca656af840dff83e8264ecf986ca.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Octopus Network Token',\n symbol: 'OCT',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 113.39 113.39' style='enable-background:new 0 0 113.39 113.39;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23014299;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E%3Ccircle class='st0' cx='56.69' cy='56.69' r='56.69'/%3E%3Cg%3E%3Cpath class='st1' d='M44.25,59.41c-1.43,0-2.59,1.16-2.59,2.59v20.28c0,1.43,1.16,2.59,2.59,2.59c1.43,0,2.59-1.16,2.59-2.59V62 C46.84,60.57,45.68,59.41,44.25,59.41z'/%3E%3Cpath class='st1' d='M56.69,59.41c-1.45,0-2.62,1.17-2.62,2.62v26.47c0,1.45,1.17,2.62,2.62,2.62s2.62-1.17,2.62-2.62V62.02 C59.31,60.58,58.14,59.41,56.69,59.41z'/%3E%3Cpath class='st1' d='M79.26,78.87c-0.33,0.15-0.64,0.28-0.95,0.38c0,0-0.01,0-0.01,0c-0.59,0.19-1.13,0.29-1.63,0.31h-0.06 c-1,0.03-1.84-0.27-2.59-0.75c-0.49-0.32-0.91-0.73-1.25-1.23c-0.3-0.43-0.53-0.93-0.71-1.51c0-0.01-0.01-0.02-0.01-0.03 c-0.22-0.74-0.34-1.61-0.34-2.59V62.02c0-1.45-1.17-2.62-2.62-2.62c-1.45,0-2.62,1.17-2.62,2.62v11.43c0,4.5,1.64,8.03,4.63,9.96 c1.5,0.97,3.21,1.45,5.04,1.45c1.68,0,3.45-0.41,5.25-1.22c1.32-0.59,1.9-2.14,1.31-3.46C82.13,78.86,80.57,78.27,79.26,78.87z'/%3E%3Cpath class='st1' d='M68.33,45.9c0-2.15-1.75-3.9-3.9-3.9c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9 C66.58,49.8,68.33,48.05,68.33,45.9z'/%3E%3Cpath class='st1' d='M48.96,41.99c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9s3.9-1.75,3.9-3.9S51.11,41.99,48.96,41.99z'/%3E%3Cpath class='st1' d='M56.69,22.28c-15.17,0-27.52,12.34-27.52,27.52v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 c0-12.26,9.98-22.24,22.24-22.24c12.26,0,22.24,9.98,22.24,22.24v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 C84.21,34.62,71.87,22.28,56.69,22.28z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'f5cfbc74057c610c8ef151a439252680ac68c6dc.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Ref Finance Token',\n symbol: 'REF',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.v2.ref-finance.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'HAPI',\n symbol: 'HAPI',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='Layer_2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='600px' height='600px' viewBox='0 0 600 600' enable-background='new 0 0 600 600' xml:space='preserve'%3E %3Cg%3E %3Cg%3E %3Cpath fill='%23141414' d='M263.7,122.8c-3.6,0.3-7.1,0.9-10.7,1.8c-24.5,6-40.3,18.1-50.4,31c24.5-4.7,49.9,1.3,67.3,7.4 c0.5,0.2,1,0.4,1.6,0.6c-2.7-4.2-5.2-9-7.2-14.4C261.2,141.1,261.6,131.6,263.7,122.8z'/%3E %3Cpath fill='%23141414' d='M201.2,197.7c-9.8-1.1-19.1-2.1-24.6-2.1c-0.7,0-1.4,0-2,0.1c-38.1,2.6-67.2,37.3-69.1,82.4 c-1.4,32.2,13.5,53.1,23.3,63.4c-1.5-12.5-0.1-25,4.3-37.3c11.7-32.6,34.3-42.1,60.6-53.1c10.8-4.5,22.5-9.5,34.3-16.6l50.1-39.6 c-10.1,2.2-24.4,4.5-42.9,5.3C227.1,200.6,213.9,199.1,201.2,197.7z'/%3E %3Cpath fill='%23141414' d='M319.1,176.5c-0.5,1.1,0.9,2.1,1.8,1.2c5.3-5.4,16.3-14.3,30.8-14.2c15.6,0.1,35.5,10.2,40.5,22.1 c4,9.8-6.6,16.5-6.6,16.5l0,0c-2.5-2.7-8-6.3-18.2-6.6c-15-0.5-25.3,12.1-24.1,12.9c7.5,4.7,17.3,3.7,23.1,3.5 c5.8-0.2,15.1-2.5,17.8-3.5c4.7-1.8,11.7-7.8,14.9-16.1c2.5-6.5,8.4-28.7-25.2-34.4C352.7,154.3,327,159.6,319.1,176.5z'/%3E %3Cpath fill='%23141414' d='M473.1,225.1c-0.5-0.6-1.1-1.3-1.7-2l-0.3-0.3c-3.9-4.4-7.6-8.3-9.4-10.1c1.2-4.2,4-16.2,1-26.1 c-2.3-7.7-6.8-15.5-9.2-19.4l-0.8-1.2h0c-0.4-0.6-0.8-1.2-1.1-1.7c-0.3-0.4-0.5-0.7-0.6-1l-0.2-0.7c-2.5-7-8.6-22.3-16.4-28.1 l59.4-91.7c2.3-3.5-2.1-7.5-5.4-5l-86.8,66.5c-8.7-12.3-21.1-21.8-21.8-22.4c-0.8-0.6-2-0.7-2.9-0.2c-0.9,0.5-1.4,1.6-1.3,2.6 c0,0.1,0.6,5.9-2.9,17.6c7.5,2.7,13.9,6,19.3,9.7l-4.5,3.5c-8.8-5.7-20-10.5-34.3-12.6c-17.7-2.6-31.9,1-42.1,10.7c0,0,0,0,0,0 c5.9,3.8,13.1,8.7,17,12.4c0.8,0.7,1.5,1.5,2.2,2.3c-3.1,0.9-6.2,1.9-9.3,2.9c-0.3-0.2-0.5-0.5-0.8-0.7c-1.9-1.7-4.4-3.4-7-5.3 c-5.4-3.8-11.7-8.3-15.8-14c-2.2-3.1-3.8-6.5-4.3-10.4c-0.3-2.4-1-4-2.2-4.9c0,0,0,0,0,0c0,0,0,0,0,0c-0.6-0.5-2.8-2-5.8,0.3 c-2,1.6-4.4,5.3-6.5,10.3c-5.2,12.3-8.7,32.1-1.8,46.1c1.2,2.3,2.4,4.5,3.7,6.6c-0.4,1-0.7,2.1-0.9,3.1c-0.6,3.4-0.9,7.8-1.2,12.7 c-19.8-8.3-50.5-17.5-78.5-10.7c-23.9,5.8-39.4,17.5-49.6,30c7.4-3.1,15.2-5,23.5-5.6c5.6-0.4,16.4,0.8,27.9,2.1 c11.8,1.3,25.3,2.8,32.9,2.4c19.2-0.8,33.7-3.3,43.5-5.6c0,5.4,0.1,11.1,0.4,16.9c0.7,16.8,2.5,34.3,5,46.5 c3.6,17.9,16.5,55.2,31.4,64.6c5.5,3.5,13.5,8.2,22.9,13.4c-2.5,6.4-5.1,15.1-5.1,23.5c0,15.2,5.2,26.6,11,37 c4.6,8.2,9.6,15.7,12.8,24c2.5,6.5-2.7,27.7-5.6,38.9c-1.2,4.5-1.9,7.3-1.7,7c3.7-5.1,7.5-10.8,11.3-16.8 c15.3-24.2,19.4-47,19.5-48l0.2-1.4l-1.1-1c-0.2-0.2-17.2-15.7-18.3-33.3c-0.4-6.9,1-11.5,4.3-13.8c0.5-0.3,1-0.6,1.6-0.9 c7.5,3.7,15,7.3,22.2,10.5c2.8,3.5,9,9.4,11.8,12c3.4,3.2,6.9,7.8,12.2,7.8c5.3,0,15.9,0,21.3,0s13.1,0,17.3-2.1 c4.2-2.1,10.9-5.6,11-12.6c0-1.5,0.4-3.9,0.9-6.8c3.7-4.9,4.1-10.6,4.8-19.2c0.5-5.7,1.7-15.5,3-25.9c2-15.7,4.1-32,3.9-37.9 c-0.2-8.2-1.1-14.3-1.4-16.2C475.3,249.4,479.5,232.4,473.1,225.1z M318,310.6c-13.3-8.4-25.6-44.6-29-61.2 c-4.8-23.9-6.9-68.5-3.9-86.8c2.7-16.7,49-34.5,81.7-35.6c1.9-0.1,3.8-0.1,5.6-0.1c1,0,2,0,3,0c-0.1,4.9,1.3,15.6,13.8,25.5 c13.9,11,30.4,5,30.4,5l12.1-18.7c4.5,3.5,9.4,12.7,13,22.1c-0.9-0.4-1.9-0.7-3.1-0.9c-8.1-1.3-31.6-0.9-24,31.3 c1,4,5.2,9.4,17.2,22.3c2.8,3,5.1,5.3,7,7.2c5.6,5.6,7.4,7.4,7.5,11.8c0,0.3-0.2,1.6-0.4,3c-0.8-0.6-1.9-1.1-3.4-1 c-3.6-0.2-33.7,5.6-42.4,15.1c-1.7,1.9-4.5,2.6-6.7,1.4c-0.1-0.1-0.2-0.1-0.3-0.2c-1.4-0.8-2.3-1.9-2.8-3.5 c-1.3-5.1,2.9-13.2,4.6-16c0.6-1,0.3-2.3-0.6-2.9c-1-0.6-2.3-0.3-2.9,0.6c-0.1,0.2-0.9,1.5-1.9,3.5c-3.3,6.6-8.2,12.2-14.3,16.3 c-9.8,6.6-24,15.2-35.5,18.2c-18,4.7-24.9-8.2-25.2-8.8c-0.5-1-1.8-1.4-2.8-0.9c-1,0.5-1.5,1.8-0.9,2.8 c0.1,0.1,6.3,12.1,21.5,12.1c0.6,0,1.4-0.1,2.2-0.2c4.3-0.5,8.6,0.5,12.3,2.7c3.5,2.1,8,4.7,12.5,7c12.6,6.3,14.7,6.2,19.5,5.4 c1.1-0.2,49.8-2.4,80.1-8.2l3.6,0.2c2.4,0.1,4.3,2.3,4,4.7l0,0.1c-0.2,1.4-1,2.6-2.2,3.3c-2.7,1.5-6.5,3.5-9.9,4.9 c-1.6,0.6-3.3,1.2-5.1,1.6c-5.5,1.3-11.1,1.6-11.1,1.6s-5.4,1.2-13.5,2.1c-3.4,0.4-7.2,0.7-11.3,0.9c-14,0.7-13,1.6-24.8,1 c-2.9-0.1-5.7-0.3-8.3-0.6c-2.5-0.3-3.2,3.4-0.7,4c6.1,1.5,13.3,2.6,21.3,2.5c1,0,1.9,0,2.9,0c12.8-0.1,24.4,7.5,29.4,19.3 c2.1,5,4.1,12,5.4,18.5c1.8,8.4-5.3,16.1-13.8,15.3c-12.5-1.3-26.6-4.8-34.6-8.3C365.3,338.1,332.4,319.8,318,310.6z M448.7,169.2 l1.2,1.9c2.4,4,5.9,10.5,7.9,16.9c3.1,10.4-1.4,24.4-1.4,24.5l-0.5,1.5l1.1,1.1c0,0.1,5,5.2,10.3,11.1l0.1,0.2 c0.6,0.7,1.2,1.3,1.8,2c3.7,4.3,1.9,17-0.1,23.9l-0.2,0.6l0.1,0.6c0,0,0.3,1.5,0.6,3.9c-2.7,0.3-4.7,2.7-4.4,5.5l0.8,7.5l-8.6,0.1 l-13.5-15.3c-1-1.2-1-3,0.2-4c0,0,0,0,0,0c7.1-6.4,8.1-9.5,8.3-10.7c0.9-5.4,1.2-7.4,1.2-8.1c0-6.1-2.9-9-8.7-14.8 c-1.9-1.9-4.2-4.2-6.9-7.1c-0.6-0.6-1.1-1.2-1.7-1.8c2.1,0.6,4.9,1.2,8.5,1.5c8.4,0.7,10.9-1.4,10.9-1.4s1.5-2.7-1.1-6.6 c-2.6-3.9-6.2-6.7-13.2-6.9c-5-0.2-9.5,3.7-11.7,6c-0.9-1-2.9-4.7-3.8-10.9c-1.5-9.7,2.1-14.2,4.7-16.4c4.6-3.9,10.9-7.7,14.4-7.5 c0.9,0.1,1.9,0.2,2.7,0.4C447.8,167.7,448.2,168.4,448.7,169.2z M463.4,332.9c-0.7,8.2-1.1,12.8-3.8,16.5c-2.3,3.1-7.3,0.8-6.6-3 c0.4-2.1,0.7-4.3,0.8-6.4c0.3-10.7-4.9-20.9-6.7-27.7c0,0,0-0.1,0-0.1c-0.9-3.8,1.2-7.7,4.8-9.3c1.6-0.7,3.4-1.6,5.3-2.6 c4.6-2.3,9.9,1.3,9.2,6.4l0,0.1C465.2,317.2,463.9,327.1,463.4,332.9z M385.1,249.4c1.8-1.3,4.4-0.8,5.6,1.2 c0.8,1.4,1.9,2.9,3.4,4.1c4.5,3.7,9.8,3.5,13.2,3.5c3.3,0,5.4-0.6,6-0.8c0,0,0,0,0,0c2.4-0.5,4.3,2,3.1,4.2 c-2.6,4.8-6.1,11.1-6.5,11.4c-0.7,0.5-22.8,5.1-25.6,5.4s-11.6,1.2-18.2-3c-2.8-1.7-5.5-3.7-7.7-5.3c-1.7-1.2-1.4-3.8,0.4-4.7 C368.8,260.4,378.7,253.9,385.1,249.4z M436.8,263.8l8.3,9.1c1.5,1.7,0.5,4.4-1.7,4.7c-5,0.6-10,1.2-14.9,1.7 c-2.3,0.2-3.9-2.3-2.7-4.3c1.9-3,4.3-7,6.5-10.8C433.2,262.6,435.5,262.4,436.8,263.8z M396.4,117.1l83.5-69.1l-76.9,76.9 c-2.5,2.4-6.6,1.6-8.1-1.5h0C393.9,121.2,394.5,118.5,396.4,117.1z'/%3E %3Cpath fill='%23141414' d='M196.6,258.1c-25.6,10.7-45.8,19.2-56.4,48.7c-15.1,42,9.4,88.5,62.5,120.1c-17.4-68,3.5-93.1,22.1-115.3 c6.4-7.7,12.5-15,16.9-23.7c12.9-25.8,12.3-50.5,11.1-62C233.7,242.5,214.1,250.8,196.6,258.1z'/%3E %3C/g%3E %3Cg%3E %3Cpath d='M201.6,477.1h-9.1l-2.8,17.1h-14.3l2.8-17.1h-9.1l-2.8,17.1h-9.3l-1.5,9.1h9.3l-2.3,14h-9.4l-1.5,9.1h9.4l-2.8,17.1h9.1 l2.8-17.1h14.3l-2.8,17.1h9.1l2.8-17.1h9.3l1.5-9.1h-9.3l2.3-14h9.4l1.5-9.1h-9.4L201.6,477.1z M186,517.4h-14.3l2.3-14h14.3 L186,517.4z'/%3E %3Cpolygon points='260.8,505.3 230,505.3 230,477.1 218,477.1 218,543.6 230,543.6 230,515.4 260.8,515.4 260.8,543.6 272.9,543.6 272.9,477.1 260.8,477.1 '/%3E %3Cpath d='M307.1,477.1l-23.4,66.4h12.8l5.5-16.4h25l5.5,16.4h12.8l-23.4-66.4H307.1z M305.3,517.5l9-26.8h0.5l9,26.8H305.3z'/%3E %3Cpath d='M394,480c-3.5-1.9-7.8-2.9-12.9-2.9h-24.9v66.4h12v-22.4H381c5.1,0,9.4-0.9,12.9-2.8s6.2-4.5,7.9-7.8 c1.8-3.3,2.7-7.1,2.7-11.3c0-4.2-0.9-8-2.7-11.3C400.1,484.5,397.4,481.9,394,480z M390.9,505.4c-0.9,1.8-2.3,3.2-4.2,4.3 c-1.9,1-4.3,1.6-7.3,1.6h-11.1v-24h11c3,0,5.5,0.5,7.4,1.5c1.9,1,3.3,2.4,4.2,4.2c0.9,1.8,1.4,3.9,1.4,6.2 S391.8,503.6,390.9,505.4z'/%3E %3Crect x='417.1' y='477.1' width='12' height='66.4'/%3E %3C/g%3E %3C/g%3E %3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'd9c2d319cd7e6177336b0a9c93c21cb48d84fb54.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'PARAS',\n symbol: 'PARAS',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.paras.near',\n },\n {\n spec: 'ft-1.0.0',\n name: '1MILNFT',\n symbol: '1MIL',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 146 146' xml:space='preserve'%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M0 0L0 31L31 31L31 0L0 0z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M31 0L31 31L32 31L31 0z'/%3E %3Cpath style='fill:%23000000; stroke:none;' d='M32 0L32 32L0 32L0 38L32 38L32 70L0 70L0 76L32 76L32 109L0 109L0 114L32 114L32 146L38 146L38 114L70 114L70 146L76 146L76 114C82.7843 114 102.446 110.653 107.397 115.603C112.241 120.448 109 139.378 109 146L114 146L114 114L146 114L146 109C139.378 109 120.448 112.241 115.603 107.397C110.653 102.446 114 82.7843 114 76L146 76L146 70L114 70L114 38L146 38L146 32C139.378 32 120.448 35.2414 115.603 30.3966C110.759 25.5518 114 6.6225 114 0L109 0L109 32L76 32L76 0L71 0L71 32L38 32L38 0L32 0z'/%3E %3Cpath style='fill:%23459f00; stroke:none;' d='M38 0L38 32L70 32L70 31L39 31L38 0z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M39 0L39 31L70 31L70 0L39 0z'/%3E %3Cpath style='fill:%230d2000; stroke:none;' d='M70 0L70 32L71 32L70 0z'/%3E %3Cpath style='fill:%233f0180; stroke:none;' d='M76 0L76 32L108 32L108 31L77 31L76 0z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M77 0L77 31L108 31L108 0L77 0z'/%3E %3Cpath style='fill:%232f0060; stroke:none;' d='M108 0L108 32L109 32L108 0z'/%3E %3Cpath style='fill:%231d4101; stroke:none;' d='M114 0L114 31L115 31L114 0z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M115 0L115 31L146 31L146 0L115 0z'/%3E %3Cpath style='fill:%239f017c; stroke:none;' d='M0 31L0 32L32 32L0 31z'/%3E %3Cpath style='fill:%23459f00; stroke:none;' d='M115 31L115 32L146 32L115 31z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M0 38L0 69L31 69L31 38L0 38z'/%3E %3Cpath style='fill:%2300d2df; stroke:none;' d='M31 38L31 69L0 69L0 70L32 70L31 38z'/%3E %3Cpath style='fill:%23be0094; stroke:none;' d='M38 38L38 70L39 70L38 38z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M39 38L39 69L70 69L70 38L39 38z'/%3E %3Cpath style='fill:%23200018; stroke:none;' d='M70 38L70 70L71 70L70 38z'/%3E %3Cpath style='fill:%23007880; stroke:none;' d='M76 38L76 70L77 70L76 38z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M77 38L77 69L108 69L108 38L77 38z'/%3E %3Cpath style='fill:%23015a60; stroke:none;' d='M108 38L108 70L109 70L108 38z'/%3E %3Cpath style='fill:%23400032; stroke:none;' d='M114 38L114 70L115 70L114 38z'/%3E %3Cpath style='fill:%23de00ad; stroke:none;' d='M115 38L115 39L146 39L115 38z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M115 39L115 70L146 70L146 39L115 39z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M39 69L39 70L70 70L39 69z'/%3E %3Cpath style='fill:%2300d2df; stroke:none;' d='M77 69L77 70L108 70L77 69z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M0 76L0 77L32 77L0 76z'/%3E %3Cpath style='fill:%235f00be; stroke:none;' d='M38 76L38 108L39 108L39 77L70 77L38 76z'/%3E %3Cpath style='fill:%230f001f; stroke:none;' d='M70 76L70 108L71 108L70 76z'/%3E %3Cpath style='fill:%23388000; stroke:none;' d='M76 76L76 108L77 108L76 76z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M77 76L77 77L108 77L77 76z'/%3E %3Cpath style='fill:%232a6000; stroke:none;' d='M108 76L108 108L109 108L108 76z'/%3E %3Cpath style='fill:%23003d40; stroke:none;' d='M114 76L114 108L115 108L114 76z'/%3E %3Cpath style='fill:%2300b4bf; stroke:none;' d='M115 76L115 77L146 77L115 76z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M0 77L0 108L32 108L32 77L0 77z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M39 77L39 108L70 108L70 77L39 77z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M77 77L77 108L108 108L108 77L77 77z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M115 77L115 108L146 108L146 77L115 77z'/%3E %3Cpath style='fill:%230f2000; stroke:none;' d='M0 108L0 109L32 109L0 108M76 108L76 109L108 109L76 108z'/%3E %3Cpath style='fill:%23001e20; stroke:none;' d='M115 108L115 109L146 109L115 108z'/%3E %3Cpath style='fill:%23810064; stroke:none;' d='M0 114L0 115L32 115L0 114z'/%3E %3Cpath style='fill:%23398000; stroke:none;' d='M38 114L38 115L70 115L38 114z'/%3E %3Cpath style='fill:%23800063; stroke:none;' d='M76 114L76 146L77 146L77 115L108 115L76 114z'/%3E %3Cpath style='fill:%23200041; stroke:none;' d='M114 114L114 146L115 146L114 114z'/%3E %3Cpath style='fill:%23410080; stroke:none;' d='M115 114L115 115L146 115L115 114z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M0 115L0 146L31 146L31 115L0 115z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M31 115L31 146L32 146L31 115z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M38 115L38 146L39 146L38 115z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M39 115L39 146L70 146L70 115L39 115z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M77 115L77 146L108 146L108 115L77 115z'/%3E %3Cpath style='fill:%2360004a; stroke:none;' d='M108 115L108 146L109 146L108 115z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M115 115L115 146L146 146L146 115L115 115z'/%3E %3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'a4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'marma j token',\n symbol: 'marmaj',\n icon:\n 'data:image/jpeg;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'marmaj.tkn.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Staked NEAR',\n symbol: 'STNEAR',\n icon:\n \"data:image/svg+xml,%3csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='96' height='96' rx='48' fill='white'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M48.0006 20L41.2575 26.7431L48.0006 33.4862L54.7437 26.7431L48.0006 20ZM37.281 30.7188L30.7144 37.2853L47.9998 54.5707L65.2851 37.2853L58.7186 30.7188L47.9998 41.4376L37.281 30.7188ZM26.7384 41.261L19.9953 48.0041L47.9995 76.0083L76.0037 48.0041L69.2606 41.2611L47.9995 62.5221L26.7384 41.261Z' fill='%23231B51'/%3e%3c/svg%3e\",\n reference: 'https://metapool.app',\n reference_hash: null,\n decimals: 24,\n id: 'meta-pool.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Cheddar',\n symbol: 'Cheddar',\n icon:\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA2NCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgNjQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDp1cmwoI1hNTElEXzE2Xyk7fQoJLnN0MXtmaWxsOiNGRkU5NTk7fQoJLnN0MntvcGFjaXR5OjAuMjt9Cgkuc3Qze2ZpbGw6IzQyNDI0Mjt9Cgkuc3Q0e29wYWNpdHk6MC45O2ZpbGw6dXJsKCNYTUxJRF8xN18pO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAgICA7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMV8pO30KCS5zdDZ7ZmlsbDp1cmwoI1hNTElEXzE4Xyk7fQoJLnN0N3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMTlfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDh7ZmlsbDp1cmwoI1hNTElEXzIwXyk7fQoJLnN0OXtvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMjFfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDEwe2ZpbGw6dXJsKCNTVkdJRF8yXyk7fQoJLnN0MTF7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzIyXyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QxMntmaWxsOnVybCgjWE1MSURfMjNfKTt9Cgkuc3QxM3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMjRfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDE0e2ZpbGw6dXJsKCNTVkdJRF8zXyk7fQoJLnN0MTV7ZmlsbDp1cmwoI1hNTElEXzI2Xyk7fQoJLnN0MTZ7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzI3Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QxN3tmaWxsOnVybCgjWE1MSURfMzFfKTt9Cgkuc3QxOHtvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMzNfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDE5e2ZpbGw6dXJsKCNTVkdJRF80Xyk7fQoJLnN0MjB7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzM0Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QyMXtmaWxsOnVybCgjWE1MSURfMzZfKTt9Cgkuc3QyMntvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMzdfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDIze2ZpbGw6dXJsKCNTVkdJRF81Xyk7fQoJLnN0MjR7ZmlsbDp1cmwoI1hNTElEXzM4Xyk7fQoJLnN0MjV7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzM5Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QyNntmaWxsOnVybCgjWE1MSURfNDBfKTt9Cgkuc3QyN3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfNDFfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDI4e2ZpbGw6dXJsKCNTVkdJRF82Xyk7fQoJLnN0Mjl7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzQyXyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cjwvc3R5bGU+CjxnIGlkPSJMYXllcl8xXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMTZfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0xODIxLjEzNTMiIHkxPSI5ODMuMTc0MyIgeDI9Ii0xODIxLjEzNTMiIHkyPSI5OTguMDU0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAtMTc5MC4yNzUzIC05NDYpIj4KCQk8c3RvcCAgb2Zmc2V0PSIxLjk3MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNGN0JDMDAiLz4KCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkNENzNFIi8+Cgk8L2xpbmVhckdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzY4XyIgY2xhc3M9InN0MCIgZD0iTTUyLjMsNDAuMnYxNC4xbC00MC4yLTYuMWMtMS41LTAuMy0yLjYtMS4zLTIuNi0yLjNjMC4xLTMuOC0wLjEtNy41LDAtMTEuMQoJCWMwLTAuNywwLjEtMS41LDEuMi0xLjdjMC43LTAuMSwxLjYsMC4yLDIuMywwLjNsNC45LDAuOGMwLDAuMSwwLDAuMywwLDAuNGMwLDEuNiwxLjcsMyw0LDMuMWMyLDAuMSwzLjYtMC44LDMuOS0yLjJMNDAuNiwzOAoJCWMtMC4xLDAuMi0wLjIsMC40LTAuMiwwLjVjMCwwLjcsMC45LDEuMywxLjksMS40YzEuMSwwLjEsMS45LTAuNCwxLjktMS4yYzAtMC4xLDAtMC4xLDAtMC4yQzQ0LjEsMzguNiw1Mi4zLDQwLjIsNTIuMyw0MC4yeiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTkuNSwzNC44YzAuMy0xLjItMC40LTIuNiwzLjUtMS41bDQuOSwwLjhjMC40LTEsMi0xLjYsMy44LTEuNGMyLjIsMC4xLDQsMS4zLDQsMi41YzAsMC4xLDAsMC4yLDAsMC4zCgkJTDQwLjUsMzhsMCwwYzAuMy0wLjMsMS0wLjQsMS43LTAuNGMxLDAuMSwxLjksMC41LDEuOSwxLjFsOC4yLDEuNkwzMC44LDI3LjVjLTItMS4yLTQuNS0xLjctNi43LTEuM2MtMi4yLDAuMy01LDAuOC03LjEsMS42CgkJYy0yLjUsMC45LTQuOCwyLjQtNi4yLDMuNmMtMC4xLDAuMS0wLjYsMC41LTAuOSwxLjFDOS41LDMzLDkuNSwzMy44LDkuNSwzNC44eiIvPgoJPGcgY2xhc3M9InN0MiI+CgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTI1LjQsMjdjMS42LDAsMy4zLDAuNCw0LjcsMS4zbDIxLDEyLjV2MTIuNmwtMzguOC01LjljLTAuOS0wLjItMS43LTAuOC0xLjYtMS40YzAtMi4yLDAtNC4zLDAtNi41CgkJCWMwLTEuNSwwLTMuMSwwLTQuN2MwLTAuMSwwLTAuMiwwLTAuNGwwLDBjMC0wLjUsMC4xLTEuMiwwLjMtMS42YzAuMi0wLjQsMC41LTAuNywwLjYtMC44YzEuNC0xLjEsMy42LTIuNSw1LjgtMy40CgkJCWMxLjYtMC42LDQtMS4xLDYuOC0xLjVDMjQuNiwyNywyNC45LDI3LDI1LjQsMjcgTTI1LjQsMjYuMWMtMC40LDAtMC45LDAtMS4zLDAuMWMtMi4yLDAuMy01LDAuOC03LjEsMS42CgkJCWMtMi41LDAuOS00LjgsMi40LTYuMiwzLjZjLTAuMSwwLjEtMC42LDAuNS0wLjksMS4xYy0wLjMsMC41LTAuMywxLjItMC40LDEuOWMwLDAuMiwwLDAuMywwLDAuNGMwLDMuNywwLjEsNy41LDAuMSwxMS4xCgkJCWMwLDEuMSwxLjEsMi4xLDIuNiwyLjNsNDAuMiw2LjFWNDAuMkwzMC44LDI3LjVDMjkuMiwyNi42LDI3LjMsMjYuMSwyNS40LDI2LjFMMjUuNCwyNi4xeiIvPgoJPC9nPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8xN18iIGN4PSItMzA0NS4xOTg3IiBjeT0iMjA0Ny40NDY5IiByPSI2Ljg2ODciIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuNDI1OCAwIDAgMC4zMjI1IC0xMjc5Ljk4MTMgLTYxNy4xODk5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzM1XyIgY2xhc3M9InN0NCIgZD0iTTE4LjQsNDMuOGMwLDEuMi0xLjMsMi4xLTMsMmMtMS42LTAuMS0zLTEuMi0zLTIuM3MxLjMtMi4xLDMtMkMxNyw0MS41LDE4LjQsNDIuNiwxOC40LDQzLjh6IgoJCS8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBjeD0iLTMwNjQuNDI3NSIgY3k9IjIwMTUuOTU3IiByPSIxNC4xMzIxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjQyNTggMCAwIDAuMzIyNSAtMTI3OS45ODEzIC02MTcuMTg5OSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0xNy44LDM0LjRjMCwxLjYsMS43LDMsNCwzLjFjMiwwLjEsMy42LTAuOCwzLjktMi4yaC0wLjFsLTAuMy0wLjFsMC40LDAuMWMwLTAuMSwwLTAuMiwwLTAuMwoJCWMwLTEuMy0xLjgtMi40LTQtMi41Yy0xLjgtMC4xLTMuNCwwLjUtMy44LDEuNEMxNy44LDM0LjIsMTcuOCwzNC40LDE3LjgsMzQuNHoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMThfIiBjeD0iLTEzMjguMjIwMiIgY3k9IjM0ODEuNzQ3MSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzA3OCAwLjIyMjggMC4yNDA5IDAuMTkwOSAtMTIyMS41MjUxIC0zNDAuNzk4NCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzMyXyIgY2xhc3M9InN0NiIgZD0iTTI2LjgsMjkuNGMwLDAuNS0wLjksMS0yLDAuOXMtMi0wLjYtMi0xLjJzMC45LTEsMi0wLjlDMjYsMjguMiwyNi44LDI4LjgsMjYuOCwyOS40eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8xOV8iIGN4PSItMzA3OS41NTMiIGN5PSIyMDQ0LjQxMSIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMzBfIiBjbGFzcz0ic3Q3IiBkPSJNMzUuMSw0My40YzAsMi4xLTIuMiwzLjUtNSwzLjNzLTUtMi01LTRjMC0yLjEsMi4yLTMuNSw1LTMuM0MzMi44LDM5LjYsMzUuMSw0MS40LDM1LjEsNDMuNHoiCgkJLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjBfIiBjeD0iLTMwNzYuMzYxNiIgY3k9IjIwMTEuMTY0OCIgcj0iMTAuOTExOCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC43NTAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojRDk5OTE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC40MDk4IiBzdHlsZT0ic3RvcC1jb2xvcjojRDU5NjEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC43MzUiIHN0eWxlPSJzdG9wLWNvbG9yOiNDOThEMEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0JBODIwNyIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8yOV8iIGNsYXNzPSJzdDgiIGQ9Ik0zNS44LDMzLjFjMCwwLjgtMS4zLDEuMy0yLjksMS4yYy0xLjYtMC4yLTIuOS0wLjgtMi45LTEuNmMwLTAuOCwxLjMtMS4zLDIuOS0xLjIKCQlDMzQuNiwzMS43LDM1LjgsMzIuMywzNS44LDMzLjF6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlhNTElEXzIxXyIgY3g9Ii0zMTAyLjMwMzUiIGN5PSIyMDU5Ljc2NjgiIHI9IjUuOTI4NSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3Q5IiBkPSJNNDIuMyw0Ny43YzAsMS0xLjIsMS44LTIuNiwxLjdjLTEuNC0wLjEtMi42LTEtMi42LTIuMWMwLTEuMSwxLjItMS44LDIuNi0xLjcKCQlDNDEuMSw0NS45LDQyLjMsNDYuOCw0Mi4zLDQ3Ljd6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzJfIiBjeD0iLTMxMDYuODA4OCIgY3k9IjIwMzAuMDM0MyIgcj0iOC44NDA4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjQyNTggMCAwIDAuMzIyNSAtMTI3OS45ODEzIC02MTcuMTg5OSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjYwMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNDNzczMTUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjM3NzQiIHN0eWxlPSJzdG9wLWNvbG9yOiNDMzcxMTMiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjY3MTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNCNzZDMEYiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk2NjkiIHN0eWxlPSJzdG9wLWNvbG9yOiNBMzY0MDciLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0ExNjMwNiIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNNDAuMiwzOC41YzAsMC43LDAuOSwxLjMsMS45LDEuNGMxLjEsMC4xLDEuOS0wLjQsMS45LTEuMmMwLTAuMSwwLTAuMSwwLTAuMmwwLDBjMC0wLjUtMC45LTEtMS45LTEuMQoJCWMtMC43LTAuMS0xLjQsMC4xLTEuNywwLjRsMCwwQzQwLjMsMzguMSw0MC4yLDM4LjMsNDAuMiwzOC41eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8yMl8iIGN4PSItMzExOS4yMjA1IiBjeT0iMjA0OC44OTk5IiByPSI0LjM5ODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuNDI1OCAwIDAgMC4zMjI1IC0xMjc5Ljk4MTMgLTYxNy4xODk5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzI1XyIgY2xhc3M9InN0MTEiIGQ9Ik00OC43LDQ0YzAsMC41LTAuNiwxLTEuMywwLjljLTAuNy0wLjEtMS4zLTAuNS0xLjMtMS4xYzAtMC41LDAuNi0xLDEuMy0wLjkKCQlDNDgsNDMsNDguNyw0My40LDQ4LjcsNDR6Ii8+CjwvZz4KPGcgaWQ9IkxheWVyXzFfMl8iPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF8yM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTIxMjYuNTcyIiB5MT0iMTAyNi43NzYxIiB4Mj0iLTIxMjYuNTcyIiB5Mj0iMTAzOS45Mzc5IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjc2NTIgLTEuNjc0MTIzZS0wMiAtMS44Nzk5NDdlLTAyIDAuODU5MyAtMTU3Ni4yMTU3IC04OTMuNDA4NSkiPgoJCTxzdG9wICBvZmZzZXQ9IjEuOTcwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Y3QkMwMCIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQ0Q3M0UiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfN18iIGNsYXNzPSJzdDEyIiBkPSJNNDcsMjdsLTAuNCwxMC45bC0yOC41LTUuMWMtMS4xLTAuMi0xLjgtMS0xLjgtMS44YzAuMi0yLjksMC4xLTUuOCwwLjMtOC42CgkJYzAtMC41LDAuMS0xLjIsMC45LTEuM2MwLjUtMC4xLDEuMiwwLjIsMS43LDAuM2wzLjQsMC43YzAsMC4xLDAsMC4yLDAsMC4zYzAsMS4yLDEuMiwyLjMsMi43LDIuNGMxLjQsMC4xLDIuNi0wLjYsMi44LTEuNgoJCWwxMC41LDIuMmMtMC4xLDAuMS0wLjIsMC4zLTAuMiwwLjRjMCwwLjUsMC41LDEuMSwxLjMsMS4yYzAuNywwLjEsMS4zLTAuNCwxLjMtMC45YzAtMC4xLDAtMC4xLDAtMC4yQzQxLjEsMjUuNiw0NywyNyw0NywyN3oiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNi41LDIyLjRjMC4yLTAuOS0wLjItMiwyLjUtMS4ybDMuNCwwLjdjMC4zLTAuNywxLjQtMS4yLDIuOC0xLjFjMS41LDAuMSwyLjgsMS4xLDIuOCwyYzAsMC4xLDAsMC4yLDAsMC4yCgkJbDEwLjUsMi4ybDAsMGMwLjItMC4zLDAuNy0wLjQsMS4zLTAuNGMwLjcsMC4xLDEuMywwLjQsMS4zLDAuOGw1LjgsMS4zTDMyLDE3Yy0xLjMtMC45LTMuMS0xLjMtNC44LTEuMWMtMS42LDAuMi0zLjYsMC41LTUuMSwxLjIKCQljLTEuOCwwLjYtMy40LDEuOC00LjUsMi43Yy0wLjEsMC4xLTAuNCwwLjQtMC42LDAuOEMxNi42LDIxLjEsMTYuNiwyMS43LDE2LjUsMjIuNHoiLz4KCTxnIGNsYXNzPSJzdDIiPgoJCTxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0yOC4xLDE2LjVjMS4yLDAsMi4zLDAuNCwzLjMsMWwxNC43LDkuOEw0NS45LDM3bC0yNy42LTQuOWMtMC42LTAuMS0xLjItMC42LTEuMi0xLjIKCQkJYzAuMS0xLjYsMC4xLTMuMywwLjItNC45YzAtMS4yLDAuMS0yLjQsMC4xLTMuNmMwLTAuMSwwLTAuMiwwLTAuM2wwLDBjMC0wLjQsMC4xLTAuOSwwLjItMS4zYzAuMS0wLjMsMC40LTAuNSwwLjQtMC42CgkJCWMxLTAuOCwyLjYtMS45LDQuMy0yLjVjMS4yLTAuNCwyLjktMC44LDQuOS0xLjFDMjcuNSwxNi41LDI3LjgsMTYuNSwyOC4xLDE2LjUgTTI4LjEsMTUuOGMtMC40LDAtMC42LDAtMSwwLjEKCQkJYy0xLjYsMC4yLTMuNiwwLjUtNS4xLDEuMmMtMS44LDAuNi0zLjQsMS44LTQuNSwyLjdjLTAuMSwwLjEtMC40LDAuNC0wLjYsMC44Yy0wLjIsMC40LTAuMywwLjktMC4zLDEuNGMwLDAuMSwwLDAuMiwwLDAuMwoJCQljLTAuMSwyLjktMC4xLDUuOC0wLjMsOC42YzAsMC44LDAuNywxLjYsMS44LDEuOGwyOC41LDUuMUw0NywyN0wzMS45LDE3QzMwLjgsMTYuMywyOS40LDE1LjgsMjguMSwxNS44TDI4LjEsMTUuOHoiLz4KCTwvZz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjRfIiBjeD0iLTM5OTEuOTUyOSIgY3k9IjI0MDEuOTY1MSIgcj0iNi44Njg3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QxMyIgZD0iTTIyLjcsMjkuNGMwLDAuOS0xLDEuNi0yLjIsMS40Yy0xLjItMC4yLTIuMS0wLjktMi4xLTEuOWMwLTEsMS0xLjYsMi4yLTEuNAoJCVMyMi43LDI4LjUsMjIuNywyOS40eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJTVkdJRF8zXyIgY3g9Ii00MDExLjE4MTYiIGN5PSIyMzcwLjQ3NTMiIHI9IjE0LjEzMjEiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzAzNyAtNC4zNDYyMDhlLTAzIC03LjU4NzcyMWUtMDMgMC4yNDg0IC0xMTcyLjY1NDggLTU4NS4xMjkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QxNCIgZD0iTTIyLjQsMjIuMmMwLDEuMiwxLjIsMi4zLDIuNywyLjRjMS40LDAuMSwyLjYtMC42LDIuOC0xLjZoLTAuMWgtMC4ybDAuMywwLjFjMC0wLjEsMC0wLjIsMC0wLjIKCQljMC0xLTEuMy0xLjktMi44LTJjLTEuMy0wLjEtMi40LDAuNC0yLjgsMS4xQzIyLjUsMjIsMjIuNCwyMi4xLDIyLjQsMjIuMnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjZfIiBjeD0iLTE3NjcuOTQ2NSIgY3k9IjQ1OTMuOTUyMSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMjI0OCAwLjE2ODUgMC4xNjczIDAuMTQ5NSAtMTEzNy40NjU2IC0zNzEuNjE3OCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzVfIiBjbGFzcz0ic3QxNSIgZD0iTTI5LjEsMTguNGMwLDAuNC0wLjYsMC43LTEuNCwwLjdjLTAuNy0wLjEtMS4zLTAuNC0xLjMtMC45YzAtMC40LDAuNi0wLjcsMS40LTAuNwoJCUMyOC40LDE3LjYsMjkuMSwxNy45LDI5LjEsMTguNHoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjdfIiBjeD0iLTQwMjYuMzA3MSIgY3k9IjIzOTguOTI5MiIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC4zMDM3IC00LjM0NjIwOGUtMDMgLTcuNTg3NzIxZS0wMyAwLjI0ODQgLTExNzIuNjU0OCAtNTg1LjEyOSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF80XyIgY2xhc3M9InN0MTYiIGQ9Ik0zNC42LDI5LjNjLTAuMSwxLjUtMS43LDIuNy0zLjcsMi41Yy0yLTAuMi0zLjYtMS42LTMuNS0zLjFjMC4xLTEuNSwxLjctMi43LDMuNy0yLjUKCQlDMzMsMjYuMywzNC42LDI3LjcsMzQuNiwyOS4zeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8zMV8iIGN4PSItNDAyMy4xMTU3IiBjeT0iMjM2NS42ODMxIiByPSIxMC45MTE4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNzUwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Q5OTkxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNDA5OCIgc3R5bGU9InN0b3AtY29sb3I6I0Q1OTYxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNzM1IiBzdHlsZT0ic3RvcC1jb2xvcjojQzk4RDBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTgyMDciLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfM18iIGNsYXNzPSJzdDE3IiBkPSJNMzUuNCwyMS4zYzAsMC42LTEsMS0yLjEsMC45Yy0xLjEtMC4xLTIuMS0wLjYtMi4xLTEuM3MxLTEsMi4xLTAuOQoJCUMzNC41LDIwLjIsMzUuNCwyMC43LDM1LjQsMjEuM3oiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzNfIiBjeD0iLTQwNDkuMDU3OSIgY3k9IjI0MTQuMjg1MiIgcj0iNS45Mjg1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QxOCIgZD0iTTM5LjYsMzIuN2MwLDAuOC0wLjksMS4zLTEuOSwxLjNjLTEtMC4xLTEuOC0wLjgtMS44LTEuNnMwLjktMS4zLDEuOS0xLjMKCQlDMzguOSwzMS4yLDM5LjcsMzEuOSwzOS42LDMyLjd6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzRfIiBjeD0iLTQwNTMuNTYzIiBjeT0iMjM4NC41NTI1IiByPSI4Ljg0MDgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzAzNyAtNC4zNDYyMDhlLTAzIC03LjU4NzcyMWUtMDMgMC4yNDg0IC0xMTcyLjY1NDggLTU4NS4xMjkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC42MDAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQzc3MzE1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zNzc0IiBzdHlsZT0ic3RvcC1jb2xvcjojQzM3MTEzIi8+CgkJPHN0b3AgIG9mZnNldD0iMC42NzE4IiBzdHlsZT0ic3RvcC1jb2xvcjojQjc2QzBGIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45NjY5IiBzdHlsZT0ic3RvcC1jb2xvcjojQTM2NDA3Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBMTYzMDYiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QxOSIgZD0iTTM4LjQsMjUuNmMwLDAuNSwwLjUsMS4xLDEuMywxLjJjMC43LDAuMSwxLjMtMC40LDEuMy0wLjljMC0wLjEsMC0wLjEsMC0wLjJsMCwwYzAtMC40LTAuNi0wLjgtMS4zLTAuOAoJCWMtMC41LTAuMS0xLDAuMS0xLjMsMC40bDAsMEMzOC40LDI1LjMsMzguNCwyNS41LDM4LjQsMjUuNnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzRfIiBjeD0iLTQwNjUuOTc0NiIgY3k9IjI0MDMuNDE4MiIgcj0iNC4zOTg1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzFfIiBjbGFzcz0ic3QyMCIgZD0iTTQ0LjMsMjkuOWMwLDAuNC0wLjQsMC43LTEsMC43cy0xLTAuNC0xLTAuOWMwLTAuNCwwLjQtMC43LDEtMC43CgkJQzQzLjgsMjkuMSw0NC4zLDI5LjQsNDQuMywyOS45eiIvPgo8L2c+CjxnIGlkPSJMYXllcl8xXzNfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzZfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0yNDIyLjUxNzMiIHkxPSIxMDA1LjY1NDYiIHgyPSItMjQyMi41MTczIiB5Mj0iMTAxNC43NjQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjYyODcgLTMuOTI5MDMwZS0wMiAtNS4wNDc5OThlLTAyIDAuODA3NyAtMTQ0MC42ODE1IC04OTIuMDUxMykiPgoJCTxzdG9wICBvZmZzZXQ9IjEuOTcwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Y3QkMwMCIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQ0Q3M0UiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTRfIiBjbGFzcz0ic3QyMSIgZD0iTTQwLjYsMTcuMmwtMC42LDcuMmwtMTYuNy0zLjhjLTAuNi0wLjItMS4xLTAuNy0xLTEuM2MwLjItMS45LDAuMy0zLjksMC40LTUuOAoJCWMwLTAuNCwwLjEtMC44LDAuNS0wLjljMC40LTAuMSwwLjcsMC4xLDEsMC4ybDIsMC41YzAsMC4xLDAsMC4yLDAsMC4yYy0wLjEsMC44LDAuNiwxLjUsMS41LDEuNmMwLjgsMC4xLDEuNS0wLjQsMS43LTEuMWw2LjIsMS41CgkJYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAuM2MwLDAuNCwwLjMsMC43LDAuNywwLjhzMC44LTAuMiwwLjktMC41di0wLjFDMzcuMiwxNi4yLDQwLjYsMTcuMiw0MC42LDE3LjJ6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjIuOCwxMy43YzAuMi0wLjUsMC0xLjMsMS41LTAuN2wyLDAuNWMwLjItMC40LDAuOS0wLjgsMS43LTAuN2MwLjksMC4xLDEuNiwwLjcsMS41LDEuM2MwLDAuMSwwLDAuMSwwLDAuMgoJCWw2LjIsMS41bDAsMGMwLjItMC4yLDAuNC0wLjMsMC43LTAuMmMwLjQsMC4xLDAuNywwLjMsMC43LDAuNWwzLjQsMUwzMiwxMC4zYy0wLjgtMC42LTEuOC0wLjktMi44LTAuOGMtMSwwLjItMi4yLDAuNC0zLjEsMC43CgkJYy0xLjEsMC40LTIuMSwxLjItMi44LDEuN2MwLDAtMC4zLDAuMy0wLjQsMC41QzIyLjksMTIuOCwyMi44LDEzLjIsMjIuOCwxMy43eiIvPgoJPGcgY2xhc3M9InN0MiI+CgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTI5LjgsOS45YzAuNywwLDEuMywwLjMsMS45LDAuN2w4LjQsNi43bC0wLjUsNi41bC0xNi4xLTMuN2MtMC40LTAuMS0wLjYtMC40LTAuNi0wLjgKCQkJYzAuMS0xLjEsMC4yLTIuMiwwLjMtMy4zYzAuMS0wLjgsMC4xLTEuNiwwLjItMi40YzAtMC4xLDAtMC4xLDAtMC4ybDAsMGMwLTAuMywwLjEtMC42LDAuMi0wLjhjMC4xLTAuMiwwLjMtMC40LDAuMy0wLjQKCQkJYzAuNi0wLjUsMS42LTEuMywyLjYtMS42YzAuNy0wLjMsMS43LTAuNSwzLTAuNkMyOS40LDkuOSwyOS42LDkuOSwyOS44LDkuOSBNMjkuOSw5LjVjLTAuMiwwLTAuNCwwLTAuNiwwYy0xLDAuMi0yLjIsMC40LTMuMSwwLjcKCQkJYy0xLjEsMC40LTIuMSwxLjItMi44LDEuN2MwLDAtMC4zLDAuMy0wLjQsMC41Yy0wLjEsMC4zLTAuMiwwLjUtMC4yLDFjMCwwLjEsMCwwLjIsMCwwLjJjLTAuMiwxLjktMC4zLDMuOS0wLjQsNS44CgkJCWMtMC4xLDAuNSwwLjQsMS4xLDEsMS4zbDE2LjYsMy45bDAuNi03LjNMMzIsMTAuM0MzMS40LDkuOCwzMC42LDkuNiwyOS45LDkuNUwyOS45LDkuNXoiLz4KCTwvZz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzdfIiBjeD0iLTYzMDAuMDcxMyIgY3k9IjMxODQuNDk5MyIgcj0iNi44Njg3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjE3OTYgLTYuODIyNTU0ZS0wMyAtMS4zOTA2NjJlLTAyIDAuMTY1NiAtMTA2MS43Nzg2IC01NTIuMjIzMykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8xM18iIGNsYXNzPSJzdDIyIiBkPSJNMjYuMSwxOC41Yy0wLjEsMC42LTAuNiwxLjEtMS4zLDFjLTAuNy0wLjEtMS4yLTAuNi0xLjItMS4zYzAuMS0wLjYsMC42LTEuMSwxLjMtMQoJCUMyNS43LDE3LjMsMjYuMiwxNy45LDI2LjEsMTguNXoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iU1ZHSURfNV8iIGN4PSItNjMxOS4zMDAzIiBjeT0iMzE1My4wMDk1IiByPSIxNC4xMzIxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjE3OTYgLTYuODIyNTU0ZS0wMyAtMS4zOTA2NjJlLTAyIDAuMTY1NiAtMTA2MS43Nzg2IC01NTIuMjIzMykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDIzIiBkPSJNMjYuMywxMy43Yy0wLjEsMC44LDAuNiwxLjUsMS41LDEuNmMwLjgsMC4xLDEuNS0wLjQsMS43LTEuMWgtMC4xaC0wLjFoMC4yYzAtMC4xLDAtMC4xLDAtMC4yCgkJYzAuMS0wLjYtMC42LTEuMy0xLjUtMS4zYy0wLjgtMC4xLTEuNCwwLjItMS43LDAuN0MyNi4zLDEzLjUsMjYuMywxMy42LDI2LjMsMTMuN3oiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzhfIiBjeD0iLTI4OTUuMTQ2NyIgY3k9IjcyMzAuOTM4NSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTM5NSAwLjEwOTUgOS4zMzg2MjdlLTAyIDAuMTAxOSAtMTA0OS4wOTQyIC00MDkuMzQ3OCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzEyXyIgY2xhc3M9InN0MjQiIGQ9Ik0zMC4zLDExLjJjMCwwLjMtMC40LDAuNC0wLjksMC40cy0wLjgtMC40LTAuOC0wLjZzMC40LTAuNCwwLjktMC40CgkJQzMwLDEwLjYsMzAuMywxMC45LDMwLjMsMTEuMnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzlfIiBjeD0iLTYzMzQuNDI1OCIgY3k9IjMxODEuNDYzNCIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC4xNzk2IC02LjgyMjU1NGUtMDMgLTEuMzkwNjYyZS0wMiAwLjE2NTYgLTEwNjEuNzc4NiAtNTUyLjIyMzMpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTFfIiBjbGFzcz0ic3QyNSIgZD0iTTMzLjIsMTguNWMtMC4xLDEuMS0xLjEsMS44LTIuMiwxLjZzLTIuMS0xLjEtMi0yLjJjMC4xLTEuMSwxLjEtMS44LDIuMi0xLjYKCQlDMzIuNCwxNi42LDMzLjMsMTcuNSwzMy4yLDE4LjV6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlhNTElEXzQwXyIgY3g9Ii02MzMxLjIzNDQiIGN5PSIzMTQ4LjIxNzMiIHI9IjEwLjkxMTgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNzUwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Q5OTkxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNDA5OCIgc3R5bGU9InN0b3AtY29sb3I6I0Q1OTYxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNzM1IiBzdHlsZT0ic3RvcC1jb2xvcjojQzk4RDBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTgyMDciLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTBfIiBjbGFzcz0ic3QyNiIgZD0iTTMzLjksMTMuMmMwLDAuNC0wLjYsMC42LTEuMywwLjVjLTAuNi0wLjEtMS4yLTAuNC0xLjItMC45YzAtMC40LDAuNi0wLjYsMS4zLTAuNQoJCVMzMy45LDEyLjksMzMuOSwxMy4yeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF80MV8iIGN4PSItNjM1Ny4xNzYzIiBjeT0iMzE5Ni44MTkzIiByPSI1LjkyODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzlfIiBjbGFzcz0ic3QyNyIgZD0iTTM2LDIwLjljMCwwLjUtMC41LDAuOS0xLjIsMC44Yy0wLjYtMC4xLTEuMS0wLjUtMS0xLjFjMC0wLjUsMC41LTAuOSwxLjItMC44CgkJQzM1LjYsMTkuOSwzNi4xLDIwLjMsMzYsMjAuOXoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iU1ZHSURfNl8iIGN4PSItNjM2MS42ODE2IiBjeT0iMzE2Ny4wODY3IiByPSI4Ljg0MDgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNjAwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0M3NzMxNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzc3NCIgc3R5bGU9InN0b3AtY29sb3I6I0MzNzExMyIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNjcxOCIgc3R5bGU9InN0b3AtY29sb3I6I0I3NkMwRiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTY2OSIgc3R5bGU9InN0b3AtY29sb3I6I0EzNjQwNyIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQTE2MzA2Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0zNS41LDE2LjFjMCwwLjQsMC4zLDAuNywwLjcsMC44YzAuNCwwLjEsMC44LTAuMiwwLjktMC41di0wLjFsMCwwYzAtMC4zLTAuNC0wLjUtMC43LTAuNQoJCWMtMC40LDAtMC42LDAtMC43LDAuMmwwLDBDMzUuNiwxNS45LDM1LjUsMTYsMzUuNSwxNi4xeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF80Ml8iIGN4PSItNjM3NC4wOTMzIiBjeT0iMzE4NS45NTI0IiByPSI0LjM5ODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzhfIiBjbGFzcz0ic3QyOSIgZD0iTTM4LjksMTkuMWMwLDAuMy0wLjMsMC40LTAuNiwwLjRjLTAuNCwwLTAuNS0wLjMtMC41LTAuNnMwLjMtMC40LDAuNi0wLjQKCQlDMzguNywxOC41LDM4LjksMTguOCwzOC45LDE5LjF6Ii8+CjwvZz4KPC9zdmc+Cg==',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'token.cheddar.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Pulse',\n symbol: 'PULSE',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNi41NTAzNSAxOS4xMjM5TDkuMTcxNjYgMTQuOTQ5MkM5LjMyNzMxIDE0LjcwMTMgOS41OTk0OCAxNC41NTA4IDkuODkyMiAxNC41NTA4SDE4LjQxNEMxOS41NDEyIDE0LjU1MDggMjAuNTYxNCAxMy44ODM2IDIxLjAxMzMgMTIuODUwOUMyMS4zNjQ3IDEyLjA0NzYgMjAuNzc2MSAxMS4xNDc3IDE5Ljg5OTMgMTEuMTQ3N0gxMS45NzQyTDExLjU0ODggMTEuMjU0TDEzLjY0NjEgNy40NDA3OEMxMy43OTU2IDcuMTY4OTEgMTQuMDgxMyA3IDE0LjM5MTUgN0gyMi4wNzU0QzI1LjA1NDMgNyAyNy4xMTA3IDkuOTgyNzkgMjYuMDUxMyAxMi43NjdMMjUuODYzMSAxMy4yNjEzQzI0LjU0NDQgMTYuNzI2OSAyMS4yMjE4IDE5LjAxNzYgMTcuNTEzOCAxOS4wMTc2SDYuOTc1NzVMNi41NTAzNSAxOS4xMjM5Wk04LjM2ODg0IDE5Ljk3NDdDNy4wNTA0MiAxOS45NzQ3IDUuODM2NTUgMjAuNjkyNSA1LjIwMTE4IDIxLjg0NzdDNC42MTIyMyAyMi45MTg1IDUuMzg2OTQgMjQuMjI4NyA2LjYwOTAzIDI0LjIyODdIMTAuODA0NEwxMy40NjMxIDE5Ljg2ODRMMTMuMTQ0MSAxOS45NzQ3SDguMzY4ODRaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMjBfMykiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8yMF8zIiB4MT0iMTguMDI2NiIgeTE9IjUuNTI5MjYiIHgyPSIyLjI2ODYxIiB5Mj0iMzAuMTExNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjREQ1OUZGIi8+CjxzdG9wIG9mZnNldD0iMC40NzM5NTgiIHN0b3AtY29sb3I9IiM1MDY5RkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAyNUZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==',\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '52a047ee205701895ee06a375492490ec9c597ce.factory.bridge.near',\n },\n {\n decimals: 18,\n icon:\n 'data:image/png;base64,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',\n name: 'Ether',\n reference: null,\n reference_hash: null,\n spec: 'ft-1.0.0',\n symbol: 'ETH',\n id: 'aurora',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Pixeltoken',\n symbol: 'PXT',\n icon:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAANdJREFUWIXll70RwjAMhWUuNGwARVgEmuyQJRgo7AA7uGESGioaGlpTcK+w7nR+gcIyfJ1zys/7dHKSsO53SSqyqHlzEZFu7gm364Wq22z3VF07BpB8CANXn971JRP+Dejk8fSgLoz6kgm/Btjk58MqW4/TM6svmfBrQIOkSAiO92W2Hmc+gF8D6BV6h17qhOxUWPg18C16OizaN2AlxXTEFEWkxZ2QRe8DoJQctG8AIDH4vS8iFjY5aM8Au8Ox+DdgvRUBO+8W/g0AbUIf/5TqBsLf/x2/ADJHSOenTxC2AAAAAElFTkSuQmCC',\n reference: '',\n reference_hash: '',\n decimals: 6,\n id: 'pixeltoken.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Debio',\n symbol: 'DBIO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIxOTAgOTcgNDIwIDQyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgODAwIDgwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48c3R5bGU+LnN0MHtmaWxsOiMzNjM2MzZ9LnN0M3tmaWxsOiNmZjU2ZTB9PC9zdHlsZT48L2RlZnM+PGNpcmNsZSBjbGFzcz0ic3QzIiBjeD0iNDAwIiBjeT0iMzA3LjM5IiByPSIyMDguNTgiLz48cGF0aCBkPSJNNDczLjk5IDIxMS4zczIuMzQgNTYuMjUtNzcuMzQgOTguNDMtNzAuMzEgOTMuNzQtNzAuMzEgOTMuNzQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNlNmU2ZTY7c3Ryb2tlLXdpZHRoOjM3LjQ5NzU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMzI2LjAxIDIxMS4zcy0yLjM0IDU2LjI1IDc3LjM0IDk4LjQzIDcwLjMxIDkzLjc0IDcwLjMxIDkzLjc0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS13aWR0aDozNy40OTc1O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwIi8+PGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNDAwIiBjeT0iMjE2LjQyIiByPSIyMC40OSIvPjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjQwMCIgY3k9IjM5OC4zNiIgcj0iMjAuNDkiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMzYuMzQyIDY1OC4wNzUpIiBjbGFzcz0ic3QzIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlO2ZvbnQtc2l6ZToxMTIuNDkyNXB4O2ZvbnQtZmFtaWx5OidBcnRlZ3JhU2Fucy1TZW1pQm9sZCciPkRlQmlvPC90ZXh0Pjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'dbio.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Aurora',\n symbol: 'AURORA',\n icon:\n \"data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 288 288' style='enable-background:new 0 0 288 288;' xml:space='preserve'%3E %3Cstyle type='text/css'%3E .st0%7Bfill:%2370D44B;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E %3Cpath class='st0' d='M144,0L144,0c79.5,0,144,64.5,144,144v0c0,79.5-64.5,144-144,144h0C64.5,288,0,223.5,0,144v0 C0,64.5,64.5,0,144,0z'/%3E %3Cpath class='st1' d='M144,58.8c7.6,0,14.5,4.3,17.9,11.1l56.2,112.5c4.9,9.9,0.9,21.9-9,26.8c-2.8,1.4-5.8,2.1-8.9,2.1H87.8 c-11,0-20-9-20-20c0-3.1,0.7-6.2,2.1-8.9l56.2-112.5C129.5,63,136.4,58.7,144,58.8 M144,45c-12.8,0-24.5,7.2-30.2,18.7L57.6,176.2 c-8.3,16.7-1.6,36.9,15.1,45.3c4.7,2.3,9.9,3.6,15.1,3.6h112.5c18.6,0,33.8-15.1,33.8-33.7c0-5.2-1.2-10.4-3.6-15.1L174.2,63.7 C168.5,52.2,156.8,45,144,45z'/%3E %3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: 'aaaaaa20d9e0e2461697782ef11675f668207961.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Meta Token',\n symbol: '$META',\n icon:\n \"data:image/svg+xml,%3csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='96' height='96' rx='48' fill='white'/%3e%3cpath d='M29.2241 28.7456C28.396 27.9423 27.0094 28.5289 27.0091 29.6825L27 66.6773C26.9997 67.8501 28.4257 68.4286 29.2426 67.5872L48.6529 47.5943L29.2241 28.7456Z' fill='%23231B51'/%3e%3cpath d='M66.7759 28.7456C67.604 27.9423 68.9906 28.5289 68.9909 29.6825L69 66.6773C69.0003 67.8501 67.5743 68.4286 66.7574 67.5872L47.3471 47.5943L66.7759 28.7456Z' fill='%23231B51'/%3e%3c/svg%3e\",\n reference: 'https://metapool.app',\n reference_hash: null,\n decimals: 24,\n id: 'meta-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Potato 🥔',\n symbol: 'POTATO',\n icon:\n 'data:image/jpeg;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'v1.dacha-finance.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Flux Token',\n symbol: 'FLX',\n icon:\n \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='140px' height='140px' viewBox='0 0 140 140' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3EFlux Logo New%3C/title%3E%3Cdefs%3E%3CradialGradient cx='50%25' cy='0%25' fx='50%25' fy='0%25' r='248.533062%25' gradientTransform='translate(0.500000,0.000000),scale(1.000000,0.393939),rotate(90.000000),translate(-0.500000,-0.000000)' id='radialGradient-1'%3E%3Cstop stop-color='%23FE84FC' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%232ED1FF' offset='100%25'%3E%3C/stop%3E%3C/radialGradient%3E%3C/defs%3E%3Cg id='logos' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='Group' transform='translate(-143.000000, -251.000000)'%3E%3Cg id='Group-2' transform='translate(0.000000, 251.000000)'%3E%3Cg id='Flux-Logo' transform='translate(143.000000, 0.000000)'%3E%3Cg id='Flux-Logo-New' transform='translate(70.000000, 70.000000) rotate(90.000000) translate(-70.000000, -70.000000) '%3E%3Ccircle id='Oval' fill='%23FFFFFF' cx='70' cy='70' r='70'%3E%3C/circle%3E%3Crect id='Rectangle' fill='%230F0E25' transform='translate(70.000000, 83.000000) rotate(90.000000) translate(-70.000000, -83.000000) ' x='57' y='50' width='26' height='66' rx='13'%3E%3C/rect%3E%3Cpath d='M50,30 C57.1797017,30 63,35.8202983 63,43 L63,96 L63,96 L50,96 C42.8202983,96 37,90.1797017 37,83 L37,43 C37,35.8202983 42.8202983,30 50,30 Z' id='Rectangle' fill='%230F0E25'%3E%3C/path%3E%3Cpath d='M63,44 L76,44 C83.1797017,44 89,49.8202983 89,57 L89,97 C89,104.179702 83.1797017,110 76,110 C68.8202983,110 63,104.179702 63,97 L63,44 L63,44 Z' id='Rectangle' fill='url(%23radialGradient-1)'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '3ea8ea4237344c9931214796d9417af1a1180770.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'nUSDO',\n symbol: 'nUSDO',\n icon:\n 'data:image/png;base64,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',\n reference: '',\n reference_hash: '',\n decimals: 8,\n id: 'v3.oin_finance.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'oinfinance',\n symbol: 'OIN',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 974.66 974.66'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bisolation:isolate;%7D.cls-2%7Bfill:%235a8dff;%7D.cls-3%7Bfill:%23fff;%7D.cls-4,.cls-5%7Bfill:%231b57f6;%7D.cls-5%7Bmix-blend-mode:multiply;%7D%3C/style%3E%3C/defs%3E%3Cg class='cls-1'%3E%3Cg id='图层_1' data-name='图层 1'%3E%3Ccircle class='cls-2' cx='487.33' cy='484.76' r='473.82'/%3E%3Ccircle class='cls-3' cx='487.33' cy='484.76' r='358.99'/%3E%3Cpath class='cls-4' d='M487.33,98.08c-213.55,0-386.67,173.12-386.67,386.68S273.78,871.43,487.33,871.43,874,698.31,874,484.76,700.88,98.08,487.33,98.08ZM368.59,297.83a9,9,0,0,1,12.71-.14,287,287,0,0,0,137.53,75,110.56,110.56,0,0,1,51.78,28.2,9,9,0,0,1-12.49,12.93,92.54,92.54,0,0,0-43.3-23.61,304.9,304.9,0,0,1-146.09-79.66A9,9,0,0,1,368.59,297.83Zm216.7,197.36a9,9,0,0,1,17.93,1.3c-1.86,25.6-15.92,49.6-38.58,65.86-18.31,13.13-40.08,19.87-63.28,19.87a130.41,130.41,0,0,1-32.7-4.3,9,9,0,0,1,4.52-17.4c29.91,7.76,58.67,3.23,81-12.78C572.48,534.61,583.82,515.45,585.29,495.19Zm-9.7-47.57a15.39,15.39,0,1,1,12.8,17.6A15.39,15.39,0,0,1,575.59,447.62Zm-244-118.07a9,9,0,0,1,12.71,0,335.48,335.48,0,0,0,163.36,90.53c30.07,6.9,50.7,33.19,48,61.16-1.64,17.07-9.08,30.42-21.52,38.59-8.23,5.41-18.1,8.14-28.9,8.14a76.36,76.36,0,0,1-23.39-3.91,9,9,0,1,1,5.52-17.1c14.54,4.69,27.64,3.93,36.9-2.15,7.73-5.08,12.39-13.82,13.49-25.29,2-20.88-15.76-37.71-34.1-41.92a353.42,353.42,0,0,1-172.1-95.35A9,9,0,0,1,331.59,329.55Zm-30,41.34a9,9,0,0,1,12.71-.23c36.29,35,81.18,62.68,133.43,82.22a9,9,0,0,1-3.15,17.41,8.89,8.89,0,0,1-3.14-.58c-54.58-20.41-101.55-49.38-139.62-86.11A9,9,0,0,1,301.56,370.89ZM452.39,512.8a15.39,15.39,0,1,1-12.8-17.6A15.38,15.38,0,0,1,452.39,512.8ZM278.9,429.48a9,9,0,0,1,12.54-2.07c38.33,27.47,67.76,43.32,105.66,61.43a9,9,0,1,1-7.75,16.21c-38.8-18.53-69-34.79-108.38-63A9,9,0,0,1,278.9,429.48Zm-4.46,60.34A9,9,0,0,1,287,487.67c45.31,32,91.6,55,137.57,68.37a9,9,0,0,1-2.5,17.62,8.76,8.76,0,0,1-2.51-.36c-47.9-13.9-96-37.78-142.94-70.95A9,9,0,0,1,274.44,489.82Zm18.28,73.95a9,9,0,0,1,12.38-2.89c44.19,27.46,93.91,45,123.06,51.75,27.43,6.32,56.78,9,65.69,9,77.91,0,141.29-63.38,141.29-141.29,0-65.78-46.6-123.81-110.81-138L516,340.57l0-.24a257.48,257.48,0,0,1-100.58-53,9,9,0,1,1,11.69-13.66A239.17,239.17,0,0,0,528.3,324.87l8.22,1.9,0,.16c68.06,19,116.62,82.18,116.62,153.46,0,87.82-71.45,159.27-159.27,159.27-9.61,0-40.9-2.87-69.72-9.51-30.5-7-82.46-25.38-128.52-54A9,9,0,0,1,292.72,563.77ZM493.85,688.36l-9-.07c-5.35-.12-10.74-.42-16.1-.9a302.94,302.94,0,0,1-109.22-31.85,9,9,0,1,1,8.2-16,284.85,284.85,0,0,0,102.64,29.94,225.63,225.63,0,0,0,23.34.87l7.29-.11c101.46-3.78,182.84-87.49,182.84-189.86,0-89.16-63.2-167.31-150.26-185.83l-.12,0-.11,0a206.73,206.73,0,0,1-49.14-18.68A9,9,0,0,1,492.69,260,188.85,188.85,0,0,0,537.56,277h0c95.18,20.37,164.23,105.85,164.23,203.35C701.82,595.07,608.53,688.36,493.85,688.36Z'/%3E%3Cpath class='cls-5' d='M144.68,484.76c0-206.19,161.39-374.67,364.73-386-7.27-.41-14.58-.64-21.94-.64-213.56,0-386.68,173.12-386.68,386.68S273.91,871.43,487.47,871.43c7.36,0,14.67-.23,21.94-.64C306.07,859.42,144.68,690.94,144.68,484.76Z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 8,\n id: '9aeb50f542050172359a0e1a25a9933bc8c01259.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Myria',\n symbol: 'MYRIA',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MDAgNjAwIj48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtLjEzKSI+PHBhdGggc3R5bGU9ImZpbGw6bm9uZSIgZD0iTTAgMGg2MDB2NjAwSDB6Ii8+PC9jbGlwUGF0aD48c3R5bGU+LmNscy00e2ZpbGw6I2ZmZn08L3N0eWxlPjwvZGVmcz48ZyBzdHlsZT0iY2xpcC1wYXRoOnVybCgjY2xpcC1wYXRoKSI+PHBhdGggZD0iTTYwMCAzMDAuMTNjMCAxNjUuNjktMTM0LjMxIDMwMC0zMDAgMzAwUzAgNDY1LjgxIDAgMzAwLjEzIDEzNC4zMS4xMyAzMDAgLjEzczMwMCAxMzQuMzEgMzAwIDMwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtLjEzKSIgc3R5bGU9ImZpbGw6Izg2MmFlOSIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTQ3MS4xMSA0MjEuMjFhMTcuNzUgMTcuNzUgMCAwIDAgMi4wNy04IDcuMjQgNy4yNCAwIDAgMCAwLTEuMVYyNjMuNDdhOTUuMzYgOTUuMzYgMCAwIDAtMTQyLjYxLTgxLjcybC0xLjQ5Ljg1LTEyNi42NCA3My4xMi0xLjExLjY1YTE4LjE4IDE4LjE4IDAgMCAwLTUuNzcgNS43NWMtLjE1LjIxLS4yNi40MS0uMzkuNjNhMTguMzMgMTguMzMgMCAwIDAgNi43MSAyNWwyNDMuODQgMTQwLjgzYTE4LjMzIDE4LjMzIDAgMCAwIDI1LTYuNzFjLjEzLS4yMi4yNC0uNDIuMzUtLjY1TTIxMi41NCAyNzEuOTNsMTQuNzQtOC41MyA2Mi44NC0zNi4yNiA0OS4zOC0yOC41MSAxLjYtLjkxYTc2LjM0IDc2LjM0IDAgMCAxIDExMyA2NS4yNnYxNDguNDNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0uMTMpIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMTI4Ljg5IDQyMS4yMWExNy43NyAxNy43NyAwIDAgMS0yLjA4LTggNy41IDcuNSAwIDAgMSAwLTEuMVYyNjMuNDdhOTUuMzYgOTUuMzYgMCAwIDEgMTQyLjYxLTgxLjcybDEuNDkuODUgMTI2LjY1IDczLjExIDEuMTEuNjVhMTguMTcgMTguMTcgMCAwIDEgNS43NyA1Ljc1Yy4xNS4yMS4yNi40MS4zOS42M2ExOC4zMyAxOC4zMyAwIDAgMS02LjcxIDI1TDE1NC4yOCA0MjguNThhMTguMzMgMTguMzMgMCAwIDEtMjUtNi43MWMtLjEzLS4yMi0uMjQtLjQyLS4zNS0uNjVtMjU4LjUzLTE0OS4yOS0xNC43NC04LjUzLTYyLjgzLTM2LjI2LTQ5LjM5LTI4LjUyLTEuNi0uOTFhNzYuMzQgNzYuMzQgMCAwIDAtMTEzIDY1LjI2djE0OC40NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLS4xMykiLz48L2c+PC9zdmc+',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'myriadcore.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'xRef Finance Token',\n symbol: 'xREF',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNjIiIHZpZXdCb3g9IjAgMCA1NiA2MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEuODU2OTMgMTcuODg1NkMxLjg1NjkzIDE2LjAyNzggMi44ODY5MiAxNC4zMjMyIDQuNTMxNTEgMTMuNDU5MkwyNS45MjE2IDIuMjIxNzJDMjcuMzc3NSAxLjQ1NjgzIDI5LjExNjUgMS40NTY4MyAzMC41NzI0IDIuMjIxNzJMNTEuOTYyNCAxMy40NTkyQzUzLjYwNyAxNC4zMjMyIDU0LjYzNyAxNi4wMjc4IDU0LjYzNyAxNy44ODU2VjQ1LjYzMDRDNTQuNjM3IDQ3LjYwMjEgNTMuNDc4MiA0OS4zODk4IDUxLjY3ODMgNTAuMTk0N0wzMC4yODgyIDU5Ljc2MDZDMjguOTg5NCA2MC4zNDE0IDI3LjUwNDYgNjAuMzQxNSAyNi4yMDU3IDU5Ljc2MDZMNC44MTU3IDUwLjE5NDdDMy4wMTU3NCA0OS4zODk4IDEuODU2OTMgNDcuNjAyMSAxLjg1NjkzIDQ1LjYzMDRMMS44NTY5MyAxNy44ODU2WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEyNDYxXzIwNzUpIiBzdHJva2U9IiMwMEM2QTIiIHN0cm9rZS13aWR0aD0iMiIvPgo8cGF0aCBkPSJNMTMuNjk3OCAyMC4zMzJMMjguMjQ3MSAxNEwyOC4yMjAyIDMwLjU0MTdMMjAuMjgwMyAyMy43MTE2TDEyLjMxMzUgMzAuOTI5NVYyMi4zNjU0QzEyLjMxNTIgMjEuNDkyMiAxMi44NTM4IDIwLjY5OTMgMTMuNjk3OCAyMC4zMzJaIiBmaWxsPSIjMDBDNkEyIiBmaWxsLW9wYWNpdHk9IjAuNSIvPgo8cGF0aCBkPSJNMTQuMTAyMyA0Mi43NjQ1TDI4LjI0NzEgNDYuODYyNkwyOC4yMjAyIDM0LjU5NDRMMjAuMjc5NCAyNy45NDE0TDEyLjMxMzUgMzQuOTcyMlY0MC41Mjc0QzEyLjMxMzUgNDEuNTUxNSAxMy4wMzY3IDQyLjQ1NTkgMTQuMTAyMyA0Mi43NjQ1WiIgZmlsbD0iIzAwQzZBMiIgZmlsbC1vcGFjaXR5PSIwLjUiLz4KPHBhdGggZD0iTTQzLjY0NDUgNDIuNzYzM0wyOC4yNzQ0IDQ2Ljg2MzJMMjguMjQ2OCAzNC41MTU3TDQzLjIyMSAyMi40NjQ4QzQzLjIyMSAyMi40NjQ4IDQ1Ljc5MyAyNC4zOTk2IDQ1LjAzNzMgMjcuODE5NkM0My43MDQ4IDMzLjg1MTEgMzUuMTc5NiAzNS45ODY5IDM1LjE3OTYgMzUuOTg2OUw0My45MDk2IDQxLjE1NjFDNDQuNjE1NSA0MS41NzggNDQuNDU1NCA0Mi41NDcgNDMuNjQ0NSA0Mi43NjMzWiIgZmlsbD0iIzQ1RkZERSIvPgo8cGF0aCBkPSJNMzguNTkwMyAxOC45NzkzTDI4LjI3MzQgMTRMMjguMjQ2OCAzMC40MzE1TDQwLjY5NSAyMC4zNTA5QzQwLjY5NSAyMC4zNTA5IDQwLjQyNzEgMjAuMDU5NyAzOS42OTAxIDE5LjU4MDVDMzkuNDI4OSAxOS40MTE0IDM4LjU5MDMgMTguOTc5MyAzOC41OTAzIDE4Ljk3OTNaIiBmaWxsPSIjNDVGRkRFIi8+CjxwYXRoIGQ9Ik00MC41NTEgMTYuMDEwMUw0Ni42NjAyIDE4LjI4MDVDNDYuOTY3NSAxOC4zOTQzIDQ3LjE2OCAxOC42NjU2IDQ3LjE2OCAxOC45NjVWMjMuMTIwN0M0Ny4xNjggMjMuNDM4OCA0Ni43MjYgMjMuNTgyMiA0Ni41MDQyIDIzLjMzNDNMNDAuMjU1MyAxNi4zNjg3QzQwLjA4OTMgMTYuMTgzMSA0MC4zMDYyIDE1LjkxODEgNDAuNTUxIDE2LjAxMDFaIiBmaWxsPSIjNDVGRkRFIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTI0NjFfMjA3NSIgeDE9IjI4LjI0NyIgeTE9IjEiIHgyPSIyOC4yNDciIHkyPSI2MC42NzM1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMTEzMjAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAxMzIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'xtoken.ref-finance.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Solana',\n symbol: 'SOL',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MCIgeDI9IjUwIiB5MT0iMjciIHkyPSI3NCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMTRlNmFkIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjYTk2NGRlIi8+PC9saW5lYXJHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGQ9Im0wIDBoMTAwdjEwMGgtMTAweiIvPjwvY2xpcFBhdGg+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIj48cGF0aCBkPSJtNTAgMGM5Ljg4OTEgMCAxOS41NTYxIDIuOTMyNDUgMjcuNzc4NSA4LjQyNjUyIDguMjIyNSA1LjQ5NDA4IDE0LjYzMTEgMTMuMzAyOTggMTguNDE1NSAyMi40MzkyOHM0Ljc3NSAxOS4xODk3IDIuODQ1MyAyOC44ODg3Yy0xLjkyOTMgOS42OTkxLTYuNjkxMyAxOC42MDgyLTEzLjY4NCAyNS42MDA4LTYuOTkyNiA2Ljk5MjctMTUuOTAxNyAxMS43NTQ3LTI1LjYwMDggMTMuNjg0LTkuNjk5IDEuOTI5Ny0xOS43NTI0LjkzOTEtMjguODg4Ny0yLjg0NTNzLTE2Ljk0NTItMTAuMTkzLTIyLjQzOTI4LTE4LjQxNTVjLTUuNDk0MDctOC4yMjI0LTguNDI2NTItMTcuODg5NC04LjQyNjUyLTI3Ljc3ODUgMC0xMy4yNjA4IDUuMjY3ODQtMjUuOTc4NSAxNC42NDQ3LTM1LjM1NTMgOS4zNzY4LTkuMzc2ODYgMjIuMDk0NS0xNC42NDQ3IDM1LjM1NTMtMTQuNjQ0N3oiIGZpbGw9IiMwMDAiLz48ZyBmaWxsPSJ1cmwoI2EpIiBmaWxsLW9wYWNpdHk9Ii45MiI+PHBhdGggZD0ibTMwLjM4MDYgNjIuNzg4OWMuMzEzMS0uMzIzNC44MzQ5LS41MzkgMS4zNTY3LS41MzloNDYuMjMwN2MuODM0OSAwIDEuMjUyMyAxLjA3NzkuNjI2MiAxLjcyNDdsLTkuMTgzNiA5LjQ4NjRjLS4zMTMuMzIzNC0uODM0OC41MzktMS4zNTY2LjUzOWgtNDYuMTI2NGMtLjgzNDggMC0xLjI1MjItMS4wNzgtLjYyNjEtMS43MjQ4eiIvPjxwYXRoIGQ9Im0zMC4zODA2IDI3LjUzOWMuMzEzMS0uMzIzNC44MzQ5LS41MzkgMS4zNTY3LS41MzloNDYuMjMwN2MuODM0OSAwIDEuMjUyMyAxLjA3OC42MjYxIDEuNzI0OGwtOS4xODM1IDkuNDg2M2MtLjMxMzEuMzIzNC0uODM0OC41MzktMS4zNTY2LjUzOWgtNDYuMTI2NGMtLjgzNDkgMC0xLjI1MjMtMS4wNzgtLjYyNjEtMS43MjQ4eiIvPjxwYXRoIGQ9Im02OS41MTUgNDUuMDAxOGMtLjMxMzEtLjMyMzQtLjgzNDktLjUzOS0xLjM1NjctLjUzOWgtNDYuMjMwN2MtLjgzNDggMC0xLjI1MjIgMS4wNzgtLjYyNjEgMS43MjQ4bDkuMTgzNSA5LjQ4NjRjLjMxMzEuMzIzMy44MzQ5LjUzODkgMS4zNTY3LjUzODloNDYuMjMwNmMuODM0OSAwIDEuMjUyNC0xLjA3OC42MjYyLTEuNzI0OHoiLz48L2c+PC9nPjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'sol.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'TerraUSD',\n symbol: 'UST',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTgxLjA5NiAxMy43MjItLjAxLS4wMS4wMTQtLjAwOGE0NC4xNzQgNDQuMTc0IDAgMCAwIC0yOC43NjUtMTAuNTc0IDQ0LjE2NyA0NC4xNjcgMCAwIDAgLTE4LjAxIDMuODI1Yy0zLjcwNSAxLjU2NS02LjcxNSAzLjYzNS05LjE5NSA2Ljg4NS0xMi43NCAxNi44MyAyOS45NiAyOS4wNiA1Mi43OSAyOS4xMDQgMTAuNDkyIDcuNTI4IDEzLjQ0Ni0yMS4yMzYgMy4xNzctMjkuMjIyeiIgZmlsbD0iIzBkM2NhNCIvPjxwYXRoIGQ9Im0zNi44OTMgMTQuMDYzYy01Ljg2MyA4LjgxNi0yNS40MDMgMTUuMDI3LTI4LjYxNSAxNC4wNTdsLS4wMTktLjA0Yy4xMzItLjI2OC4yNjgtLjUzMi40LS43OTVhNDYuNjcyIDQ2LjY3MiAwIDAgMSA4LjQ4LTExLjU4IDQ3LjIxIDQ3LjIxIDAgMCAxIDkuMTg1LTcuMTUxYzIuNzM3LTEuNTg0IDUuNTM2LTEuNjg4IDYuNDU4LTEuNzIgOC43MDguMTc3IDQuMTYgNy4xNiA0LjExIDcuMjI5em0tNC44MDYgNjIuMzAzYy40MTggMi43NzItLjAwOSAxMy43MTMtLjU4IDE0LjYzNC0uNDg2LjAzMi0xLjUwMy4wOTUtNC40NDgtMS41NTdhNDYuODI3IDQ2LjgyNyAwIDAgMSAtOS45Mi03LjU3MyA0Ni45NTIgNDYuOTUyIDAgMCAxIC04LjQ4LTExLjU4IDQ2LjUyNCA0Ni41MjQgMCAwIDEgLTUuMjIzLTIxLjVjMC0yLjU4MS4yMDgtNS4xMTguNjEyLTcuNTg3YTQ2LjUxMSA0Ni41MTEgMCAwIDEgMi4yNjUtOC41OThjMy4zNzYgNC40ODMgNy4yNzggOC41NDQgMTAuNTk1IDEzLjA3MyAzLjE1OSA0LjMxNSA3LjUwNiAxMS4zNDQgOC4zODYgMTIuODUgNS41IDkuMzE2IDYuMzc2IDE1LjA3NCA2Ljc5MyAxNy44Mzh6bS0zLjMxMi0zOC44NTdjLTIuMDA2LTE1LjMxIDI5LjA1NS0yNS45NzkgNDIuNzA1LTI2LjM4MiAxLjYzOC4wMTggNi42MTYuMDc3IDkuNTI1IDIuNDM2IDUzLjQ5NSA1MC45MzctNDYuOTU3IDY0LjI0LTUyLjIzIDIzLjk0N3oiIGZpbGw9IiM1NDk0ZjgiLz48cGF0aCBkPSJtMjAuNDU3IDkyLjM1YzAgMS44MjUgMS4yNyAzLjMwNCAyLjg0NSAzLjMxMyAzNy40OTYuMjU5IDczLjY5NC0xLjQ2IDczLjY5NC03LjA4MyAwLTE3LjAwNy03Ni41MzkgMy43Ny03Ni41MzkgMy43N3oiIGZpbGw9IiM3NjAxMDEiLz48cGF0aCBkPSJtMjMuMzIgNDQuMTg3YTIuODYzIDIuODYzIDAgMCAwIC0yLjg2MyAyLjg2M3Y0NS4zYzAgMS41NzQgMS4yNyAyLjg1IDIuODQ1IDIuODU4IDM3LjQ5Ni0uMjc2IDczLjc0LTEyLjY4NyA3My42OTQtNi42M3YtNTEuMDI0Yy4wNDUtNi4wNTMtMzYuMTg5IDYuMzUzLTczLjY3NiA2LjYzNHoiIGZpbGw9IiNkZTMwMzAiLz48cGF0aCBkPSJtODQgODBjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxMS41IDAgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzNCAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2OC0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMi02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzNjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzNjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ni0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzNC02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0ibTI4LjU5MyA3MS41NGEyMDQuMTEyIDIwNC4xMTIgMCAwIDAgNy4wNjYtLjM3NiAyNTEuNzQ1IDI1MS43NDUgMCAwIDAgNi43MDYtLjU3MmMxLjEzLS4xMDkgMi4yNy0uMjIyIDMuNDQ1LS4zNSAxLjE3LS4xMjYgMi4zNjgtLjI1OCAzLjYxMi0uNDEyIDEuMjQzLS4xNSAyLjUzNi0uMzEzIDMuODg5LS40OSAxLjM1Mi0uMTczIDIuNzYzLS4zNzIgNC4yMzgtLjU5di0yNy41M2MtMTAuNTMyIDEuNTU2LTIyLjMxNyAyLjg3Mi0zNC4yMjkgMi45NThhMi44NjMgMi44NjMgMCAwIDAgLTIuODYzIDIuODY0djI0LjY1M2MxLjQ4NCAwIDIuODk1LS4wMTggNC4yNDctLjA1IDEuMzUzLS4wMTggMi42NDYtLjA2IDMuODktLjEwNXoiIGZpbGw9IiMxYTNhYjkiLz48cGF0aCBkPSJtMjMuMDUzIDQ2LjQ4IDEuMjIxIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OHptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjIuMTI2em01LjEzNS0uMjkyIDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzNS0uMjkxIDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzNC0uMjkyIDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bTUuMTMzLS4yOTIgMS4yMiAxLjg2Mi0yLjIyMi4xMjZ6bS0yOC4wNDcgNS4wMjYgMS4yMiAxLjg2Mi0yLjIyMi4xMjd6bTUuMTM1LS4yOTEgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM1LS4yOTIgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM0LS4yOTEgMS4yMjEgMS44NjItMi4yMjMuMTI3em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyIDEuODYyLTIuMjIzLjEyN3ptLTI4LjA0NyA1LjAyNiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptNS4xMzQtLjI5IDEuMjIxIDEuODYyLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptNS4xMzUtLjI5MyAxLjIyIDEuODYzLTIuMjIyLjEyNnptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzMi0uMjkyIDEuMjIxIDEuODYyLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptLTI4LjA0MiA1LjAyNiAxLjIyIDEuODYyLTIuMjIzLjEyNyAxLjAwMy0xLjk5em01LjEzNC0uMjkxIDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MyAxLjIyMSAxLjg2My0yLjIyMy4xMjd6bTUuMTM1LS4yOSAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzQtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bS0yOC4wNDggNS4wMjYgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM0LS4yOTEgMS4yMjEgMS44NjMtMi4yMjMuMTI2em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjMuMTI2IDEuMDAzLTEuOTg5em01LjEzNS0uMjkzIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzNC0uMjkxIDEuMjIxIDEuODYyLTIuMjIzLjEyN3ptNS4xMzMtLjI5MiAxLjIyMSAxLjg2My0yLjIyMy4xMjZ6bS0zMC42NTUgOS4wNDEgMS4yMjIgMS44NjMtMi4yMjMuMTI2IDEuMDAyLTEuOTg5em01LjEzNi0uMjkxIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzNC0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyMSAxLjg2My0yLjIyMy4xMjZ6bTUuMTM1LS4yOTEgMS4yMjEgMS44NjItMi4yMjMuMTI2IDEuMDAyLTEuOTg5em01LjEzNS0uMjkyIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzMy0uMjkyIDEuMjIgMS44NjMtMi4yMjMuMTI2em0tMjguMTk2LTIuMjY2IDEuMjIxIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OHptNS4xMzUtLjI5IDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzQtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bTUuMTM1LS4yOTIgMS4yMjEgMS44NjItMi4yMjMuMTI2em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'ust.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Celo',\n symbol: 'CELO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGgxMDB2MTAwaC0xMDB6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGQ9Im01MCAwYzkuODg5MSAwIDE5LjU1NjEgMi45MzI0NSAyNy43Nzg1IDguNDI2NTIgOC4yMjI1IDUuNDk0MDggMTQuNjMxMSAxMy4zMDI5OCAxOC40MTU1IDIyLjQzOTI4czQuNzc1IDE5LjE4OTcgMi44NDUzIDI4Ljg4ODdjLTEuOTI5MyA5LjY5OTEtNi42OTEzIDE4LjYwODItMTMuNjg0IDI1LjYwMDgtNi45OTI2IDYuOTkyNy0xNS45MDE3IDExLjc1NDctMjUuNjAwOCAxMy42ODQtOS42OTkgMS45Mjk3LTE5Ljc1MjQuOTM5MS0yOC44ODg3LTIuODQ1M3MtMTYuOTQ1Mi0xMC4xOTMtMjIuNDM5MjgtMTguNDE1NWMtNS40OTQwNy04LjIyMjQtOC40MjY1Mi0xNy44ODk0LTguNDI2NTItMjcuNzc4NSAwLTEzLjI2MDggNS4yNjc4NC0yNS45Nzg1IDE0LjY0NDctMzUuMzU1MyA5LjM3NjgtOS4zNzY4NiAyMi4wOTQ1LTE0LjY0NDcgMzUuMzU1My0xNC42NDQ3eiIgZmlsbD0iI2ZiY2M1YyIvPjxnIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Im00My41NDIxIDczLjcyNDljMy40MDg1LjAwODMgNi43NDI5LS45OTQ4IDkuNTgxMS0yLjg4MjUgMi44MzgxLTEuODg3NiA1LjA1MjQtNC41NzQ4IDYuMzYyNi03LjcyMTVzMS42NTczLTYuNjExNC45OTc1LTkuOTU1NWMtLjY1OTktMy4zNDQtMi4yOTcxLTYuNDE3Mi00LjcwNDMtOC44MzAzLTIuNDA3My0yLjQxMzItNS40NzY0LTQuMDU3OS04LjgxODktNC43MjU5LTMuMzQyNC0uNjY4MS02LjgwNzktLjMyOTQtOS45NTc4Ljk3My0zLjE0OTkgMS4zMDI1LTUuODQyNSAzLjUxMDItNy43MzcxIDYuMzQzOC0xLjg5NDYgMi44MzM1LTIuOTA1OSA2LjE2NTQtMi45MDU5IDkuNTc0IDAgNC41NjEgMS44MDkgOC45MzU5IDUuMDMwMiAxMi4xNjQ5IDMuMjIxMiAzLjIyOTEgNy41OTE2IDUuMDQ4OCAxMi4xNTI2IDUuMDZ6bTAgNi4yNzUxYy00LjY0OTYuMDA4My05LjE5NzMtMS4zNjI5LTEzLjA2NzMtMy45NC0zLjg3MDEtMi41NzcyLTYuODg4Ny02LjI0NDQtOC42NzM4LTEwLjUzNzgtMS43ODUyLTQuMjkzMy0yLjI1NjYtOS4wMTk3LTEuMzU0Ni0xMy41ODFzMy4xMzY5LTguNzUyNSA2LjQyMTctMTIuMDQzM2MzLjI4NDgtMy4yOTA3IDcuNDcyMS01LjUzMzEgMTIuMDMxOC02LjQ0MzMgNC41NTk3LS45MTAxIDkuMjg2OS0uNDQ3MiAxMy41ODM0IDEuMzMwMnM3Ljk2OTIgNC43ODk0IDEwLjU1MzMgOC42NTQ5YzIuNTg0IDMuODY1NSAzLjk2MzQgOC40MTA2IDMuOTYzNCAxMy4wNjAzLjAwNTUgMy4wODQtLjU5NzIgNi4xMzg5LTEuNzczNiA4Ljk4OTgtMS4xNzYzIDIuODUwOS0yLjkwMzQgNS40NDE5LTUuMDgyMiA3LjYyNDZzLTQuNzY2NiAzLjkxNDQtNy42MTU0IDUuMDk1OS01LjkwMjYgMS43ODk3LTguOTg2NyAxLjc4OTd6Ii8+PHBhdGggZD0ibTU2LjUgNjAuNzI0OWMzLjQwODYuMDA4MyA2Ljc0MjktLjk5NDggOS41ODExLTIuODgyNHM1LjA1MjUtNC41NzQ5IDYuMzYyNi03LjcyMTZjMS4zMTAyLTMuMTQ2NyAxLjY1NzMtNi42MTEzLjk5NzUtOS45NTU0LS42NTk5LTMuMzQ0MS0yLjI5NzEtNi40MTcyLTQuNzA0My04LjgzMDQtMi40MDczLTIuNDEzMS01LjQ3NjQtNC4wNTc4LTguODE4OC00LjcyNTktMy4zNDI1LS42NjgtNi44MDgtLjMyOTQtOS45NTc5Ljk3MzEtMy4xNDk5IDEuMzAyNC01Ljg0MjUgMy41MTAyLTcuNzM3MSA2LjM0MzdzLTIuOTA1OSA2LjE2NTQtMi45MDU5IDkuNTc0YzAgNC41NjEgMS44MDkgOC45MzU5IDUuMDMwMiAxMi4xNjVzNy41OTE2IDUuMDQ4OCAxMi4xNTI2IDUuMDU5OXptMCA2LjI3NTFjLTQuNjQ3OSAwLTkuMTkxMy0xLjM3ODItMTMuMDU1OS0zLjk2MDUtMy44NjQ1LTIuNTgyMi02Ljg3NjYtNi4yNTI0LTguNjU1My0xMC41NDY0LTEuNzc4Ni00LjI5NDEtMi4yNDQtOS4wMTkyLTEuMzM3Mi0xMy41Nzc3LjkwNjctNC41NTg2IDMuMTQ0OS04Ljc0NTkgNi40MzE0LTEyLjAzMjRzNy40NzM4LTUuNTI0NyAxMi4wMzI0LTYuNDMxNGM0LjU1ODUtLjkwNjggOS4yODM2LS40NDE0IDEzLjU3NzcgMS4zMzcyIDQuMjk0IDEuNzc4NyA3Ljk2NDIgNC43OTA4IDEwLjU0NjQgOC42NTUzIDIuNTgyMiAzLjg2NDYgMy45NjA1IDguNDA4IDMuOTYwNSAxMy4wNTU5LS4wMTExIDYuMjI5Mi0yLjQ5MDYgMTIuMi02Ljg5NTMgMTYuNjA0N3MtMTAuMzc1NSA2Ljg4NDItMTYuNjA0NyA2Ljg5NTN6Ii8+PHBhdGggZD0ibTU3LjY4ODkgNjcuODU3MWMxLjYyMzQtMS45NzM4IDIuNzg2LTQuMjg0OCAzLjQwMzQtNi43NjQ3IDIuNDczNy0uNjM0MSA0Ljc4MTItMS43OTUgNi43NjQ3LTMuNDAzNC0uMDk4MyAyLjg5MDUtLjcyNDkgNS43Mzg2LTEuODQ4NyA4LjQwMzQtMi42NDQxIDEuMDg1MS01LjQ2MjUgMS42ODMtOC4zMTk0IDEuNzY0N3ptLTE3LjQzNy0yNy42MDVjLTIuNDM1NC42MzQ2LTQuNzAxNiAxLjc5NjQtNi42Mzg2IDMuNDAzMy4wNzI1LTIuODkzNi43MDAxLTUuNzQ2NCAxLjg0ODctOC40MDMzIDIuNjU4NS0xLjE0MzcgNS41MTA0LTEuNzcxMSA4LjQwMzQtMS44NDg4LTEuNjIzNCAxLjk3MzgtMi43ODYgNC4yODQ4LTMuNDAzNCA2Ljc2NDd6Ii8+PC9nPjwvZz48L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'celo.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Celo Dollar',\n symbol: 'cUSD',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTEwMCA1MGMwLTI3LjYxNDItMjIuMzg1OC01MC01MC01MHMtNTAgMjIuMzg1OC01MCA1MCAyMi4zODU4IDUwIDUwIDUwIDUwLTIyLjM4NTggNTAtNTB6IiBmaWxsPSIjNDVjZDg1Ii8+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibTY5Ljg4MDUgNjIuNjQzOGMtMS41NjcxIDMuMzkzMS0zLjkzNzUgNi4zNTMyLTYuOTA2MSA4LjYyNDEtMi45Njg1IDIuMjcwOC02LjQ0NTggMy43ODQxLTEwLjEzMDcgNC40MDg3LTMuNjg1LjYyNDYtNy40NjY3LjM0MTctMTEuMDE3Ny0uODI0MS0zLjU1MTEtMS4xNjU4LTYuNzY0Ni0zLjE3OTQtOS4zNjIzLTUuODY2Ni0yLjU5NzgtMi42ODcxLTQuNTAxNS01Ljk2NjktNS41NDY1LTkuNTU1NC0xLjA0NDktMy41ODg1LTEuMTk5Ni03LjM3NzUtLjQ1MDctMTEuMDM5My43NDg5LTMuNjYxNyAyLjM3ODktNy4wODU3IDQuNzQ4OS05Ljk3NTggMi4zNzAxLTIuODkgNS40MDg3LTUuMTU4OSA4Ljg1MjktNi42MTAzbDIuMjY2OCA1LjM3OTJjLTIuNTcgMS4wODMxLTQuODM3NSAyLjc3NjEtNi42MDYgNC45MzI3LTEuNzY4NSAyLjE1NjUtMi45ODQ4IDQuNzExNS0zLjU0MzYgNy40NDM5LS41NTg5IDIuNzMyNC0uNDQzNSA1LjU1OTguMzM2MyA4LjIzNzYuNzc5OCAyLjY3NzcgMi4yMDAzIDUuMTI1MSA0LjEzODggNy4xMzAyIDEuOTM4NCAyLjAwNTIgNC4zMzYzIDMuNTA3OCA2Ljk4NjEgNC4zNzc3czUuNDcxNyAxLjA4MSA4LjIyMTUuNjE0OWMyLjc0OTctLjQ2NjEgNS4zNDQ0LTEuNTk1MyA3LjU1OTUtMy4yODk4IDIuMjE1Mi0xLjY5NDUgMy45ODQtMy45MDMzIDUuMTUzNC02LjQzNTNsNS45MTg5LjMwNDJ6Ii8+PHBhdGggZD0ibTU2LjEwNjEgMjQuNXYtNGg0LjUwMDV2NGMyIDAgNS4xNjY3LjY2NjcgNi41IDF2NC41Yy0xOS0zLTE1LjUwMTEgMy44NDYyLTggNSA2LjcyMTcgMS4wMzM5IDExIDIgMTEuNSA5IC40IDUuNi01LjgzMzMgNy42NjY3LTkgOHYzLjVoLTV2LTMuNWMtMi40IDAtNi42NjY3LTEuNjY2Ny04LjUtMi41di01LjVjNC41IDIuNSAxNyA0LjUgMTcgMHMtMTYuNTAxMS0zLTE4LjAwMDUtMTFjLTEuMDAyMy01LjM0NzUgNS4zMzMzLTcuODMzMyA5LTguNXoiLz48L2c+PC9zdmc+',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'cusd.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'ABR',\n symbol: 'ABR',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEyMSIgdmlld0JveD0iMCAwIDEyMSAxMjEiIHdpZHRoPSIxMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI2MC41IiBjeT0iNjAuNSIgZmlsbD0iIzBlMGIwZiIgZmlsbC1ydWxlPSJub256ZXJvIiByPSI2MC41Ii8+PGNpcmNsZSBjeD0iNjAuNSIgY3k9IjYwLjUiIHI9IjYwIiBzdHJva2U9IiMyZDJjMmUiIHN0cm9rZS1vcGFjaXR5PSIuODEiLz48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Im04MS4xNjg3IDUyLjIxNDctMTEuNjUzLTExLjY1MjloLTE3LjY1NTlsLTUuNjQ5MyA1LjY0OTl2LTIwLjEyNzdoLTYuMDAzN3YzNS42NjQ4IDcuNzY4NmwxMS42NTMgMTEuNjUyOWgxNy42NTU5bDUuNjUwMi01LjY0OTl2MjAuMTI3N2g2LjM1NjN2LTMzLjU0NjJ6bS0xNC40NzgxIDIyLjk1MjZoLTExLjY1MjJsLTguNDc1My04LjQ3NDh2LTQuOTQzNy02LjcwOTJsOC40NzUzLTguNDc0OGgxMS42NTIybDguNDc1MyA4LjQ3NDh2Ny40MTU1IDQuMjM3NHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtMzEuNzMzNCA3Mi42OTUydi0zMi4xMzM3aC02LjAwMjh2MzQuOTU4NmwyMC40ODEgMjAuNDgwOGgyMC40ODAxdi02LjAwM2gtMTcuNjU1OXoiIGZpbGw9IiM2ZGQiLz48cGF0aCBkPSJtNTUuMDM4OCAyNS43MzA1djYuMDAzaDE3LjY1NTlsMTcuMzAyNCAxNy4zMDI3djMyLjEzMzdoNi4wMDI4di0zNC45NTg2bC0yMC40ODEtMjAuNDgwOHoiIGZpbGw9IiM2ZGQiLz48L2c+PC9nPjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'abr.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Utopia',\n symbol: 'UTO',\n icon:\n \"data:image/svg+xml,%3Csvg id='Layer_1' data-name='Layer 1' xmlns='http://www.w3.org/2000/svg' viewBox='-40 -40 600 600'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%239f9f9f%7D.cls-2%7Bfill:%23fefefe%7D.cls-4%7Bfill:%23030303%7D %3C/style%3E%3C/defs%3E%3Cpath d='M371.65 15v23.92l-.47.71C368.82 41.48 366 41 363.36 41q-36.94.09-73.88 0h-176c-3.06 0-6.31.67-9.1-1.37l-.47-.71V15ZM55.21 355.33H31.66a2.81 2.81 0 0 1-.26-.3.82.82 0 0 1-.13-.37v-24H6.67V136.41h24.6l.69.44c2 2.64 1.38 5.75 1.39 8.67q.07 73.11 0 146.2c0 12.44.26 12.68 12.64 12.76 3 0 6-.29 8.85 1a3 3 0 0 1 1.23 1.1 12.38 12.38 0 0 1 1.18 6.17q.1 18 0 36.05c0 2.09.17 4.28-1.36 6.06ZM420.4 452.82v23.51c-3.87.66-178.64.93-195 .29v-23.8l.47-.71c2.79-2 6-1.37 9.1-1.37q75.33-.09 150.68 0c9.25 0 18.49-.06 27.74 0 2.25 0 4.6-.25 6.54 1.37ZM176.66 428H128v-23.83H79.16v-24.9l.39-.66c1.9-1.69 4.27-1.4 6.51-1.42 10.55-.08 21.09 0 31.63-.05 6.6-.05 7.89-1.5 8.12-8.1.16-4.52-.77-9.14 1.06-13.53a2.94 2.94 0 0 1 1.1-1.14 58.19 58.19 0 0 1 24.44-.12 3 3 0 0 1 1.2 1.07c1.29 2.36 1.19 4.95 1.2 7.5v30.75c.05 6.74 1.61 8.24 8.36 8.37 3.7.08 7.41-.1 11.1.23 2.23.2 3.9 1.14 4.1 3.54a107.23 107.23 0 0 1-.06 20 3.93 3.93 0 0 1-1 1.85c-.2.17-.43.31-.65.44Z'/%3E%3Cpath d='M225.4 452.82h-48.74V428c1.46-1.94 3.61-2 5.74-2.06 6.36-.1 12.72-.14 19.08.09 6.33-.23 12.67-.21 19-.07 1.93 0 4-.19 5.56 1.42 2.71 7.57 1.34 15.33 1 23-.04 1.09-.97 1.72-1.64 2.44ZM31.27 136.41V87.67h23.94l.7.45c1.36 1.51 1.34 3.39 1.35 5.22q.18 18.9 0 37.8a11.41 11.41 0 0 1-1 5 3.12 3.12 0 0 1-1.12 1.24c-7.1 2.15-14.32 1.17-21.51.74-1.03-.12-1.63-1.04-2.36-1.71Z'/%3E%3Cpath d='M55.21 87.67v-24.8h23.95l.69.44a3.53 3.53 0 0 1 1 1.84c.36 7.46 1.36 14.94-.69 22.33A3 3 0 0 1 79 88.65c-7.08 2-14.25 1.13-21.4.67-1.07-.06-1.67-.99-2.39-1.65ZM469.14 404.07V428h-24.8l-.71-.47a5.34 5.34 0 0 1-1.24-3.54q-.37-8.07 0-16.15a7 7 0 0 1 1.61-4.3 8.54 8.54 0 0 1 5.24-1.52c5-.13 10-.14 15 0 1.86.09 3.65.41 4.9 2.05Z'/%3E%3Cpath d='M79.16 62.87V38.92H104c.79.8 1.71 1.56 1.76 2.78.29 7 1.2 14-.69 20.86a3 3 0 0 1-1.13 1.23C96.52 66 89 64.92 81.56 64.53c-1.07-.06-1.68-1-2.4-1.66ZM444.34 428v24.8H420.4c-.67-.72-1.62-1.34-1.66-2.38-.33-7.7-1.67-15.44 1-23 1.15-1.33 2.78-1.33 4.32-1.4 5.11-.22 10.23-.18 15.35 0 1.9.03 3.68.36 4.93 1.98ZM79.16 379.27H55.21v-23.94c.52-.48.95-1.21 1.63-1.34a70.78 70.78 0 0 1 21.55-.16c1.55.19 2.36 1.57 2.5 3.09a109.82 109.82 0 0 1 0 19.53 4.76 4.76 0 0 1-1.73 2.82ZM444.34 111.61h24.8v73.54c-1.36 1.8-3.33 2-5.35 2-5 .13-9.94.18-14.9 0-5.5-.2-6.49-1.05-6.55-6.57-.18-14.62-.28-29.24.06-43.86-.24-6.35-.22-12.7-.12-19.06 0-2-.09-4 1.36-5.63ZM395.59 62.87h24.81v24.8c-.15.23-.3.46-.44.69a3.62 3.62 0 0 1-1.84 1c-7.43.4-14.88 1.3-22.25-.61a3 3 0 0 1-1.2-1.1c-1.72-8.12-2.21-16.24.23-24.32Z'/%3E%3Cpath d='M420.4 87.67h23.94v23.94c-.79.79-1.55 1.71-2.77 1.76-7 .29-14 1.2-20.87-.69a3.11 3.11 0 0 1-1.23-1.13c-2.14-7.1-1.16-14.3-.74-21.49.07-1.06 1-1.67 1.67-2.39ZM371.65 38.92h23.94v23.95c-.79.79-1.55 1.7-2.77 1.75-7 .3-14 1.2-20.87-.68a3.18 3.18 0 0 1-1.23-1.13c-2.13-7.1-1.16-14.31-.73-21.49.06-1.07 1.01-1.67 1.66-2.4Z'/%3E%3Cpath class='cls-1' d='M371.65 38.92v23.95c-.9 1.57-2.44 1.81-4 2-1.85.17-3.7.15-5.55.15q-124.27 0-248.55-.06c-3.25 0-6.93 1.15-9.57-2.05V38.92Z'/%3E%3Cpath class='cls-2' d='M104 62.87h267.65c1.92 1.47 2 3.6 2.07 5.74.1 3.68-.12 7.36.14 11 .28 4.05 1.77 5.54 5.81 5.83 3.53.25 7.07 0 10.6.14 2 .07 4 .3 5.32 2.07 1.93 1.47 2 3.6 2.08 5.74.11 3.53-.09 7.07.15 10.6.23 3.35 2 5.16 5.38 5.38 3.82.24 7.64 0 11.45.15 2.15.06 4.28.15 5.75 2.07 1.92 1.47 2 3.6 2.07 5.75.1 3.67-.12 7.35.13 11 .28 4 1.78 5.54 5.82 5.83 3.53.25 7.07 0 10.6.14 2 .06 4 .29 5.32 2.06v48.74h24.8v72.69c-1.25 1.62-3 2-4.92 2-3 .11-6 .06-9 .08-7.41.08-8.77 1.36-8.79 8.67-.05 14.34 0 28.68 0 43 0 3.27-.09 6.54 0 9.8.21 5.2 1.79 6.74 7.07 6.93 3.4.12 6.81 0 10.22.09 2 .06 4 .29 5.35 2.06v24.8c-1.45 1.93-3.59 2-5.71 2.05-6.32.1-12.64.16-19-.11-8 .24-16 .29-24 0-6.61.26-13.22.21-19.84.11a11 11 0 0 1-4.52-.85 3.53 3.53 0 0 1-1.28-.81c-1.44-2.28-1.36-4.85-1.38-7.4 0-3.11.09-6.23-.06-9.34-.22-4.62-1.65-6.06-6.2-6.29a67.32 67.32 0 0 0-7.65 0c-4.07.28-5.5 1.71-5.74 5.85-.22 3.68 0 7.37-.11 11.05-.06 2.4-.11 4.83-1.82 6.81-4.08 1.73-8.36.85-12.56 1s-8.19.09-12.28-.15c-6.36.26-12.72.22-19.08.12a11 11 0 0 1-4.54-.85 3.47 3.47 0 0 1-1.28-.82c-1.36-2.15-1.35-4.57-1.37-7 0-3.26.09-6.53-.07-9.79-.22-4.59-1.67-6-6.26-6.25-2.4-.12-4.82-.09-7.23 0-5.4.14-6.83 1.53-7 6.83-.11 3.54 0 7.09-.08 10.63-.07 2.27-.19 4.55-1.89 6.36-2.12 1.1-4.43.92-6.69.92q-29.41.09-58.84 0c-2.41 0-4.85.08-7.08-1.09-2.15-1.51-2.23-3.84-2.31-6.12-.14-3.56 0-7.12-.09-10.68-.17-5.33-1.6-6.72-7-6.86-2.13-.06-4.27-.09-6.41 0-4.58.25-6 1.68-6.19 6.35-.18 5.55.05 11.11-.27 16.67.34 6.24.22 12.48.14 18.72a11 11 0 0 1-1 4.55 2.94 2.94 0 0 1-1 1.19c-7.82 2.28-15.77 1.2-23.67.74-2.42-.14-2.95-2.34-3.11-4.45-.3-4 0-8-.22-11.93-.23-5.19-1.87-6.82-7-7-3.12-.14-6.25 0-9.38-.11-2-.07-4-.27-5.36-2.05-1.78-1.35-2-3.28-2.07-5.32-.09-3.82.1-7.65-.12-11.46-.24-4.14-1.67-5.57-5.75-5.83a69.87 69.87 0 0 0-8.92 0c-4.09.26-5.51 1.69-5.75 5.83-.23 3.81 0 7.64-.12 11.46 0 2-.29 4-2.07 5.32-.52.48-1 1.22-1.62 1.35a70.79 70.79 0 0 1-21.6.17c-2.15-.26-2.53-2.44-2.67-4.35-.32-4.26 0-8.53-.23-12.78-.22-5.2-1.85-6.83-7-7-4.26-.17-8.52 0-12.78-.2-3.1-.17-4.62-1.69-4.78-4.79-.22-4 0-8-.21-11.93-.23-5.18-1.86-6.8-7-7-3.12-.14-6.25 0-9.38-.11-2-.07-4-.28-5.36-2.05a5.39 5.39 0 0 1-2-4.1c-.09-1.71-.14-3.41-.14-5.12V145.58c0-3.16-.87-6.66 2.07-9.22 1.37-1.78 3.35-2 5.37-2 3.14-.11 6.27 0 9.4-.11 5.22-.22 6.91-1.8 7-7 .18-10.54 0-21.07.1-31.61 0-2.78-.52-5.79 2.08-7.93 1.47-1.93 3.6-2 5.74-2.08 3.68-.1 7.36.13 11-.13 4-.29 5.54-1.78 5.82-5.83.26-3.66 0-7.34.14-11 .15-2.2.21-4.33 2.21-5.8ZM469.14 404.07h-24.8l-.71-.47a5.84 5.84 0 0 1-1.28-3.92c-.19-5.76-.23-11.51 0-17.26.07-1.4.18-2.84 1.39-3.84 7.57-2.59 15.3-1.31 23-1 1 0 1.66 1 2.37 1.65Z'/%3E%3Cpath class='cls-1' d='M469.14 379.27h-24.8c-1.66-.8-1.87-2.36-1.95-3.92-.26-5.33-.25-10.66 0-16a5.23 5.23 0 0 1 1.95-4h24.8Z'/%3E%3Cpath d='M469.14 330.53h-24.36c-.65-3.68-.88-58.4-.29-72.69h24.65Z'/%3E%3Cpath class='cls-1' d='M55.21 136.41v170.18H31.72a2.76 2.76 0 0 1-.3-.29.64.64 0 0 1-.15-.36V136.41Z'/%3E%3Cpath d='M55.21 306.59H78.7a1.67 1.67 0 0 1 .31.28.73.73 0 0 1 .14.36v23.15h24.21a4.48 4.48 0 0 1 .45.45.8.8 0 0 1 .14.36v24.14h24v23.94H79.16v-23.94H55.21Z' fill='%23a1a1a1'/%3E%3Cpath class='cls-1' d='M420.4 428v24.8h-195V428c.7-1.53 2.11-1.78 3.55-1.94a48.57 48.57 0 0 1 5.12-.17h177.66c2.95.11 6.36-.98 8.67 2.11ZM152.71 355.33h23.49a1.72 1.72 0 0 1 .31.29.7.7 0 0 1 .14.36v23.29h24.8c2 1.24 2 3.31 2 5.26q.24 19.08 0 38.16c0 2-.25 4-2 5.33h-24.8v-23.5a1.7 1.7 0 0 0-.3-.3.62.62 0 0 0-.36-.14h-23.28Z'/%3E%3Cpath class='cls-1' d='M127.91 355.33V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h24.15v24.8Z'/%3E%3Cpath class='cls-2' d='M201.46 428v-48.73c1.48-1.95 3.64-2 5.79-2 6-.09 11.95-.17 17.92.12 7-.27 14-.31 20.93-.08 5.06.17 5.88 1.07 6.13 6.13.21 4-.06 8 .17 12 .27 4.69 1.92 6.25 6.65 6.56 11.72.77 13-.4 13-12.27 0-12.46 0-12.47 12.37-12.48h30.76c2.41 0 4.86-.13 7.15.88a3.53 3.53 0 0 1 1.27.77c2.32 4.12 1.32 8.63 1.39 13 .15 9.66.55 10.16 10.16 10.16h.85c7.68 0 8.7-1 8.75-8.55v-8.54a11.49 11.49 0 0 1 1.24-5.78 3 3 0 0 1 1.23-1 13.24 13.24 0 0 1 5.42-.92c14.31 0 28.63-.21 42.94.11 6.25-.24 12.51-.16 18.76-.12a14.32 14.32 0 0 1 6.23 1.14c1.93 1.13 1.76 3.1 1.84 4.9.2 4 0 7.93.14 11.88.2 5 1.73 6.58 6.68 6.8 3.26.15 6.51 0 9.77.1 2 .07 4 .29 5.33 2.06V428H201.46Z'/%3E%3Cpath class='cls-1' d='M79.16 87.67v48.74H55.21V87.67ZM104 62.87v24.8H79.16v-24.8ZM444.34 136.41H420.4v-24.8h23.94ZM395.59 87.67h-23.94v-24.8h23.94ZM420.4 111.61h-24.81V87.67h24.81Z'/%3E%3Cpath d='M322.9 379.27h-48.27a2.07 2.07 0 0 0-.31.27.68.68 0 0 0-.16.36v24h-23.67c.06.06-.06 0-.14-.14a.7.7 0 0 1-.14-.36v-24.15H225.4c-.46-.52-1.24-.92-1.33-1.59-.92-7.32-1.93-14.66.63-21.89l.7-.46h72.7c4-3.06 20.75-3.06 24.8 0 3.1 4.03 3.1 20.08 0 23.96ZM274.15 257.84H225.4V209.1c1.37-1.8 3.35-2 5.37-2q19-.19 38 0c2 0 4 .24 5.37 2 1.8 1.36 2 3.34 2 5.37q.19 19 0 38c.03 2.03-.14 4.01-1.99 5.37ZM395.59 257.84h-48.74V209.1c1.36-1.8 3.34-2 5.36-2q19-.19 38 0c2 0 4 .24 5.37 2 1.81 1.36 2 3.34 2 5.37q.21 19 0 38c.03 2.03-.18 4.01-1.99 5.37Z'/%3E%3Cpath class='cls-1' d='M395.59 257.84V209.1H420c.64 3.58.85 35.66.29 48.74Z'/%3E%3Cpath d='M444.34 404.07H420.4v-24.8c-3-4-3-19.92 0-23.94h23.94v48.74ZM395.59 379.27h-48.74c-.36-.45 0 .24-.35-.23-2.73-3.92-2.49-20 .35-23.71h24.8c4-3 19.93-3 23.94 0 3.04 4.02 3.04 19.93 0 23.94Z'/%3E%3Cpath class='cls-1' d='M274.15 209.1H225.4v-23.5c3.58-.64 35.65-.85 48.75-.3ZM395.59 209.1h-48.74v-23.5c3.58-.64 35.65-.85 48.74-.3ZM274.15 257.84V209.1h23.5c.64 3.58.85 35.65.3 48.74ZM322.9 355.33h-24.8V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h24.15ZM395.59 355.33h-23.94V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h23.29Z'/%3E%3Cpath d='M201.46 355.33V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h23.29v24.8c-4.01 3-19.93 3-23.94-.03Z'/%3E%3Cpath class='cls-1' d='M127.78 136.53v23.73h-23.64v-23.73ZM346.85 355.33v23.94c-4 3-19.93 3-24 0v-23.94ZM152.83 111.49V87.76h23.64v23.73Z'/%3E%3Cpath d='M322.9 379.27h24v24.35a2.07 2.07 0 0 1-.29.3.67.67 0 0 1-.37.15H322.9Z'/%3E%3Cpath class='cls-1' d='M127.79 136.27V111.7h24.91v24.57ZM201.45 379.25v-23.91h23.94v23.91ZM395.57 379.25v-23.91h24.86v23.91Z'/%3E%3Cpath class='cls-4' d='M469.17 404.08v-73.61h23.92v73.61ZM469.17 257.76v-72.61h23.92v72.61Z'/%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 8,\n id: 'utopia.secretskelliessociety.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'DEIP Token',\n symbol: 'DEIP',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgeD0iLjg5MiIgeT0iLjkxIiB3aWR0aD0iNDMuMTYxIiBoZWlnaHQ9IjQzLjE2MSIgcng9IjIxLjU4MSIgZmlsbD0iI0Y4RkVGQSIvPjxwYXRoIGQ9Ik05LjcgMTAuNmgxNC41MzRjNi41NjcgMCAxMS44OTIgNS4zMjMgMTEuODkyIDExLjg5IDAgNi41NjgtNS4zMjQgMTEuODkyLTExLjg5MiAxMS44OTJIOS43VjEwLjZaIiBmaWxsPSJ1cmwoI2EpIi8+PGNpcmNsZSBjeD0iMjIuNDczIiBjeT0iMjIuNDkxIiByPSI0Ljg0NSIgZmlsbD0iIzAwMCIvPjxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD0iYSIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguMjE2IDExLjY5NTUgLTExLjkyNjc3IC4yMjAyOCAyMi42OTcgMjIuNjg3KSI+PHN0b3Agb2Zmc2V0PSIuMzU5IiBzdG9wLWNvbG9yPSIjRTlGRjAwIi8+PHN0b3Agb2Zmc2V0PSIuNzYiIHN0b3AtY29sb3I9IiMyNjM4MDAiLz48c3RvcCBvZmZzZXQ9IjEiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'deip-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Wootrade Network',\n symbol: 'WOO',\n icon:\n \"data:image/svg+xml,%3Csvg width='125' height='83' viewBox='0 0 125 83' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M102.422 0H122.958L113.203 30.9433H92.9243L102.422 0ZM75.982 29.4048L86.0788 53.3388L89.8436 41.0299H109.951L98.5713 78.0422C97.6301 80.9485 94.9776 82.9145 91.8972 82.9145H80.4314C77.6078 82.9145 75.0408 81.2049 73.9285 78.5551L61.2648 47.8682L48.8578 78.5551C47.831 81.2904 45.2641 83 42.3549 83H30.718C27.6376 83 24.9851 80.9485 24.0439 78.0422L0 5.85842e-05H20.1934L36.2797 53.3388L46.8898 29.3193C49.2857 23.3358 55.0185 19.4038 61.4359 19.4038C67.8533 19.4038 73.6718 23.3358 75.982 29.4048Z' fill='%2320252F'/%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'LiNEAR',\n symbol: 'LINEAR',\n icon:\n \"data:image/svg+xml,%3Csvg width='40' height='40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M30.74 28.78c.21-.36.32-.78.32-1.21v-6.33c0-.24-.06-.46-.17-.66-.12-.21-.28-.38-.48-.49l-16.86-9.77c-.35-.2-.73-.31-1.13-.32-.64 0-1.24.26-1.69.72-.45.45-.7 1.07-.71 1.71v6.39c0 .24.06.47.18.67.11.21.28.37.48.48l16.82 9.71c.36.22.77.32 1.19.32.41 0 .82-.12 1.19-.33.36-.21.66-.52.86-.89zm.32-16.27c0-.42-.1-.84-.29-1.21-.2-.38-.49-.7-.85-.93-.36-.22-.78-.34-1.21-.34-.42 0-.84.12-1.21.34l-4.97 2.81c-.04.02-.08.07-.1.12-.03.04-.04.1-.04.14 0 .06.01.11.04.16.02.04.06.08.1.1l8.05 4.62c.05.02.1.04.15.04.05 0 .1-.02.15-.05.04-.02.08-.06.11-.11.02-.04.04-.1.03-.15l.04-5.54zM10.05 27.5c-.01.43.08.86.28 1.23.2.38.49.7.85.93.36.22.78.34 1.2.34.42 0 .83-.12 1.2-.34l4.92-2.85c.04-.02.08-.06.1-.11.03-.04.05-.1.05-.15 0-.05-.02-.11-.05-.15-.02-.05-.06-.09-.1-.12l-8.05-4.6c-.05-.03-.09-.04-.15-.04-.05 0-.1.01-.15.04-.05.02-.08.07-.11.12-.02.04-.04.09-.04.14l.05 5.56z' fill='url(%23paint0_linear_186_370)'/%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_186_370' x1='11.135' y1='11.152' x2='30.145' y2='30.457' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%231BB3CC'/%3E%3Cstop offset='1' stop-color='%23824ACC'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'linear-protocol.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'USN',\n symbol: 'USN',\n icon:\n \"data:image/svg+xml;charset=UTF-8,%3Csvg width='38' height='38' viewBox='0 0 38 38' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='38' height='38' rx='19' fill='black'/%3E%3Cpath d='M14.8388 10.6601C14.4203 10.1008 13.6748 9.86519 12.9933 10.0768C12.3119 10.2885 11.85 10.8991 11.85 11.5883V14.7648H8V17.9412H11.85V20.0589H8V23.2353H11.85V28H15.15V16.5108L23.1612 27.2165C23.5797 27.7758 24.3252 28.0114 25.0067 27.7997C25.6881 27.5881 26.15 26.9775 26.15 26.2882V23.2353H30V20.0589H26.15V17.9412H30V14.7648H26.15V10.0001H22.85V21.3658L14.8388 10.6601Z' fill='white'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'usn',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Huobi BTC',\n symbol: 'HBTC',\n icon:\n \"data:image/svg+xml,%3C%3Fxml version='1.0' standalone='no'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' id='body_1' width='32' height='32'%3E%3Cg transform='matrix(1.3333334 0 0 1.3333334 0 0)'%3E%3Cimage x='0' y='0' xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA/tJREFUWIXtln9oVWUYxz/vOc67iWtNS9IkjcSui8RUsv40TbLfVoZE5R+li1JJioqYFlKI/bBQo+417A+pTSgkiH5p0ETIBIvaaosiRcRqYVM3t3Oe97zv0x+eO27jXt1kWoFfOJzDeX59npf3fc6B8/o/atNXOmKocgVnEmSt3vOvAaxr1stEdN5QAQwbbIAV7kO0dqgABrUCDR9rpVhdJqIO4KUdmjmnAEnCMon0Uom18/ltekXVSNafM4CVH+h4SVglkUdEDwELgoBHNu7RG846wIomb2xCXoQLpMdhRX8GrnWWwMDWV5v9mLMK0JuYx8QyX3ocNlZEtAWY3HPcE51w47z4rU9t1zM60qc9BYu36ExreQWArgTjNB5WEbaqMjE+AVZcZAzhyMBPA74ZUoBFeT/aJrwPZJAE0+sA9o2p9aPiKCYMg2dC53NrFlUdHWzhAQEk1mzGMAFVzFEBpxjDrrg3qg3CYOr6+pqDUT477tlc9iHgOqAW6AT2YGisXNp++HQAppzhttf9LcaYjwDoEUy3ABAYbtz+QvXOOHdVqLjVwNNAqXkQA+sM4ZpM/Q+uXJ2yG8cmZpVYEFFspyCxYkW7vHO7JV8XKK4RWN2v+ALgMNCUvl+tuEbJ15WtU9Iwe63WiWWWWLBdFht5rCgS66YP114YefVPAgsLrMBc4DmD+Q5oAT4vSrcw9R84gLXMEQtiQdLuJVa1lrfi3JQaoKHIvQK4tbK+fU2mvm1/EAY3pxDfFvk0pHEDAxDLlWIViRy2O0FEEdG25jdrDip6O1BdKk+Uy272zjdhOATcVWSvTuMGCJBQJYkpLo6I/pSap5cI2Zne64C7USabwPwB+CKfUnFlV6BDrCLdCTbWwtVd6KafuzXGfBnlspOAN4wJLq+sb9+lXh/tl79/XHkAm+hesWB7fd8KxHHfP0BHkWsvsCWztK0LuBd4V9X/GOWzNZycB8XqoIRKDqLEmU+d0yNBwmgTa+H1tAnzOg1cv7vItRl4OX1uArqA2iAIurzzyj+1mxIquQL7N5pem/CimLB4D4y3ksw0ATuAA6nrTcAvcX7KJOABjNlmCPLe6QxOzoiCDpjA7BgwAEDizIZ4+PBPxFI4hljxT2SWtFtgOVDo8IiqzgXGovq44n8D3QtMTO0KLM8sabOl6pQdxQCjFmuV6+h+jz9P3NmXTJl/bN8ln0W57ArgtaImfgdC4OKiFB5YWVnfvqFcjVMCAIy43xtz8NiDelwacH6SwhFVZketY1uiXHZOCnF1idCWtPgXp8p/WoCCLrrDmuO//jWdxF+jQEXIOz2tY52+PdXEzs4AnUXf19B8nQkr9pmHv++/Ec/rv6e/AQ/TFRmUSxQZAAAAAElFTkSuQmCC' width='24' height='24'/%3E%3C/g%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '0316eb71485b0ab14103307bf65a021042c6d380.factory.bridge.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'PembRock',\n symbol: 'PEM',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj48cGF0aCBmaWxsPSIjMUUxRTFGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMTMuMiAxNzAuNDJhODMuNTEgODMuNTEgMCAwIDAgNzAuNy04Mi42IDgzLjUgODMuNSAwIDAgMC01Ljc4LTMwLjYxbDEzLjY4LTIzLjg3aC0yOC4wOGE4My4xIDgzLjEgMCAwIDAtNjMuMi0yOS4wNiA4My4xIDgzLjEgMCAwIDAtNjMuMiAyOS4wNkg4LjU4TDIyLjcgNTcuNzhhODMuNSA4My41IDAgMCAwLTUuNTUgMzAuMDUgODMuNTEgODMuNTEgMCAwIDAgNzAuNiA4Mi41N2wxMi43NyAyMi4xMSAxMi42Ny0yMi4xWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI0VBRUNFRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAwLjUzIDcuOTJBNzguNjYgNzguNjYgMCAwIDAgNDAuNjEgMzUuNmwtMS4xOCAxLjE3SDE2LjY1TDI4LjIzIDU3LjFsLS42OCAxLjc3Yy0zLjQgOC44Ny02LjA3IDE4LjEtNi4wNyAyOC4yIDAgMzkuNzcgMjkuMDMgNzMuMTQgNjYuOTQgNzlsMS44Ni4zIDEwLjM0IDE3Ljc5IDEwLjA2LTE3Ljc4IDEuODctLjNjMzcuOTUtNS44MSA2Ny4wMy0zOC44IDY3LjAzLTc4LjYxIDAtMTAuMy0yLjI0LTIwLjEzLTUuNzgtMjkuMTVsLS42OS0xLjc4IDExLjE4LTE5Ljc3aC0yMi42NWwtMS4xOC0xLjE3YTc4LjY2IDc4LjY2IDAgMCAwLTU5LjkzLTI3LjY3Wk0zNS44NCAyOS4wNEE4Ni40OCA4Ni40OCAwIDAgMSAxMDAuNTQgMGE4Ni40OCA4Ni40OCAwIDAgMSA2NC42OCAyOS4wNGgzMi42N0wxODEuODEgNTcuMmMzLjQ2IDkuNDMgNS42NSAxOS42MyA1LjY1IDMwLjI2IDAgNDMuMTItMzEuMDIgNzguOTUtNzEuODMgODYuMTRMMTAwLjY1IDIwMGwtMTUuMy0yNi40MmMtNDAuNzctNy4yMy03MS43NC00My40NC03MS43NC04Ni41MyAwLTEwLjQgMi42Mi0xOS45OSA1LjkzLTI5LjI1TDMgMjkuMDRoMzIuODRaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjRjY4MjFGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zMS44NSA0NS40MSA2OC43NSAxMjAuNDIgOC4wNi0xNC4xMi0yNy40Ny00OC4xM2gyNC4zTDcyLjMzIDQ1LjRIMzEuODVabTQ5LjE5IDAgNDQuMTUgNzcuMzIgNy42Ny0xMy40NC0yOC4xOC00OS4zNGg4LjM3bDIzLjk5IDQyLjAyTDE0NSA4OGwtMTYuMDItMjguMDVoMTYuNDJsLTQuNDMgNy43NiA3LjgxIDEzLjcgMjAuNTctMzZIODEuMDRaTTU2LjMgNTkuOTVsMTYuNjIgMjkuMTFoOC42N0w2NC45NyA1OS45NUg1Ni4zWk00NC4yIDg0LjZhNTYuNjUgNTYuNjUgMCAwIDAgMzEuMDUgNTQuMTJsNi4zMiAxMS4wMWE2NC40NSA2NC40NSAwIDAgMS00NS4yOS02MS43YzAtNC45Ny41Ni05LjggMS42LTE0LjQ0bDYuMzMgMTEuMDJabTc5LjY1LTQ3LjlhNTUuNDYgNTUuNDYgMCAwIDAtMjMuNjYtNS4yNyA1NS40NSA1NS40NSAwIDAgMC0yMy42NSA1LjI2SDYxLjVhNjMuMjYgNjMuMjYgMCAwIDEgMzguNy0xMy4xNmMxNC41NCAwIDI3Ljk1IDQuOSAzOC43IDEzLjE2aC0xNS4wNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNGNjgyMUYiIGQ9Ik00NC4xIDg4LjAyYzAtMS4xNC4wNC0yLjI4LjEtMy40MWwtNi4zLTExLjAyYTY1LjI2IDY1LjI2IDAgMCAwLTEuNiAxNC40MyA2NC40NSA2NC40NSAwIDAgMCA0NS4yOCA2MS43MWwtNi4zMS0xMWE1Ni42NSA1Ni42NSAwIDAgMS0zMS4xNS01MC43Wm0xMTMuMTIgMGMwLTEuMTQtLjItMi4yOC0uMjctMy40MWw2LjI1LTExLjAyYTY1LjMxIDY1LjMxIDAgMCAxIDEuODQgMTQuNDMgNjQuNDUgNjQuNDUgMCAwIDEtNDUuMjkgNjEuNzFsNi4zMS0xMWE1Ni42NSA1Ni42NSAwIDAgMCAzMS4xNi01MC43WiIvPjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.pembrock.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Atocha Coin',\n symbol: 'ATO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMzYuODggMTM2Ljg4Ij48Y2lyY2xlIGN4PSI2OC40NCIgY3k9IjY4LjQ0IiByPSI2OC40NCIgc3R5bGU9ImZpbGw6Z29sZCIgZGF0YS1uYW1lPSJMYXllciAyIi8+PGcgZGF0YS1uYW1lPSJMYXllciAxIj48cGF0aCBkPSJNNzEuNjUgNzkuNXYyNC40MWMwIDEuMjcuMjQgMS40OSAxLjQ3IDEuMTcgMS4wOC0uMjkgMi4xMy0uNjggMy4xOC0xYTExLjU4IDExLjU4IDAgMCAwIDEuNS0uNTljMS40MS0uNzIgMi44NC0xLjQgNC4xOC0yLjIyYTI1LjU5IDI1LjU5IDAgMCAwIDUuNTktNC42NGMxLjM2LTEuNTIgMi41NC0zLjIgMy43OC00LjgyLjMzLS40My4xOS0uNzItLjM1LS43MS0uODYgMC0xLjcyLjEzLTIuNTguMjItLjQ5IDAtMSAuMTMtMS40Ny4xOWEuMzkuMzkgMCAwIDEtLjQ4LS4zN2wtLjMzLTJhMS41NSAxLjU1IDAgMCAwLS4wNy0uNDIgNS43OCA1Ljc4IDAgMCAxLS4zMy0yLjEzYy0uMDktMS0uMjUtMS45NC0uMzQtMi45Mi0uMDctLjc4LjA1LS44NC44My0uOTQgMS41OS0uMTkgMy4xOC0uNDQgNC43Ny0uNjVsMi43OS0uMzcgMS4xNC0uMTUgNC44Ny0uNzRjLjI3IDAgLjU0LS4wNS44LS4wOWwyLjE4LS4zNWEyLjc1IDIuNzUgMCAwIDEgLjU1LS4wOC40Ny40NyAwIDAgMSAuMzUuMTcgOS44NSA5Ljg1IDAgMCAxIC40NCAxLjFjLjI0LjY5LjQ2IDEuMzkuNjkgMi4wOGEyLjY5IDIuNjkgMCAwIDEgLjA5LjI4Yy4xNy44My4zMyAxLjY2LjUxIDIuNDkuMjYgMS4xNC41NCAyLjI3LjgxIDMuNC4zMSAxLjMxLjYgMi42My45MyAzLjkzLjE5Ljc1LjQ1IDEuNDkuNjUgMi4yNHMuNDUgMS44MS42NiAyLjcxYS40LjQgMCAwIDEtLjE0LjM0IDMuMzkgMy4zOSAwIDAgMS0uODEuMzVjLTEuMzYuMzYtMi43Mi42OS00LjA5IDFsLTIuNTEuNjVjLS42My4xNy0uNzcuMDgtLjkyLS41NHEtLjM5LTEuNTktLjgyLTMuMTdjMC0uMTQtLjIxLS4zNC0uMzItLjM0YS45MS45MSAwIDAgMC0uNTkuMjRjLS4yOS4zMy0uNDguNzQtLjc1IDEuMDgtLjkzIDEuMTgtMS45IDIuMzMtMi44MyAzLjUxYTMwIDMwIDAgMCAxLTQuNiA0LjMgMzkuNCAzOS40IDAgMCAxLTMuNzQgMi41OCAyNi41OSAyNi41OSAwIDAgMS0yLjcxIDEuNTljLTEuMDguNTMtMi4yIDEtMy4zMiAxLjQycy0yIC43OC0zLjA3IDEuMTFjLS43MS4yMy0xLjQ1LjM3LTIuMTcuNTUtLjIuMDUtLjQuMTQtLjYuMjFhNC41MSA0LjUxIDAgMCAxLS40NC4xNmMtLjYxLjE1LTEuMjMuMy0xLjg1LjQzYS42Mi42MiAwIDAgMC0uNTMuN2MwIC43OCAwIDEuNTctLjA2IDIuMzRhNS4yOCA1LjI4IDAgMCAxLS44IDIuNDkgMy44OCAzLjg4IDAgMCAxLTEuNTIgMS4zMiAxMi41NyAxMi41NyAwIDAgMS0xLjU0LjcxIDEuMjQgMS4yNCAwIDAgMS0uNzguMDcgNS44NiA1Ljg2IDAgMCAxLTMuNzMtMi45MiA4IDggMCAwIDEtLjQtMi42MiAxMCAxMCAwIDAgMSAwLTEuMjguNjcuNjcgMCAwIDAtLjYxLS43NGMtLjc1LS4xNC0xLjUtLjI2LTIuMjQtLjQ0cy0xLjU3LS40NC0yLjM1LS42OGMtLjUtLjE1LTEtLjI4LTEuNS0uNDctMS42My0uNjEtMy4yOC0xLjE5LTQuODktMS44NmExNS4xMiAxNS4xMiAwIDAgMS0yLjI3LTEuMjljLTEuMzgtLjg5LTIuNzgtMS43Ny00LjEtMi43Ni0xLS43Ni0xLjkyLTEuNjgtMi44OC0yLjUyYTM2LjMzIDM2LjMzIDAgMCAxLTQuODEtNS42OGMtLjU4LS43Ny0xLjEtMS41OC0xLjY4LTIuMzVhLjgxLjgxIDAgMCAwLS42LS4yOWMtLjE2IDAtLjM3LjI1LS40My40My0uMzEgMS0uNTcgMi4wNy0uODYgMy4xMXEtLjE5LjctLjQgMS4zOWMtLjExLjM1LS4zOS4zNC0uNjYuMjgtLjU4LS4xMy0xLjE2LS4yOC0xLjczLS40My0xLjYyLS40Mi0zLjI0LS44NC00Ljg2LTEuMjhhNi41NSA2LjU1IDAgMCAxLTEtLjQuMzQuMzQgMCAwIDEtLjEyLS4zYy4yMS0xIC40MS0xLjkzLjY2LTIuODkuMzMtMS4yNC43Mi0yLjQ3IDEtMy43Mi4zOC0xLjQ4LjcyLTMgMS4wOC00LjQ3LjIyLS44OS40Ni0xLjc4LjY4LTIuNjguMTgtLjcyLjM0LTEuNDUuNTItMi4xN3MuMzItMS4yMy41Mi0xLjgzLjM4LS41NS44OC0uNDJhNi43NCA2Ljc0IDAgMCAwIC45Mi4xNWMxLjIuMTUgMi4zOS4yOCAzLjU5LjQ0bDUuNi43NSA0LjYxLjU3Yy44NS4xMSAxLjY5LjI1IDIuNTMuMzYuMyAwIC40Ny4xOS40NC41MXYuNDNjLS4xMyAxLjI0LS4yMiAyLjQ5LS40IDMuNzJzLS40NSAyLjM4LS42NiAzLjU4Yy0uMDYuMzQtLjIzLjQ3LS41NS40MmwtMi4xNC0uMzVhMi4yIDIuMiAwIDAgMC0uNDcgMGMtLjQgMC0uNTcuMjItLjQyLjU5YTcuOTIgNy45MiAwIDAgMCAuNzEgMS4zNCAyNC45NCAyNC45NCAwIDAgMCAzLjUyIDQuMjFjLjkxLjg4IDEuODIgMS43NiAyLjc4IDIuNTdhMTkgMTkgMCAwIDAgNC4yOSAyLjY5YzEuMTEuNTEgMi4yMiAxIDMuMzcgMS40N3MyLjM4LjggMy41OCAxLjE4YTIgMiAwIDAgMCAuNTEuMDUuNDcuNDcgMCAwIDAgLjUyLS40IDIuOTEgMi45MSAwIDAgMCAuMDctLjU1Yy4wNy0zLjYuMTgtNy4xOS4yLTEwLjc5LjA1LTguMzIuMDYtMTYuNjQuMDgtMjVWNTQuODVjMC0uOS0uMi0xLjA5LTEuMS0xLjA5aC0xNmExMy41MSAxMy41MSAwIDAgMS0yLjc4LS4zOSAxLjMxIDEuMzEgMCAwIDEtLjczLS43IDMuNDUgMy40NSAwIDAgMS0uMzMtMS4zNXYtNC4zMWEzLjQ1IDMuNDUgMCAwIDEgLjMxLTEuMSAxIDEgMCAwIDEgLjk1LS42M2MxLjMtLjExIDIuNi0uMjQgMy45MS0uMjYgMy42MyAwIDcuMjUgMCAxMC44OC0uMDVoMy44M2MuNjYgMCAxLS4yNyAxLS45M1YzMi41NmExLjQzIDEuNDMgMCAwIDAtLjc1LTEuMzQgMTAuNDkgMTAuNDkgMCAwIDEtMy41NS0zLjU2IDcuNTcgNy41NyAwIDAgMS0xLjI5LTMuN2MtLjA2LTEuMTkgMC0yLjM5IDAtMy41OEE4LjM1IDguMzUgMCAwIDEgNTguNDEgMTdhOS41IDkuNSAwIDAgMSA0LTMuNzYgNi41MyA2LjUzIDAgMCAxIDIuNjgtMWMuNzMtLjA4IDEuNDQtLjMgMi4xNy0uMzRhNi4xNiA2LjE2IDAgMCAxIDEuNDIuMjJjLjEzIDAgLjI1LjA4LjM3LjA5YTEwLjM1IDEwLjM1IDAgMCAxIDUgMi4zNSA3LjYyIDcuNjIgMCAwIDEgMi4xOCAyLjhjLjQ2LjkzLjggMS45MyAxLjE3IDIuOWEyLjEyIDIuMTIgMCAwIDEgLjEuNjd2MS40NWE4LjEyIDguMTIgMCAwIDEtLjcxIDMuNTUgMTIuMzEgMTIuMzEgMCAwIDEtMi4xNyAzLjYzIDUuOCA1LjggMCAwIDEtMS45MyAxLjU3IDEuNjggMS42OCAwIDAgMC0xLjA2IDEuNzR2MTEuMjZjMCAuNjIuMjkuODYuOTIuODhIODUuNjljMS43NiAwIDMuNTIuMTQgNS4yOC4xNmExLjgyIDEuODIgMCAwIDEgMS42OCAxLjg1djQuNjFhMi4zMyAyLjMzIDAgMCAxLS41NyAxLjQ0IDEuMzUgMS4zNSAwIDAgMS0uNy40MSAyMC4wNyAyMC4wNyAwIDAgMS01LjE4LjM0SDcyLjY3Yy0uOTEgMC0xLjA3LjE2LTEuMDcgMS4wNnEuMDUgMTIuMzQuMDUgMjQuNjJabS00LjQ5LTUxLjU1YTUuNzQgNS43NCAwIDAgMCA1LjcxLTUuNjQgNS44MiA1LjgyIDAgMCAwLTYuMDgtNS42M2MtMi41Mi4wNS01LjExIDIuODMtNS4wNyA1LjcxYTUuNiA1LjYgMCAwIDAgNS40NCA1LjU2WiIvPjxwYXRoIGQ9Ik04MC45NCA3Ny41YTIwIDIwIDAgMCAxLTIuNjktLjM3IDcuMzMgNy4zMyAwIDAgMS00LjM0LTMgNy43IDcuNyAwIDAgMS0xLTYuMjQgNy43OCA3Ljc4IDAgMCAxIDMuNzYtNSAxMC4yNSAxMC4yNSAwIDAgMSA2LjM4LTEuNTEgOC4xIDguMSAwIDAgMSA2LjE3IDMuNEE3LjY1IDcuNjUgMCAwIDEgOTAuNTcgNzFhNi40NiA2LjQ2IDAgMCAxLTIuMTQgMy40NiAxMi4yNyAxMi4yNyAwIDAgMS0zLjQ2IDIuMjEgMTAuNjQgMTAuNjQgMCAwIDEtNC4wMy44M1ptMy01LjY2YTYuNjkgNi42OSAwIDAgMCAwLS44NSAyMi41IDIyLjUgMCAwIDAtMS4xNy00Ljc3IDEuODMgMS44MyAwIDAgMC0xLjQ4LTEuMzFjLTEuMjYtLjEzLTEuOTIgMS0xLjggMi4xOWEyMy43MiAyMy43MiAwIDAgMCAuNjQgMy40IDEzLjA3IDEzLjA3IDAgMCAwIC44NiAyLjM5IDEuNDggMS40OCAwIDAgMCAyLjMzLjU2IDEuODEgMS44MSAwIDAgMCAuNjEtMS42M1pNNDMuOTQgNzMuMzFhMy44NyAzLjg3IDAgMCAxIDItMy42QTguOTEgOC45MSAwIDAgMSA1MSA2OC4zOWE1LjU5IDUuNTkgMCAwIDAgLjYgMCAxIDEgMCAwIDAgMS0xIDEwIDEwIDAgMCAwLS4yNy0yLjU2IDEuMzMgMS4zMyAwIDAgMC0yLjM0LS41NGMtLjU3LjU1LTEgMS4yMS0xLjU3IDEuNzlhMi41NiAyLjU2IDAgMCAxLTIuMjIuOTQgMS40NyAxLjQ3IDAgMCAxLTEuMjEtMiAzLjkzIDMuOTMgMCAwIDEgMi0yLjA5IDEzLjI2IDEzLjI2IDAgMCAxIDIuNTctMS4wOCAxMC4zMSAxMC4zMSAwIDAgMSA1LjEzLS4yNyA3LjM1IDcuMzUgMCAwIDEgMi45MyAxLjM2QTMuMzggMy4zOCAwIDAgMSA1OSA2NS4zOWMuMDcgMS4yNy4wOCAyLjU0LjE1IDMuODEuMDYgMSAuMTYgMiAuMjYgM2ExLjIzIDEuMjMgMCAwIDAgLjg4IDEuMDVjLjY3LjI3Ljc0LjQ2LjU3IDEuMTRhMy44IDMuOCAwIDAgMS0yIDIuMzUgNC4zOCA0LjM4IDAgMCAxLTMuNjguNDUgMy4zIDMuMyAwIDAgMS0xLjE1LS42OWMtLjc0LS42OC0uODItLjc1LTEuNjItLjE5YTYuMjEgNi4yMSAwIDAgMS00LjY5IDEgNC4yMSA0LjIxIDAgMCAxLTMuMS0xLjgxIDMuMSAzLjEgMCAwIDEtLjY4LTIuMTlabTcuNy0yLjkxYTIgMiAwIDAgMC0xLjE3IDMuNDMgMS4yMiAxLjIyIDAgMCAwIDEuNzQtLjI0IDIuOSAyLjkgMCAwIDAgLjI2LTIuNjIuNzYuNzYgMCAwIDAtLjgyLS41N1oiLz48L2c+PC9zdmc+',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'atocha-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'SeatlabNFT',\n symbol: 'SEAT',\n icon:\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' x='0px' y='0px' width='32px' height='32px' viewBox='0 0 32 32' style='enable-background:new 0 0 32 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23050035;%7D .st1%7Bfill:url(%23SVGID_1_);%7D%0A%3C/style%3E%3Cg id='Layer_1'%3E%3Ccircle class='st0' cx='16' cy='16' r='16'/%3E%3C/g%3E%3Cg id='Isolation_Mode'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='6.2375' y1='16' x2='25.7625' y2='16'%3E%3Cstop offset='0' style='stop-color:%2300C2FF'/%3E%3Cstop offset='1' style='stop-color:%230067FF'/%3E%3C/linearGradient%3E%3Cpath class='st1' d='M14,6.1c-0.3,0-0.5,0.1-0.8,0.2L8.1,9.4L7.8,9.6L7.2,10c-0.5,0.3-0.9,0.6-0.9,1.7v4.1c0,0.9,0.3,1.6,0.9,1.9 l6.2,3.8c1,0.6,2.3-0.1,2.3-1.3v-2.9c0-0.7-0.4-1.4-1-1.8l-2.9-1.8l3-1.9c0.5-0.3,0.8-0.9,0.8-1.5V7.6C15.6,6.7,14.8,6.1,14,6.1z M14.7,10.4c0,0.3-0.2,0.6-0.4,0.8l-3.4,2.1l-1.8-1.1c-0.5-0.3-0.8-0.5-1.1-0.8c-0.3-0.3-0.2-0.8,0.2-1c0,0,0,0,0,0L13.7,7 C13.8,7,13.9,6.9,14,6.9c0.3,0,0.7,0.3,0.7,0.7V10.4z M24.9,14.3l-6.2-3.8c-1-0.6-2.3,0.1-2.3,1.3v2.9c0,0.7,0.4,1.4,1,1.8l2.9,1.8 l-3,1.9c-0.5,0.3-0.8,0.9-0.8,1.5v2.8c0,0.9,0.8,1.6,1.6,1.6c0.3,0,0.5-0.1,0.8-0.2l5.1-3.1l0.4-0.2l0.6-0.4 c0.5-0.3,0.9-0.6,0.9-1.7v-4.1C25.8,15.3,25.4,14.6,24.9,14.3z M23.8,21.6C23.8,21.6,23.8,21.6,23.8,21.6L18.3,25 c-0.1,0.1-0.2,0.1-0.4,0.1c-0.3,0-0.7-0.3-0.7-0.7v-2.8c0-0.3,0.2-0.6,0.4-0.8l3.4-2.1l1.8,1.1c0.5,0.3,0.8,0.5,1.1,0.8 C24.3,20.9,24.2,21.4,23.8,21.6z'/%3E%3C/g%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 5,\n id: 'token.stlb.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Burrow Token',\n symbol: 'BRRR',\n icon:\n 'data:image/png;base64,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',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.burrow.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'FUSOTAO',\n symbol: 'TAO',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTU1LjQxIDI5LjYzNS03LjI5NiA2LjE0N2ExLjY1OSAxLjY1OSAwIDAgMS0uNjc1IDIuMzlsMS44NDggOS41NDZjLjgwNS0uMjA4IDEuNTM2LS43MDIgMi4wODktMS41MzlhMTIuODE2IDEyLjgxNiAwIDAgMCAxLjk4Mi01LjI4OWMuMTctMS4yNTEuNTY0LTIuNDczIDEuMTU2LTMuNTg2YTEyLjgzMyAxMi44MzMgMCAwIDAgMS40ODItNS40NjljLjAzNS0uODYzLS4xODYtMS42LS41ODctMi4yeiIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGQ9Ik00NS4zNDIgMzUuOTA2YTEuNjM3IDEuNjM3IDAgMCAxIDIuMTgzLS42M2w3LjM3OC02LjE5M2MtMS4yODMtMS4xOTMtMy40NTktMS41NDctNS40NDUtLjkwM2wtMTIuNzQyIDQuMTM1Yy0uMzEuMS0uNTUzLjI5Ny0uNzE2LjU0Mmw5LjM0MiAzLjA0OXoiIGZpbGw9InVybCgjYikiLz48cGF0aCBkPSJNNDMuODkyIDQ1LjM3YzEuMTQ5IDEuNTkyIDIuOTQ3IDIuNTcyIDQuNTk5IDIuNTI0bC0xLjg0NC05LjQ4N2ExLjY0NCAxLjY0NCAwIDAgMS0xLjUzOC0xLjY4bC05LjM2NC0zLjA1NWMuMDA0LjI2OC4wODcuNTQuMjYuNzhsNy44ODcgMTAuOTE5eiIgZmlsbD0idXJsKCNjKSIvPjxwYXRoIGQ9Im00MS40MSA1My4yMjMtOC4wNTYtNS4wOTJhMS42MzEgMS42MzEgMCAwIDEtMi40NjQuMDkxbC04LjQzOCA0LjcyMWMuNDQ0LjcwOCAxLjEzNiAxLjI1NiAyLjA5NyAxLjUyNyAxLjc5NC41MDYgMy43NC42MDMgNS42MDUuMjY1YTEwLjUzNiAxMC41MzYgMCAwIDEgMy43NDIgMGMxLjg3LjMzOSAzLjgyMS4yNCA1LjYxOS0uMjcuODI2LS4yMzMgMS40NTMtLjY3MyAxLjg5NS0xLjI0MnoiIGZpbGw9InVybCgjZCkiLz48cGF0aCBkPSJNMzIuMzg5IDQ1LjQzOGExLjY0NiAxLjY0NiAwIDAgMSAxLjI3IDEuODlsOC4xNDUgNS4xMzRjLjczNC0xLjU5NC4zOTctMy43ODItLjgyNy01LjQ4TDMzLjEyMyAzNi4wOWExLjM1NCAxLjM1NCAwIDAgMC0uNzM0LS41MTZ2OS44NjR6IiBmaWxsPSJ1cmwoI2UpIi8+PHBhdGggZD0iTTIyLjk3IDQ3LjAxN2MtMS4xNTEgMS41ODgtMS41MjQgMy42MDgtLjk2OSA1LjE3bDguNDItNC42OTJhMS42NDggMS42NDggMCAwIDEgMS4xMTctMS45ODd2LTkuODg0Yy0uMjUzLjA4Ny0uNDg1LjI1LS42NTkuNDlsLTcuOTA4IDEwLjkwM3oiIGZpbGw9InVybCgjZikiLz48cGF0aCBkPSJtMTUuODg2IDM1Ljc4Mi03LjI5NS02LjE0N2MtLjQwMS42LS42MjIgMS4zMzctLjU4NyAyLjJhMTIuODMgMTIuODMgMCAwIDAgMS40ODIgNS40NjkgMTAuNzUxIDEwLjc1MSAwIDAgMSAxLjE1NiAzLjU4NmMuMjU4IDEuODkyLjk1IDMuNzI3IDEuOTgyIDUuMjkuNTUzLjgzNiAxLjI4NCAxLjMzIDIuMDg5IDEuNTM4bDEuODQ4LTkuNTQ2YTEuNjU5IDEuNjU5IDAgMCAxLS42NzUtMi4zOXoiIGZpbGw9InVybCgjZykiLz48cGF0aCBkPSJNMTUuNTY4IDQ3Ljg1NmMxLjY0OS4wNDggMy40NDUtLjkzMiA0LjU5Mi0yLjUyMWw3Ljg3NS0xMC45MDhhMS4zNiAxLjM2IDAgMCAwIC4yNi0uNzhsLTkuMzUgMy4wNTJhMS42NDcgMS42NDcgMCAwIDEtMS41MzYgMS42NzlsLTEuODQgOS40Nzh6IiBmaWxsPSJ1cmwoI2gpIi8+PHBhdGggZD0iTTE2Ljc0NSAzNS4xOTNhMS42NCAxLjY0IDAgMCAxIDEuOTI3Ljc0bDkuMzU2LTMuMDUyYTEuMzU3IDEuMzU3IDAgMCAwLS43MTctLjU0M2wtMTIuNzYxLTQuMTRjLTEuOTktLjY0NC00LjE2OC0uMjktNS40NTMuOTA1bDcuMzkgNi4yYy4wOC0uMDQ0LjE2Ny0uMDguMjU4LS4xMXoiIGZpbGw9InVybCgjaSkiLz48cGF0aCBkPSJtNDAuNTcxIDE4LjA5LTMuNTQ2LTguODkyYy42ODktLjE5OCAxLjQ1My0uMTgyIDIuMjU4LjExOGExMi42NSAxMi42NSAwIDAgMSA0LjcwMyAzLjExIDEwLjYxNCAxMC42MTQgMCAwIDAgMy4wMjcgMi4yMTYgMTIuNjc2IDEyLjY3NiAwIDAgMSA0LjM4IDMuNTM1Yy42MTkuNzg4Ljg2IDEuNjQxLjgwNiAyLjQ3N2wtOS41OC0xLjE3OWExLjY0OSAxLjY0OSAwIDAgMC0uNjYyLTEuMTI2IDEuNjI2IDEuNjI2IDAgMCAwLTEuMzg2LS4yNnoiIGZpbGw9InVybCgjaikiLz48cGF0aCBkPSJNMzkuNzY0IDE4Ljc5Yy0uNDYzLjY0LS40IDEuNS4xMDQgMi4wNjZsLTUuNzczIDcuOThhMS4zNjMgMS4zNjMgMCAwIDEtLjI5Mi0uODVsLjAyMS0xMy40NDljLjAwNC0yLjA5NiAxLjAxMi00LjA2NCAyLjUzOC00LjkybDMuNTg1IDguOTZhMS42NiAxLjY2IDAgMCAwLS4xODMuMjEzeiIgZmlsbD0idXJsKCNrKSIvPjxwYXRoIGQ9Ik01Mi4xNiAyMS41NDhjLS40NjUgMS41OTEtMS45NSAzLjAwNi0zLjgxMiAzLjYxbC0xMi43ODIgNC4xNTVhMS4zNTIgMS4zNTIgMCAwIDEtLjgyLjAwOGw1Ljc4OC03Ljk5NmExLjY0IDEuNjQgMCAwIDAgMi4wNjctLjk0OWw5LjU1OSAxLjE3MnoiIGZpbGw9InVybCgjbCkiLz48cGF0aCBkPSJtMjcuNDYgOS4xOTgtMy41NDcgOC44OTJhMS42MjYgMS42MjYgMCAwIDAtMS4zODYuMjYgMS42NSAxLjY1IDAgMCAwLS42NjIgMS4xMjVsLTkuNTggMS4xNzljLS4wNTMtLjgzNi4xODctMS42OS44MDYtMi40NzdhMTIuNjc3IDEyLjY3NyAwIDAgMSA0LjM4LTMuNTM0IDEwLjYxNiAxMC42MTYgMCAwIDAgMy4wMjctMi4yMTcgMTIuNjUgMTIuNjUgMCAwIDEgNC43MDMtMy4xMWMuODA1LS4zIDEuNTY5LS4zMTYgMi4yNTgtLjExOHoiIGZpbGw9InVybCgjbSkiLz48cGF0aCBkPSJNMTYuMTk1IDI1LjE0M2MtMS44Ni0uNjA1LTMuMzQyLTIuMDE3LTMuODA2LTMuNjA3bDkuNTQ0LTEuMTdhMS42MzYgMS42MzYgMCAwIDAgMi4wNjQuOTQ4bDUuNzggNy45ODdhMS4zNDkgMS4zNDkgMCAwIDEtLjgxOS0uMDA4bC0xMi43NjMtNC4xNXoiIGZpbGw9InVybCgjbikiLz48cGF0aCBkPSJNMjQuNjM5IDIwLjg2N2ExLjY1NCAxLjY1NCAwIDAgMC0uMDc5LTIuMjgxbDMuNTktOC45N2MxLjUzLjg1NyAyLjUzOSAyLjgyOCAyLjU0MiA0LjkyNmwuMDIxIDEzLjQ2MmMuMDAxLjMyNy0uMTEuNjItLjI5Mi44NTJsLTUuNzgyLTcuOTg5eiIgZmlsbD0idXJsKCNvKSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iaCIgeDE9IjgiIHkxPSI0My40NjciIHgyPSIxNi4zOTkiIHkyPSIzNy45MzgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjOUEwQTBFIi8+PHN0b3Agb2Zmc2V0PSIuODY5IiBzdG9wLWNvbG9yPSIjREExODFGIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSI0NS45MjYiIHkxPSIzNi4wNTMiIHgyPSI1MS4wNjgiIHkyPSI0My41NjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii40NjQiIHN0b3AtY29sb3I9IiNFQTMwMkEiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNDNTE1MUIiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYyIgeDE9IjQ1LjkyNiIgeTE9IjM2LjA1MyIgeDI9IjUxLjA2OCIgeTI9IjQzLjU2MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjQ2NCIgc3RvcC1jb2xvcj0iI0VBMzAyQSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M1MTUxQiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJkIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJlIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJmIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJnIiB4MT0iOCIgeTE9IjQzLjQ2NyIgeDI9IjE2LjM5OSIgeTI9IjM3LjkzOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM5QTBBMEUiLz48c3RvcCBvZmZzZXQ9Ii44NjkiIHN0b3AtY29sb3I9IiNEQTE4MUYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjQ1LjkyNiIgeTE9IjM2LjA1MyIgeDI9IjUxLjA2OCIgeTI9IjQzLjU2MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjQ2NCIgc3RvcC1jb2xvcj0iI0VBMzAyQSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M1MTUxQiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJpIiB4MT0iOCIgeTE9IjQzLjQ2NyIgeDI9IjE2LjM5OSIgeTI9IjM3LjkzOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM5QTBBMEUiLz48c3RvcCBvZmZzZXQ9Ii44NjkiIHN0b3AtY29sb3I9IiNEQTE4MUYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iaiIgeDE9IjQyLjk2MyIgeTE9IjEyLjIzIiB4Mj0iMzMuODY1IiB5Mj0iMjcuMDUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjRjlCMTk4Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRUUxQzI1Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImsiIHgxPSI0Mi45NjMiIHkxPSIxMi4yMyIgeDI9IjMzLjg2NSIgeTI9IjI3LjA1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI0Y5QjE5OCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0VFMUMyNSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsIiB4MT0iNDIuOTYzIiB5MT0iMTIuMjMiIHgyPSIzMy44NjUiIHkyPSIyNy4wNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNGOUIxOTgiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibSIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibiIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibyIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'fusotao-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'NearX',\n symbol: 'NearX',\n icon:\n \"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3847L21.3848 17.1421L19.3669 15.1243C18.5576 17.0302 17.0303 18.5576 15.1243 19.3669L17.1421 21.3847ZM9.4329 19.5792C7.45318 18.9089 5.82112 17.4847 4.87847 15.6484L3.24263 17.2842L7.48527 21.5269L9.4329 19.5792ZM4.63307 8.87568C5.4424 6.96973 6.96977 5.44237 8.87573 4.63305L7.24263 2.99995L2.99999 7.24259L4.63307 8.87568ZM15.6484 4.87847L17.3848 3.14209L21.6274 7.38473L19.5792 9.4329C18.9089 7.45318 17.4847 5.82112 15.6484 4.87847Z' fill='%232FA8AF'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E%0A\",\n reference: 'https://near.staderlabs.com',\n reference_hash: null,\n decimals: 24,\n id: 'v2-nearx.stader-labs.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'DISCOVOL TOKEN',\n symbol: 'DISC',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLlm77lsYJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgMTQxLjcgMTQxLjciIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE0MS43IDE0MS43IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnN0MHtmaWxsOiNmOTcxMTZ9PC9zdHlsZT48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDYuMSAxOC43djEwNS42czIxLjMtNS41IDMzLjEtMjljMCAwIDEyLjctMjIuMi0uOS00OS43IDAgMC0xMC4xLTIwLjktMzIuMi0yNi45eiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMDUuNyA5LjRjMzEuMSAxOC4zIDM0LjUgNDguNCAzNC41IDQ4LjQgNi40IDM3LjktMTcgNjAuMy0xNyA2MC4zLTMxLjQgMzQuNS03My40IDIwLjMtNzMuNCAyMC4zIDMwLjYtOS4zIDQxLjktMzUuMSA0MS45LTM1LjEgMTYuNi0zNS41IDAtNjMuMiAwLTYzLjJDNzcgOS43IDQ3LjMgMy45IDQ3LjMgMy45YzMyLjQtMTEuMyA1OC40IDUuNSA1OC40IDUuNXptNyAxMS41UzExMS4xIDM4IDk0LjcgMzhjMCAwIDE2IDIuOCAxNy41IDE4LjggMCAwIDEuNC0xNy41IDE4LjItMTguMy0uMSAwLTE4LjUtMS41LTE3LjctMTcuNnpNMjUuNiAxNS45aDUuOXYxMTAuOEgyN1M4IDExMiAyLjIgODkuMmMwIDAtNy43LTI2LjIgNS01MC40LjEuMSA5LjUtMTcgMTguNC0yMi45eiIvPjwvc3ZnPg==',\n reference: null,\n reference_hash: null,\n decimals: 14,\n id: 'discovol-token.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Stader',\n symbol: 'SD',\n icon:\n \"data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M128 256C198.692 256 256 198.692 256 128C256 57.3075 198.692 0 128 0C57.3075 0 0 57.3075 0 128C0 198.692 57.3075 256 128 256Z' fill='%236259D4'/%3E%3Cpath d='M126.852 191.869L126.822 181.088L153.98 165.105L153.886 133.025L163.667 127.882L164.056 170.723L126.852 191.869Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M153.98 165.105L126.822 181.088L126.852 191.869L164.056 170.723L163.667 127.882L153.886 133.025L153.98 165.105ZM154.207 133.218L154.3 165.104C154.301 165.218 154.241 165.323 154.143 165.381L127.143 181.271L127.171 191.32L163.735 170.538L163.352 128.41L154.207 133.218Z' fill='%236259D4'/%3E%3Cpath d='M134.785 112.611L145.906 106.314L173.184 123.396L173.334 175.037L164.063 170.734L163.673 127.894L134.785 112.611Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M163.673 127.894L164.063 170.734L173.334 175.037L173.184 123.396L145.906 106.314L134.785 112.611L163.673 127.894ZM135.451 112.601L163.823 127.611C163.927 127.666 163.992 127.773 163.993 127.891L164.381 170.529L173.013 174.535L172.865 123.574L145.898 106.687L135.451 112.601Z' fill='%236259D4'/%3E%3Cpath d='M126.443 53.3335L173.06 79.8728L173.094 90.9255L126.49 64.9081L126.443 53.3335Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M126.443 53.3335L126.49 64.9081L173.094 90.9255L173.06 79.8728L126.443 53.3335ZM126.766 53.8852L126.81 64.7198L172.773 90.3795L172.741 80.0592L126.766 53.8852Z' fill='%236259D4'/%3E%3Cpath d='M80.1584 134.322L80 80.4074L126.432 53.3335L126.48 64.9081L88.7187 86.0335L88.5731 128.106L80.1584 134.322Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M88.7187 86.0335L126.48 64.9081L126.432 53.3335L80 80.4074L80.1584 134.322L88.5731 128.106L88.7187 86.0335ZM88.2536 127.944L88.3987 86.0324C88.3991 85.9169 88.4617 85.8106 88.5624 85.7542L126.159 64.7209L126.115 53.8892L80.3205 80.5909L80.4766 133.689L88.2536 127.944Z' fill='%236259D4'/%3E%3Cpath d='M107.511 149.374L80.1562 134.324L88.5709 128.108L135.44 154.885L107.58 170.601L98.2445 175.794L126.85 191.879L164.054 170.733L173.325 175.035L126.619 202.66L80.2804 176.371L117.215 154.711L107.511 149.374Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M107.58 170.601L135.44 154.885L88.5709 128.108L80.1562 134.324L117.215 154.711L80.2804 176.371L126.619 202.66L173.325 175.035L164.054 170.733L126.85 191.879L98.2445 175.794L107.58 170.601ZM164.069 171.092L127.008 192.157C126.91 192.213 126.791 192.213 126.693 192.158L98.0877 176.073C97.9866 176.016 97.9242 175.909 97.9245 175.794C97.9248 175.678 97.9877 175.571 98.0889 175.515L107.423 170.322L134.792 154.884L88.5932 128.49L80.7483 134.285L107.666 149.093L117.369 154.431C117.47 154.486 117.533 154.592 117.535 154.707C117.536 154.822 117.476 154.929 117.377 154.987L80.9208 176.367L126.615 202.29L172.639 175.069L164.069 171.092Z' fill='%236259D4'/%3E%3Cpath d='M88.7207 86.0458L126.482 64.9204L173.085 90.9378L145.902 106.323L134.781 112.619L163.669 127.902L153.888 133.044L116.808 112.11L153.764 90.4499L144.947 85.4178L126.512 74.8955L99.0623 90.6069L88.7207 86.0458Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M173.085 90.9378L126.482 64.9204L88.7207 86.0458L99.0623 90.6069L126.512 74.8955L153.764 90.4499L116.808 112.11L153.888 133.044L163.669 127.902L134.781 112.619L173.085 90.9378ZM162.983 127.901L134.631 112.902C134.528 112.847 134.462 112.741 134.461 112.624C134.459 112.507 134.521 112.398 134.623 112.341L145.744 106.044L172.432 90.9397L126.482 65.287L89.4368 86.0119L99.0436 90.2489L126.353 74.6177C126.451 74.5614 126.572 74.5614 126.67 74.6175L153.923 90.172C154.022 90.2286 154.083 90.3338 154.084 90.4481C154.085 90.5623 154.024 90.6682 153.926 90.726L117.45 112.105L153.894 132.68L162.983 127.901Z' fill='%236259D4'/%3E%3Cpath d='M98.252 175.789L107.587 170.596L126.827 181.093L126.857 191.874L98.252 175.789Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M98.252 175.789L126.857 191.874L126.827 181.093L107.587 170.596L98.252 175.789ZM98.9075 175.791L126.536 191.326L126.508 181.283L107.589 170.962L98.9075 175.791Z' fill='%236259D4'/%3E%3Cpath d='M80.2804 176.368L80.2461 164.785L107.511 149.371L117.215 154.708L80.2804 176.368Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M80.2804 176.368L117.215 154.708L107.511 149.371L80.2461 164.785L80.2804 176.368ZM80.5987 175.81L116.567 154.717L107.513 149.737L80.5666 164.971L80.5987 175.81Z' fill='%236259D4'/%3E%3Cpath d='M116.809 112.109L116.92 101.073L144.947 85.417L153.764 90.4491L116.809 112.109Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M116.809 112.109L153.764 90.4491L144.947 85.417L116.92 101.073L116.809 112.109ZM117.134 111.547L153.125 90.4528L144.946 85.7845L117.238 101.262L117.134 111.547Z' fill='%236259D4'/%3E%3Cpath d='M88.5723 128.087L88.7179 86.0142L99.0595 90.5753L99.1537 123.589L135.407 143.582L135.442 154.864L88.5723 128.087Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M99.1537 123.589L99.0595 90.5753L88.7179 86.0142L88.5723 128.087L135.442 154.864L135.407 143.582L99.1537 123.589ZM135.088 143.771L98.9992 123.869C98.8974 123.813 98.8341 123.706 98.8337 123.59L98.7401 90.7841L89.0362 86.5043L88.8929 127.901L135.12 154.311L135.088 143.771Z' fill='%236259D4'/%3E%3C/svg%3E\",\n reference: '',\n reference_hash: '',\n decimals: 18,\n id: '30d20208d987713f46dfd34ef128bb16c404d10f.factory.bridge.near',\n },\n {\n spec: 'ft-1.0',\n name: 'SWEAT',\n symbol: 'SWEAT',\n icon:\n \"data:image/svg+xml,%3Csvg viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100' height='100' rx='50' fill='%23FF0D75'/%3E%3Cg clip-path='url(%23clip0_283_2788)'%3E%3Cpath d='M39.4653 77.5455L19.0089 40.02L35.5411 22.2805L55.9975 59.806L39.4653 77.5455Z' stroke='white' stroke-width='10'/%3E%3Cpath d='M66.0253 77.8531L45.569 40.3276L62.1012 22.5882L82.5576 60.1136L66.0253 77.8531Z' stroke='white' stroke-width='10'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_283_2788'%3E%3Crect width='100' height='56' fill='white' transform='translate(0 22)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A\",\n reference: null,\n reference_hash: null,\n decimals: 18,\n id: 'token.sweat',\n },\n {\n spec: 'ft-1.0.0',\n name: 'APYSwap',\n symbol: 'APYS',\n icon:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iLTEwIC0xMCAxMjAgMTIwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTQ2OF81MTk1KSI+CjxwYXRoIGQ9Ik0zOC40MzUzIDEyLjY4NUw3NC41ODY5IDc3Ljg2NzdMOTguOTk5OSA3OC41NjYzTDYyLjY3NDkgMTMuMzc4N0wzOC40MzUzIDEyLjY4NVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8xNDY4XzUxOTUpIi8+CjxwYXRoIGQ9Ik0xMi43NjcyIDU1LjQwNzFMODYuOTM2NiA1Ni42MzI2TDk4Ljk5ODIgNzcuODM0OEwwLjAxMTcwNDYgNzYuMTk5MkwxMi43NjcyIDU1LjQwNzFaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfMTQ2OF81MTk1KSIvPgo8cGF0aCBkPSJNNjIuMjQxMSAxMy4wOTRMMjMuODY5OCA3Ny4wODU2TC0wLjUxMDgwNSA3Ni45MTIyTDM3Ljg2NzMgMTIuOTIwN0w2Mi4yNDExIDEzLjA5NFoiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8xNDY4XzUxOTUpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xNDY4XzUxOTUiIHgxPSI1NS45Njc3IiB5MT0iMjMuODc4MSIgeDI9Ijg1LjQ4MjUiIHkyPSI3Ny4wMTI2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwOEFFRUEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMkFGNTk4Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xNDY4XzUxOTUiIHgxPSIyOS40ODcxIiB5MT0iNjcuODQzIiB4Mj0iNjguOTYzNiIgeTI9IjY4LjgwMzIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzA4QUVFQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyQUY1OTgiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDJfbGluZWFyXzE0NjhfNTE5NSIgeDE9IjUxLjk4MzUiIHkxPSIzLjEzMzQ1IiB4Mj0iMzEuMjQxOCIgeTI9IjM2LjE3MzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzA4QUVFQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyQUY1OTgiLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xNDY4XzUxOTUiPgo8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4=',\n reference: null,\n reference_hash: null,\n decimals: 24,\n id: 'apys.token.a11bd.near',\n },\n {\n spec: 'ft-1.0.0',\n name: 'Tether USD',\n symbol: 'USDt',\n icon:\n \"data:image/svg+xml,%3Csvg width='111' height='90' viewBox='0 0 111 90' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.4825 0.862305H88.0496C89.5663 0.862305 90.9675 1.64827 91.7239 2.92338L110.244 34.1419C111.204 35.7609 110.919 37.8043 109.549 39.1171L58.5729 87.9703C56.9216 89.5528 54.2652 89.5528 52.6139 87.9703L1.70699 39.1831C0.305262 37.8398 0.0427812 35.7367 1.07354 34.1077L20.8696 2.82322C21.6406 1.60483 23.0087 0.862305 24.4825 0.862305ZM79.8419 14.8003V23.5597H61.7343V29.6329C74.4518 30.2819 83.9934 32.9475 84.0642 36.1425L84.0638 42.803C83.993 45.998 74.4518 48.6635 61.7343 49.3125V64.2168H49.7105V49.3125C36.9929 48.6635 27.4513 45.998 27.3805 42.803L27.381 36.1425C27.4517 32.9475 36.9929 30.2819 49.7105 29.6329V23.5597H31.6028V14.8003H79.8419ZM55.7224 44.7367C69.2943 44.7367 80.6382 42.4827 83.4143 39.4727C81.0601 36.9202 72.5448 34.9114 61.7343 34.3597V40.7183C59.7966 40.8172 57.7852 40.8693 55.7224 40.8693C53.6595 40.8693 51.6481 40.8172 49.7105 40.7183V34.3597C38.8999 34.9114 30.3846 36.9202 28.0304 39.4727C30.8066 42.4827 42.1504 44.7367 55.7224 44.7367Z' fill='%23009393'/%3E%3C/svg%3E\",\n reference: null,\n reference_hash: null,\n decimals: 6,\n id: 'usdt.tether-token.near',\n },\n];\n\nexport function getDefaultTokenList() {\n const env = getConfig().networkId;\n\n switch (env) {\n case 'mainnet':\n return DefaultMainnetTokenList;\n case 'testnet':\n return DefaultTestnetTokenList;\n default:\n return DefaultMainnetTokenList;\n }\n}\n","import { TokenMetadata, Transaction } from '../types';\n\nimport {\n priceToPoint,\n toNonDivisibleNumber,\n toPrecision,\n registerAccountOnToken,\n} from '../utils';\nimport { ONE_YOCTO_NEAR, WRAP_NEAR_CONTRACT_ID, config } from '../constant';\nimport { DCLSwapGetStorageBalance } from '../ref';\nimport { DCL_POOL_FEE_LIST, getDCLPoolId } from './dcl-pool';\nimport {\n nearDepositTransaction,\n ftGetStorageBalance,\n refDCLSwapViewFunction,\n} from '../ref';\nimport _ from 'lodash';\nimport { toReadableNumber, percentLess } from '../utils';\nimport { NoPoolOnThisPair, SlippageError } from '../error';\n\ninterface SwapInfo {\n tokenA: TokenMetadata;\n tokenB: TokenMetadata;\n amountA: string;\n}\n\ninterface DCLSwapProps {\n swapInfo: SwapInfo;\n Swap?: {\n pool_ids: string[];\n min_output_amount: string;\n };\n SwapByOutput?: {\n pool_ids: string[];\n output_amount: string;\n };\n LimitOrderWithSwap?: {\n pool_id: string;\n output_amount: string;\n };\n AccountId: string;\n}\nexport const DCL_POOL_SPLITER = '|';\n\nexport const DCLSwap = async ({\n Swap,\n SwapByOutput,\n LimitOrderWithSwap,\n AccountId,\n swapInfo,\n}: DCLSwapProps) => {\n const transactions: Transaction[] = [];\n\n const { tokenA, tokenB, amountA } = swapInfo;\n\n if (Swap) {\n const pool_ids = Swap.pool_ids;\n\n const tokenRegistered = await ftGetStorageBalance(\n tokenB.id,\n AccountId\n ).catch(() => {\n throw new Error(`${tokenB.id} doesn't exist.`);\n });\n\n if (tokenRegistered === null) {\n transactions.push({\n receiverId: tokenB.id,\n functionCalls: [registerAccountOnToken(AccountId)],\n });\n }\n\n const output_token = tokenB.id;\n const min_output_amount = toPrecision(Swap.min_output_amount, 0);\n\n const msg = JSON.stringify({\n Swap: {\n pool_ids,\n output_token,\n min_output_amount,\n },\n });\n\n transactions.push({\n receiverId: tokenA.id,\n functionCalls: [\n {\n methodName: 'ft_transfer_call',\n args: {\n receiver_id: config.REF_DCL_SWAP_CONTRACT_ID,\n amount: toNonDivisibleNumber(tokenA.decimals, amountA),\n msg,\n },\n gas: '180000000000000',\n amount: ONE_YOCTO_NEAR,\n },\n ],\n });\n } else if (SwapByOutput) {\n const pool_ids = SwapByOutput.pool_ids;\n const output_token = tokenB.id;\n const output_amount = toNonDivisibleNumber(\n tokenB.decimals,\n SwapByOutput.output_amount\n );\n const msg = JSON.stringify({\n SwapByOutput: {\n pool_ids,\n output_token,\n output_amount,\n },\n });\n const tokenRegistered = await ftGetStorageBalance(\n tokenB.id,\n AccountId\n ).catch(() => {\n throw new Error(`${tokenB.id} doesn't exist.`);\n });\n\n if (tokenRegistered === null) {\n transactions.push({\n receiverId: tokenB.id,\n functionCalls: [registerAccountOnToken(AccountId)],\n });\n }\n\n transactions.push({\n receiverId: tokenA.id,\n functionCalls: [\n {\n methodName: 'ft_transfer_call',\n args: {\n receiver_id: config.REF_DCL_SWAP_CONTRACT_ID,\n amount: toNonDivisibleNumber(tokenA.decimals, amountA),\n msg,\n },\n gas: '180000000000000',\n amount: ONE_YOCTO_NEAR,\n },\n ],\n });\n } else if (LimitOrderWithSwap) {\n const pool_id = LimitOrderWithSwap.pool_id;\n\n const fee = Number(pool_id.split(DCL_POOL_SPLITER)[2]);\n\n const buy_token = tokenB.id;\n const point = priceToPoint({\n amountA,\n amountB: LimitOrderWithSwap.output_amount,\n tokenA,\n tokenB,\n fee,\n });\n\n const tokenRegistered = await ftGetStorageBalance(\n tokenB.id,\n AccountId\n ).catch(() => {\n throw new Error(`${tokenB.id} doesn't exist.`);\n });\n\n if (tokenRegistered === null) {\n transactions.push({\n receiverId: tokenB.id,\n functionCalls: [registerAccountOnToken(AccountId)],\n });\n }\n\n const DCLRegistered = await DCLSwapGetStorageBalance(\n tokenB.id,\n AccountId\n ).catch(() => {\n throw new Error(`${tokenB.id} doesn't exist.`);\n });\n\n if (DCLRegistered === null) {\n transactions.push({\n receiverId: config.REF_DCL_SWAP_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'storage_deposit',\n args: {\n registration_only: true,\n account_id: AccountId,\n },\n gas: '30000000000000',\n amount: '0.5',\n },\n ],\n });\n }\n\n const new_point =\n pool_id.split(DCL_POOL_SPLITER)[0] === tokenA.id ? point : -point;\n\n const msg = JSON.stringify({\n LimitOrderWithSwap: {\n pool_id,\n buy_token,\n point: new_point,\n },\n });\n\n transactions.push({\n receiverId: tokenA.id,\n functionCalls: [\n {\n methodName: 'ft_transfer_call',\n args: {\n receiver_id: config.REF_DCL_SWAP_CONTRACT_ID,\n amount: toNonDivisibleNumber(tokenA.decimals, amountA),\n msg,\n },\n gas: '180000000000000',\n amount: ONE_YOCTO_NEAR,\n },\n ],\n });\n }\n\n if (tokenA.id === WRAP_NEAR_CONTRACT_ID) {\n const registered = await ftGetStorageBalance(\n WRAP_NEAR_CONTRACT_ID,\n AccountId\n );\n if (registered === null) {\n transactions.unshift({\n receiverId: WRAP_NEAR_CONTRACT_ID,\n functionCalls: [registerAccountOnToken(AccountId)],\n });\n }\n }\n\n return transactions;\n};\n\nexport const quote = async ({\n pool_ids,\n input_amount,\n input_token,\n output_token,\n tag,\n}: {\n pool_ids: string[];\n input_token: TokenMetadata;\n output_token: TokenMetadata;\n input_amount: string;\n tag?: string;\n}) => {\n return refDCLSwapViewFunction({\n methodName: 'quote',\n args: {\n pool_ids,\n input_token: input_token.id,\n output_token: output_token.id,\n input_amount: toNonDivisibleNumber(input_token.decimals, input_amount),\n tag,\n },\n });\n};\n\nexport const list_user_assets = async (AccountId: string) => {\n if (!AccountId) return;\n\n return refDCLSwapViewFunction({\n methodName: 'list_user_assets',\n args: {\n account_id: AccountId,\n },\n });\n};\n\nexport const DCLSwapByInputOnBestPool = async ({\n tokenA,\n tokenB,\n amountA,\n slippageTolerance,\n AccountId,\n}: {\n tokenA: TokenMetadata;\n tokenB: TokenMetadata;\n amountA: string;\n slippageTolerance: number;\n AccountId: string;\n}) => {\n if (slippageTolerance <= 0 || slippageTolerance >= 100) {\n throw SlippageError;\n }\n\n const estimates = await Promise.all(\n DCL_POOL_FEE_LIST.map(async fee => {\n const pool_id = getDCLPoolId(tokenA.id, tokenB.id, fee);\n return quote({\n pool_ids: [pool_id],\n input_token: tokenA,\n output_token: tokenB,\n input_amount: amountA,\n tag: `${tokenA.id}-${fee}-${amountA}`,\n }).catch(e => null);\n })\n );\n\n if (!estimates || estimates.every(e => e === null)) {\n throw NoPoolOnThisPair(tokenA.id, tokenB.id);\n }\n\n const bestEstimate =\n estimates && estimates?.some(e => !!e)\n ? _.maxBy(estimates, e => Number(!e || !e.tag ? -1 : e.amount))\n : null;\n\n const bestFee =\n bestEstimate &&\n bestEstimate.tag &&\n bestEstimate?.tag?.split('-')?.[1] &&\n Number(bestEstimate?.tag?.split('-')?.[1]);\n\n return DCLSwap({\n swapInfo: {\n tokenA,\n tokenB,\n amountA,\n },\n Swap: {\n pool_ids: [getDCLPoolId(tokenA.id, tokenB.id, bestFee)],\n min_output_amount: percentLess(slippageTolerance, bestEstimate.amount),\n },\n AccountId,\n });\n};\n\nexport const quote_by_output = ({\n pool_ids,\n output_amount,\n input_token,\n output_token,\n}: {\n pool_ids: string[];\n input_token: TokenMetadata;\n output_token: TokenMetadata;\n output_amount: string;\n}) => {\n return refDCLSwapViewFunction({\n methodName: 'quote_by_output',\n args: {\n pool_ids,\n input_token: input_token.id,\n output_token: output_token.id,\n output_amount: toNonDivisibleNumber(output_token.decimals, output_amount),\n },\n });\n};\n","import { TokenMetadata, Transaction } from '../types';\nimport { NoOrderFound, OrderNoRemainedAmount } from '../error';\nimport {\n priceToPoint,\n toNonDivisibleNumber,\n toPrecision,\n registerAccountOnToken,\n} from '../utils';\nimport {\n ONE_YOCTO_NEAR,\n WRAP_NEAR_CONTRACT_ID,\n config,\n POINTLEFTRANGE,\n POINTRIGHTRANGE,\n} from '../constant';\nimport {\n nearDepositTransaction,\n ftGetStorageBalance,\n refDCLSwapViewFunction,\n} from '../ref';\n\nexport interface UserOrderInfo {\n order_id: string;\n owner_id: string;\n pool_id: string;\n point: number;\n sell_token: string;\n created_at: string;\n original_amount: string;\n remain_amount: string; // 0 means history order: ;\n cancel_amount: string;\n // amount through ft_transfer_call\n\n original_deposit_amount: string;\n // earn token amount through swap before actual place order\n\n swap_earn_amount: string;\n buy_token: string;\n unclaimed_amount: string; // claim will push it to inner account\n bought_amount: string; // accumalated amount into inner account\n}\n\nexport const list_history_orders = (AccountId: string) => {\n return refDCLSwapViewFunction({\n methodName: 'list_history_orders',\n args: {\n account_id: AccountId,\n },\n });\n};\n\nexport const list_active_orders = (AccountId: string) => {\n return refDCLSwapViewFunction({\n methodName: 'list_active_orders',\n args: {\n account_id: AccountId,\n },\n });\n};\n\nexport const get_order = async (order_id: string) => {\n return refDCLSwapViewFunction({\n methodName: 'get_order',\n args: {\n order_id,\n },\n }).catch(() => {\n throw NoOrderFound(order_id);\n });\n};\n\nexport const find_order = async ({\n pool_id,\n point,\n AccountId,\n}: {\n pool_id: string;\n point: number;\n AccountId: string;\n}) => {\n return refDCLSwapViewFunction({\n methodName: 'find_order',\n args: {\n account_id: AccountId,\n pool_id,\n point,\n },\n }).catch(() => {\n throw NoOrderFound();\n }) as Promise<UserOrderInfo>;\n};\nexport const cancel_order = async (order_id: string) => {\n const order = await get_order(order_id);\n\n if (!order.remain_amount) throw OrderNoRemainedAmount;\n\n const transactions: Transaction[] = [\n {\n receiverId: config.REF_DCL_SWAP_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'cancel_order',\n args: {\n order_id,\n amount: order.remain_amount,\n },\n gas: '180000000000000',\n },\n ],\n },\n ];\n\n return transactions;\n};\n\nexport const claim_order = (order_id: string) => {\n const transactions: Transaction[] = [\n {\n receiverId: config.REF_DCL_SWAP_CONTRACT_ID,\n functionCalls: [\n {\n methodName: 'cancel_order',\n args: {\n order_id,\n amount: '0',\n },\n gas: '180000000000000',\n },\n ],\n },\n ];\n\n return transactions;\n};\n\nexport const get_pointorder_range = ({\n pool_id,\n left_point,\n right_point,\n}: {\n pool_id: string;\n left_point?: number;\n right_point?: number;\n}) => {\n return refDCLSwapViewFunction({\n methodName: 'get_pointorder_range',\n args: {\n pool_id,\n left_point: left_point || POINTLEFTRANGE,\n right_point: right_point || POINTRIGHTRANGE,\n },\n });\n};\n"],"names":["FEE_DIVISOR","STABLE_LP_TOKEN_DECIMALS","RATED_POOL_LP_TOKEN_DECIMALS","STORAGE_TO_REGISTER_WITH_MFT","ONE_YOCTO_NEAR","ENV","getConfig","env","process","NEAR_ENV","REACT_APP_REF_SDK_ENV","networkId","nodeUrl","walletUrl","WRAP_NEAR_CONTRACT_ID","REF_FI_CONTRACT_ID","REF_TOKEN_ID","indexerUrl","explorerUrl","REF_DCL_SWAP_CONTRACT_ID","config","WNEAR_META_DATA","id","name","symbol","decimals","icon","REF_META_DATA","NEAR_META_DATA","TokenLinks","NEAR","wNEAR","REF","OCT","PARAS","SKYWARD","FLX","PULSE","DBIO","MYRIA","PXT","HAPI","OIN","ABR","MARMAJ","marmaj","USN","GRT","LINK","Cheddar","AURORA","$META","UMINT","UTO","DEIP","WOO","LINEAR","PEM","ATO","SEAT","FAR","BSTN","BRRR","XNL","KSW","STNEAR","NearX","SD","DISC","CONSTANT_D","POINTLEFTRANGE","POINTRIGHTRANGE","switchEnv","tradeFee","amount","trade_fee","calc_d","amp","c_amounts","token_num","length","sum_amounts","_","sum","d_prev","d","i","d_prod","c_amount","ann","numerator","denominator","Math","abs","calc_y","x_c_amount","current_c_amounts","index_x","index_y","s","c","b","y_prev","y","y_numerator","y_denominator","calc_swap","in_token_idx","in_c_amount","out_token_idx","old_c_amounts","dy","fee","amount_swapped","getSwappedAmount","tokenInId","tokenOutId","amountIn","stablePool","total_fee","token_account_ids","findIndex","rates","map","r","toReadableNumber","base_old_c_amounts","toNonDivisibleNumber","scientificNotationToString","Big","times","toString","Number","REF_WIDGET_STAR_TOKEN_LIST_KEY","REF_WIDGET_ALL_TOKENS_LIST_KEY","REF_WIDGET_SWAP_IN_KEY","REF_WIDGET_SWAP_OUT_KEY","REF_WIDGET_SWAP_DETAIL_KEY","DEFAULT_START_TOKEN_LIST_TESTNET","DEFAULT_START_TOKEN_LIST_MAINNET","defaultTheme","container","buttonBg","primary","secondary","borderRadius","fontFamily","hover","active","secondaryBg","borderColor","iconDefault","iconHover","defaultDarkModeTheme","refIcon","icons","getTokenPriceList","fetch","method","headers","then","res","json","list","getTokens","reload","storagedTokens","window","localStorage","getItem","JSON","parse","tokens","newTokens","Object","values","reduce","acc","cur","keys","REPLACE_TOKENS","includes","metaIconDefaults","setItem","stringify","getWhiteListTokensIndexer","whiteListIds","RM","DP","NE","PE","checkIntegerSumOfAllocations","allocations","totalInput","item","round","alloSum","a","plus","offset","minus","currMax","currMaxInd","gt","newAllocations","j","push","yenFromPy","bisqrt","value","BigInt","newtonIteration","n","x0","x1","getBetaForRoute","route","path","p","beta","reserves","p1","p2","getEpsilonForRoute","gamma","div","epsilon","gamma1","gamma2","getAlphaForRoute","inputToken","outputToken","key1","token1Id","key2","token2Id","val1","token1Supply","val2","token2Supply","alpha","key11","key12","val11","val12","key21","key22","val21","val22","middleToken","alpha1","alpha2","getAlphaSumFromRoutes","routes","nodeRoutes","alphaSum","nodeRoute","radical","toFixed","denom","getBetaSumFromRoutes","betaSum","num","getPhiFromRoutes","phi","getAllocationForRoute","allocation","getAllocationVectorForRoutes","allocationVec","getOptimalAllocationForRoutes","every","lt","some","reduceRoutes","sumAllocations","normalizedAllocations","goodIndices","dx","newRoutes","newNodeRoutes","goodIndex","allocationDict","allocationVecNew","zeroAllocation","getNodeRoutesFromPathsAndPoolChains","paths","poolChains","multiplicity","pc","mul","elem1","elem2","m","k","getPoolChainFromPaths","pools","threshold","pathInd","chain","pairs","pairInd","pair","tokenPools","getPoolsByToken1ANDToken2","culledPoolChains","getCulledPoolChains","newChains","newPath","legInd","leg","culledPath","cullPoolsWithInsufficientLiquidity","getRoutesFromPoolChain","pci","poolChain","cartesianProduct","getOutputSingleHop","pool","getOutputDoubleHop","poolIndex","c1","a1","c2","b2","getOutputFromRoute","eq","output","getOptOutputVec","result","getBestOptInputAndOutput","rawDict","outputRaw","inputRaw","res1","res2","v","bv1","bv2","input","getBestOptimalAllocationsAndOutputs","maxPathLength","getPathsFromPools","outputs","inputOutput","getHopActionsFromRoutes","hops","hop","allRoutes","allNodeRoutes","totalInputAmount","allAllocations","middleTokenAllocation","getActionListFromRoutesAndAllocations","getSmartRouteSwapActions","allTokens","numberOfRoutesLimit","MAX_NUMBER_PARALLEL_POOLS","decimalsCulledPoolIds","filter","resDict","sortedIndexValues","argsort","topIndices","slice","reducedRoutes","reducedNodeRoutes","ind","currentBestOutput","bestAllocations","bestNodeRoutes","bestRoutes","parallelNodeRoutes","parallelRoutes","currentNodeRoute","bestRoutesAreParallel","filteredAllocationsAndOutputs","parallellAllocations","parallelOutputs","sortIndices","filteredParallelRoutes","filteredParallelNodeRoutes","parallelOutput","canHaveTwoRoutes","route1","route2","nodeRoute1","nodeRoute2","route1PoolIds","Set","route2PoolIds","sharePool","route1PoolId","has","currentRoutes","currentNodeRoutes","filteredAllocations","filteredOutputs","totalOutput","allSortedIndices","sortedIndices","filteredRoutes","filteredNodeRoutes","index","sharedRoute","allFilteredRoutes","allFilteredNodeRoutes","firstRoute","firstRoutePoolIds","allFilteredRouteIds","secondRoute","stringAllo","actions","ftGetTokenMetadata","hopInputTokenMeta","hopOutputTokenMeta","hopOutputTokenDecimals","expectedHopOutput","decimalEstimate","pow","status","Promise","all","t","estimate","gamma_bps","partialAmountIn","supplies","token0_ref_price","token0_price","tokenIds","Dex","token","routeInputToken","routeOutputToken","overallPriceImpact","x","calculateSmartRouteV2PriceImpact","action","deltaY","inputTokenMeta","deltaX","R","P","totalAllocations","weights","weight","routeMarketPrice","num1","denom1","num2","denom2","priceImpact","decor","arr","undecor","decorated","sort","token1","token2","cullZeroLiquidityPools","filteredPools","getLiqudityOfPoolsFromList","liquidities","poolInd","amounts","poolBigAmounts","liquidity","getNormalizedLiquiditiesFromList","maxLiq","bigMax","normalizedLiquidities","arrayOfBigs","maxElem","val","thresh","normLiq","flatMap","e","flat","addEdge","g","edge","src","dst","addEdges","edgeList","deleteEdge","gNew","e1","e2","deleteNode","node","nodeInd","nodeNow","dijkstra","graph","solutions","dist","parent","nearest","Infinity","ndist","adj","concat","shortestPath","ignore_nodes","ignore_edges","gTemp","edgeInd","edgeNow","solution","unshift","PathBuffer","sortedpaths","len","cost","arrayContains","pop","shift","splice","indexOf","arrayEquals","Array","isArray","obj","obj_json","itemInd","source","target","listA","listB","prev_path","sol","root","root_length","edgeToIgnore","spur","getKShortestPaths","gen","next","getGraphFromPoolList","poolList","transitions","stableSmart","smartRouteActions","getExpectedOutputFromActionsORIG","PoolMode","getSimplePoolEstimate","tokenIn","tokenOut","amount_with_fee","in_balance","out_balance","getStablePoolEstimate","getStablePoolDecimal","amountOut","isNaN","toPrecision","dyOut","noFeeAmountOut","singlePoolSwap","simplePools","stablePools","NoPoolError","parsedAmountIn","simplePoolsThisPair","isStablePool","estimatesSimplePool","stablePoolThisPair","sp","estimatesStablePool","find","maxSimplePoolEstimate","undefined","maxBy","maxStablePoolEstimate","getStablePoolsThisPair","getPoolsByTokens","getPoolEstimate","stablePoolDetail","getHybridStableSmart","stablePoolsDetail","isStablePoolToken","stablePoolsDetailById","pools1","pools2","pools1Right","pools2Right","candidatePools","otherStables","otherStable","stablePoolsThisPair","tmpPools","tobeAddedPools","middleTokens","p2s","ftGetTokensMetadata","cp","tokensMedata","BestPoolPair","poolPair","stablePoolDetailThisPair","spd","tmpPool1","tmpPool2","tokenMidId","tokenMidMeta","estimate1","SMART","estimate2","bestPool","STABLE","pool1","pool2","estimateSwap","options","SameInputTokenError","ONLY_ZEROS","test","ZeroInputError","enableSmartRouting","singleRouteEstimate","PARALLEL","inputPools","poolFormatter","simplePoolSmartRoutingActions","simplePoolSmartRoutingEstimate","hybridSmartRoutingRes","hybridSmartRoutingEstimate","gte","parsePool","shareSupply","shares_total_supply","tvl","pool_kind","shares","tokenId","poolId","minAmountOut","isInteger","ceil","convertToPercentDecimal","percent","math","percentOf","percentLess","notation","getGas","gas","BN","getAmount","utils","format","parseNearAmount","number","wholeStr","substring","fractionStr","padStart","replace","split","wholePart","fracPart","padEnd","strParam","flag","sysbol","negative","match","basis","ifFraction","formatWithCommas","pattern","precision","withCommas","atLeastOne","whole","decimal","str","lastIndexOf","transformTransactions","transactions","AccountId","parsedTransactions","signerId","receiverId","functionCalls","fc","type","params","methodName","args","toNumber","deposit","WalletSelectorTransactions","separateRoutes","curRoute","calculateExchangeRate","from","to","getAvgFee","estimates","forEach","getAccountName","account","network","niceAccountId","symbolsArr","multiply","factor1","factor2","toInternationalCurrencySystemLongString","labelValue","percentOfBigNumber","valueBig","percentBig","toRealSymbol","blackList","charAt","toUpperCase","calculateFeeCharge","total","calculateFeePercent","getExpectedOutputFromSwapTodos","calculateAmountReceived","big_in_balance","big_out_balance","constant_product","new_in_balance","new_out_balance","tokenOutReceived","calculateMarketPrice","cur_in_balance","cur_out_balance","calculateSmartRoutingPriceImpact","tokenInAmount","swapTodos","tokenMid","isPool1StablePool","isPool2StablePool","marketPrice1","marketPrice2","generalMarketPrice","tokenMidReceived","formattedTokenMidReceived","stableOutPool2","stablePool2","stableOut","newMarketPrice","PriceImpact","calcStableSwapPriceImpact","marketPrice","calculatePriceImpact","finalMarketPrice","separatedReceivedAmount","finalTokenOutReceived","calculateSmartRoutesV2PriceImpact","tokenInPara","priceImpactForRoutes","readablePartialAmountIn","rawRes","pre","getPriceImpact","PriceImpactValue","priceImpactValueSmartRouting","priceImpactValueSmartRoutingV2","error","subtraction","initialValue","toBeSubtract","getPoolAllocationPercents","partialAmounts","ps","fill","sortedAmount","sortBy","minIndexes","minIndex","finalPIndex","isMobile","screen","width","divide","getMax","String","getPointByPrice","pointDelta","price","decimalRate","noNeedSlot","point","log","point_int","point_int_slot","floor","feeToPointDelta","NoFeeToPool","priceToPoint","tokenA","tokenB","amountA","amountB","DCL_POOL_FEE_LIST","decimal_price_A_by_B","undecimal_price_A_by_B","pointToPrice","undecimal_price","registerAccountOnToken","registration_only","account_id","getKeyStore","keyStores","InMemoryKeyStore","BrowserLocalStorageKeyStore","provider","providers","JsonRpcProvider","url","getMemorySigner","keyPath","homedir","os","credentials","fs","readFileSync","credentialAccountId","NoCredential","AccountIdMisMatch","myKeyStore","setKey","KeyPair","fromString","private_key","signer","InMemorySigner","validateAccessKey","transaction","accessKey","permission","FunctionCall","receiver_id","method_names","parseFloat","getSignedTransactionsByMemoryKey","transactionsRef","block","finality","signedTransactions","getPublicKey","publicKey","NoPuiblicKeyError","query","request_type","public_key","InValidAccessKeyError","tx","nearTransactions","createTransaction","PublicKey","nonce","functionCall","serialize","base_decode","header","hash","signTransaction","signedTx","sendTransactionsByMemoryKey","results","sendTransaction","BANANA_ID","CHEDDAR_ID","CUCUMBER_ID","HAPI_ID","WOO_ID","near","Near","keyStore","init_env","refFiViewFunction","nearConnection","viewFunction","ftViewFunction","ftGetStorageBalance","NoAccountIdFound","ftGetBalance","getAccountNearBalance","getTotalPools","tag","TokenNotExistError","metadata","tokensMetadata","getGlobalWhitelist","globalWhitelist","getUserRegisteredTokens","accountId","data","nearDepositTransaction","nearWithdrawTransaction","refDCLSwapViewFunction","DCLInValid","DCLSwapGetStorageBalance","getDCLPoolId","tokenSeq","join","listDCLPools","getDCLPool","pool_id","token_x","token_y","token_seq","new_pool_id","formatError","msg","Error","unNamedError","NotLoginError","SwapRouteError","NoLocalSignerError","NoPoolOnThisPair","SlippageError","NoOrderFound","order_id","OrderNoRemainedAmount","instantSwap","slippageTolerance","registerToken","tokenRegistered","registered","actionsList","allSwapsTokens","swapTokens","token_in","token_out","amount_in","min_amount_out","force","DEFAULT_PAGE_LIMIT","getRatedPoolDetail","pool_info","getUnRatedPoolDetail","getStablePools","getPool","getRefPools","page","perPage","from_index","limit","poolData","rawPool","fetchAllPools","min","totalPools","pages","unRatedPools","ratedPools","ThemeContext","createContext","ThemeContextProvider","customTheme","children","useState","theme","setTheme","useEffect","React","Provider","estimateValidator","totalPartialAmountIn","useAllTokens","setTokens","tokensLoading","setTokensLoading","fetchTokens","useTokensIndexer","defaultTokenList","tokenLoading","setTokenLoading","getTokensList","whiteList","globalWhiteListTokens","parsedTokens","newList","useRefPools","refreshTrigger","allPools","setAllPools","poolFetchingState","setPoolFetchingState","allStablePools","setAllStablePools","useSwap","onSwap","swapParams","setEstimates","canSwap","setCanSwap","swapError","setSwapError","setAmountOut","isEstimating","setIsEstimating","forceEstimate","setForceEstimate","rate","makeSwap","outEstimate","bigEstimate","curEstimate","getEstimate","expectAmountOut","estimateValidationPass","TokenPriceContext","useTokenPriceList","tokenPriceList","setTokenPriceList","TokenPriceContextProvider","useTokenBalnces","balances","setBalances","validTokens","ids","balancesMap","textColor","displayValue","tokenInInfo","className","SmartRouteV2","tokensRaw","useContext","ParaTokenFrom","style","marginRight","Icon","alt","height","flexShrink","Hub","position","bottom","ArrowRight","DetailView","minReceived","storagedOpen","showDetail","setShowDetail","isRateReverse","setIsRateReverse","tokensPerRoute","swap","identicalRoutes","hub","percents","useMemo","priceImpactDisplay","displayRate","revertRate","revertDisplayRate","color","cursor","onClick","removeItem","FiChevronDown","FiChevronUp","RiExchangeFill","size","marginLeft","border","flexDirection","alignItems","justifyContent","RouterIcon","whiteSpace","minWidth","key","HalfAndMaxAmount","max","onChangeAmount","halfValue","hoverHalf","setHoverHalf","hoverMax","setHoverMax","background","onMouseEnter","onMouseLeave","half","TokenAmount","props","balance","reloading","onSelectToken","onForceUpdate","ref","useRef","hoverSelect","setHoverSelect","handleChange","current","setCustomValidity","curMax","RiRefreshLine","onWheel","blur","step","placeholder","onChange","disabled","onKeyDown","preventDefault","marginBottom","textAlign","fontSize","SlippageSelector","onChangeSlippageTolerance","showSlip","setShowSlip","invalid","setInValid","document","onclick","stopPropagation","paddingBottom","defaultValue","required","padding","IoWarning","StarToken","onDelete","hoverIcon","setHoverIcon","hoverClose","setHoverClose","top","right","boxShadow","IoCloseOutline","stroke","Token","isSticky","onClickPin","setHoverIndex","hoverIndex","displayBalance","hoverOutLink","setHoverOutLink","hoverPin","setHoverPin","HiOutlineExternalLink","marginTop","open","AiFillPushpin","AiOutlinePushpin","TokenListTable","starList","setStarList","currentSort","setCurrentSort","tokenSorting","b1","borderBottom","TiArrowSortedUp","TiArrowSortedDown","TokenSelector","onSelect","onClose","searchValue","setSearchValue","handleSearch","storagedStartList","DEFAULT_START_TOKEN_LIST","newStarList","starToken","tableListFilter","searchValueLower","toLowerCase","FiChevronLeft","FaSearch","evt","Slider","setHover","viewBox","xmlns","fillRule","clipRule","RefIcon","Loading","cx","cy","strokeWidth","strokeLinecap","Warning","y1","x2","y2","Success","left","gradientUnits","stopColor","Notification","state","detail","setOpen","setState","href","textDecoration","rel","fontWeight","AccountButton","onDisConnect","hoverAccount","setHoverAccount","SwapWidget","connection","transactionState","onConnect","defaultTokenIn","defaultTokenOut","darkMode","curTheme","STORAGED_TOKEN_IN","STORAGED_TOKEN_OUT","isSignedInProp","isSignedIn","setTokenIn","handleSetTokenIn","handleSetTokenOut","setTokenOut","tokenInBalance","setTokenInBalance","tokenOutBalance","setTokenOutBalance","notOpen","setNotOpen","widgetRoute","setWidgetRoute","setAmountIn","setSlippageTolerance","setRreshTrigger","defaultIn","defaultOut","wrapedId","available","handleSubmit","canSubmit","onSubmit","CgArrowsExchangeAltV","paddingTop","TiWarning","message","opacity","display","DefaultTestnetTokenList","spec","reference","reference_hash","DefaultMainnetTokenList","getDefaultTokenList","DCL_POOL_SPLITER","DCLSwap","Swap","SwapByOutput","LimitOrderWithSwap","swapInfo","pool_ids","output_token","min_output_amount","output_amount","buy_token","DCLRegistered","new_point","quote","input_amount","input_token","list_user_assets","DCLSwapByInputOnBestPool","bestEstimate","bestFee","quote_by_output","list_history_orders","list_active_orders","get_order","find_order","cancel_order","order","remain_amount","claim_order","get_pointorder_range","left_point","right_point"],"mappings":"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"}