From 5a3d8f637830bdcc84a41dfb099c5390787c621e Mon Sep 17 00:00:00 2001 From: Tracy Date: Mon, 15 Aug 2022 17:40:42 +0800 Subject: [PATCH 1/7] Add airdrop script for XAV --- hardhat.config.ts | 5 ++ scripts/airdrop-xav/generate-airdroplist.ts | 82 +++++++++++++++++++++ scripts/constants/abi/rnbw.ts | 10 +++ 3 files changed, 97 insertions(+) create mode 100644 scripts/airdrop-xav/generate-airdroplist.ts create mode 100644 scripts/constants/abi/rnbw.ts diff --git a/hardhat.config.ts b/hardhat.config.ts index af61c17..53964ed 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -9,6 +9,7 @@ import '@nomiclabs/hardhat-etherscan' import 'hardhat-typechain' import { fetchV0Stats } from './scripts/protocol-statistics/fetch-v0-stats' import { fetchV1Stats } from './scripts/protocol-statistics/fetch-v1-stats' +import { generateAirdroplist } from './scripts/airdrop-xav/generate-airdroplist' // You need to export an object to set up your config // Go to https://hardhat.org/config/ to learn more @@ -31,6 +32,10 @@ task('v0statistics', 'fetch v0 statistics', async (args, hre) => { await fetchV0Stats(hre) }) +task('xav-airdrop', 'generate airdrop addresses', async (args, hre) => { + await generateAirdroplist(hre) +}) + const config: HardhatUserConfig = { solidity: '0.6.12', networks: { diff --git a/scripts/airdrop-xav/generate-airdroplist.ts b/scripts/airdrop-xav/generate-airdroplist.ts new file mode 100644 index 0000000..6fb8179 --- /dev/null +++ b/scripts/airdrop-xav/generate-airdroplist.ts @@ -0,0 +1,82 @@ +require('dotenv').config() + +// import { ethers } from 'hardhat' +import { formatEther, formatUnits, parseEther } from 'ethers/lib/utils' +import { ExportToCsv } from 'export-to-csv' +import { internalRnbwHolders } from '../constants/abi/rnbw' +import { HardhatRuntimeEnvironment } from 'hardhat/types' +import * as fs from 'fs' + +interface AirdropList { + address: string + balance: string +} + +export const generateAirdroplist = async (hre: HardhatRuntimeEnvironment) => { + // 0 - Setup + const options = { + fieldSeparator: ',', + quoteStrings: '"', + decimalSeparator: '.', + showLabels: true, + showTitle: true, + title: `Airdrop List`, + useTextFile: false, + useBom: true, + useKeysAsHeaders: true + } + + const csvExporter = new ExportToCsv(options) + const airdropList: AirdropList[] = [] + const addresses: string[] = [] + const snapshotBlockNumber = 15281097 + + // 1 - get rnbwContract contract instance + const rnbwContract = await hre.ethers.getContractAt( + 'HaloToken', + '0xe94b97b6b43639e238c851a7e693f50033efd75c' + ) + + // 2 - query all Transfer events from deployment to snapshot block + const rnbwContractEventFilter = await rnbwContract.filters.Transfer() + + const rnbwContractEvents = await rnbwContract.queryFilter( + rnbwContractEventFilter, + 12570796, // deployment block + snapshotBlockNumber + ) + + // 3 - store Events[] to an array to prevent loss + const rnbwContractEventsArray = rnbwContractEvents + + // 4 - store all unique addresses from transfer events in an array + for (let key in rnbwContractEventsArray) { + const log = rnbwContractEventsArray[key] + if (addresses.indexOf(log.args?.to) < 0 + && log.args?.to != '0x0000000000000000000000000000000000000000' + && internalRnbwHolders.indexOf(log.args?.to) < 0) { + addresses.push(log.args?.to) + } + if (addresses.indexOf(log.args?.from) < 0 + && log.args?.from != '0x0000000000000000000000000000000000000000' + && internalRnbwHolders.indexOf(log.args?.from) < 0) { + addresses.push(log.args?.from) + } + } + + // 5 - get the RNBW balance of addresses at snapshot block + for (let key in addresses) { + const bal = await rnbwContract.balanceOf(addresses[key], { blockTag: snapshotBlockNumber }) + if (bal > 0) { + airdropList.push({ + address: addresses[key], + balance: formatEther(bal) + }) + console.log(addresses[key], formatEther(bal)) + } + } + + // 5 - output csv + const protocolStatsCSV = csvExporter.generateCsv(airdropList, true) + fs.writeFileSync(`v1Protocol${name}.csv`, protocolStatsCSV) +} \ No newline at end of file diff --git a/scripts/constants/abi/rnbw.ts b/scripts/constants/abi/rnbw.ts new file mode 100644 index 0000000..00ec56a --- /dev/null +++ b/scripts/constants/abi/rnbw.ts @@ -0,0 +1,10 @@ +export const internalRnbwHolders = [ + '0x4fbc1dffd80f197cf99faeda8f7bcae0ebea4d81', // xRNBW Primary Bridge + '0xa3a7b6f88361f48403514059f1f16c8e78d60eec', // xRNBW Arbitrum Bridge (external contract) + '0xd10e226f85dfb53aa2f9f3d297e521e1ee4f1bf7', // xRNBW Multichain Bridge (external contract) + '0x9cff4a10b6fb163a4df369aafed9d95838222ca6', // AMM Rewards 1.1 + '0x1af00782f74ddc4c7fcefe8752113084febcda45', // AMM Rewards 1.0 + '0x5fcd66bce7fdccbaa7aeeb39537820bd953ef7e2', // AMM Rewards 0 + '0xd1a8ab10725779246d9d48e422f7fc3313d133f2', // Uniswap V2: xRNBW + '0x7eaE370E6a76407C3955A2f0BBCA853C38e6454E', // contract ops multisig +] \ No newline at end of file From 6e83df70aef878b2cdf8e8aadba5394928ec8cbd Mon Sep 17 00:00:00 2001 From: Tracy Date: Mon, 15 Aug 2022 17:43:26 +0800 Subject: [PATCH 2/7] Update readme --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 7fc2d85..55ac8b7 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,8 @@ Example: ``` yarn hardhat v1statistics --curveaddress 0x64DCbDeb83e39f152B7Faf83E5E5673faCA0D42A --name XSGD --decimal 6 --network mainnet ``` + +### Using XAV Airdrop +``` +yarn hardhat xav-airdrop --network mainnet +``` \ No newline at end of file From cf9ed9206148e7a205ac870aa91f79a98877a2b5 Mon Sep 17 00:00:00 2001 From: Tracy Date: Tue, 16 Aug 2022 08:06:52 +0800 Subject: [PATCH 3/7] Update script to generate xRNBW holders --- scripts/airdrop-xav/generate-airdroplist.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/airdrop-xav/generate-airdroplist.ts b/scripts/airdrop-xav/generate-airdroplist.ts index 6fb8179..7500616 100644 --- a/scripts/airdrop-xav/generate-airdroplist.ts +++ b/scripts/airdrop-xav/generate-airdroplist.ts @@ -33,8 +33,8 @@ export const generateAirdroplist = async (hre: HardhatRuntimeEnvironment) => { // 1 - get rnbwContract contract instance const rnbwContract = await hre.ethers.getContractAt( - 'HaloToken', - '0xe94b97b6b43639e238c851a7e693f50033efd75c' + 'HaloHalo', + '0x47BE779De87de6580d0548cde80710a93c502405' ) // 2 - query all Transfer events from deployment to snapshot block From 6b7455b02c32d0d6ed686a3b9ada9fd595f26f85 Mon Sep 17 00:00:00 2001 From: Tracy Date: Tue, 16 Aug 2022 08:22:04 +0800 Subject: [PATCH 4/7] Fix typo --- scripts/airdrop-xav/generate-airdroplist.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/airdrop-xav/generate-airdroplist.ts b/scripts/airdrop-xav/generate-airdroplist.ts index 7500616..2e38d5a 100644 --- a/scripts/airdrop-xav/generate-airdroplist.ts +++ b/scripts/airdrop-xav/generate-airdroplist.ts @@ -64,6 +64,7 @@ export const generateAirdroplist = async (hre: HardhatRuntimeEnvironment) => { } } + console.log(addresses) // 5 - get the RNBW balance of addresses at snapshot block for (let key in addresses) { const bal = await rnbwContract.balanceOf(addresses[key], { blockTag: snapshotBlockNumber }) @@ -77,6 +78,6 @@ export const generateAirdroplist = async (hre: HardhatRuntimeEnvironment) => { } // 5 - output csv - const protocolStatsCSV = csvExporter.generateCsv(airdropList, true) - fs.writeFileSync(`v1Protocol${name}.csv`, protocolStatsCSV) + const xavAirdropCSV = csvExporter.generateCsv(airdropList, true) + fs.writeFileSync(`xav-airdrop-list.csv`, xavAirdropCSV) } \ No newline at end of file From 7cc6d898ea109cec5cf83f69043dd141611e2719 Mon Sep 17 00:00:00 2001 From: Tracy Date: Tue, 16 Aug 2022 09:11:55 +0800 Subject: [PATCH 5/7] Fix naming conventions --- README.md | 2 +- hardhat.config.ts | 9 +++-- scripts/airdrop-xav/generate-airdroplist.ts | 37 +++++++++++---------- scripts/constants/abi/rnbw.ts | 10 ------ scripts/constants/index.ts | 10 ++++++ 5 files changed, 37 insertions(+), 31 deletions(-) delete mode 100644 scripts/constants/abi/rnbw.ts diff --git a/README.md b/README.md index 55ac8b7..5f21fe3 100644 --- a/README.md +++ b/README.md @@ -55,5 +55,5 @@ yarn hardhat v1statistics --curveaddress 0x64DCbDeb83e39f152B7Faf83E5E5673faCA0D ### Using XAV Airdrop ``` -yarn hardhat xav-airdrop --network mainnet +yarn hardhat xav-airdrop --tokencontractname HaloHalo --tokenaddress 0x47BE779De87de6580d0548cde80710a93c502405 --network mainnet ``` \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 53964ed..b2c5f25 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -32,9 +32,12 @@ task('v0statistics', 'fetch v0 statistics', async (args, hre) => { await fetchV0Stats(hre) }) -task('xav-airdrop', 'generate airdrop addresses', async (args, hre) => { - await generateAirdroplist(hre) -}) +task('xav-airdrop', 'generate XAV airdrop addresses') + .addParam('name', 'Token Contract Name') + .addParam('tokenaddress', 'Token Contract Address') + .setAction(async ({ name, tokenaddress }, hre) => { + await generateAirdroplist(hre, name, tokenaddress) + }) const config: HardhatUserConfig = { solidity: '0.6.12', diff --git a/scripts/airdrop-xav/generate-airdroplist.ts b/scripts/airdrop-xav/generate-airdroplist.ts index 2e38d5a..ee341c6 100644 --- a/scripts/airdrop-xav/generate-airdroplist.ts +++ b/scripts/airdrop-xav/generate-airdroplist.ts @@ -3,7 +3,7 @@ require('dotenv').config() // import { ethers } from 'hardhat' import { formatEther, formatUnits, parseEther } from 'ethers/lib/utils' import { ExportToCsv } from 'export-to-csv' -import { internalRnbwHolders } from '../constants/abi/rnbw' +import { xrnbwInternalHolders } from '../constants/index' import { HardhatRuntimeEnvironment } from 'hardhat/types' import * as fs from 'fs' @@ -12,7 +12,11 @@ interface AirdropList { balance: string } -export const generateAirdroplist = async (hre: HardhatRuntimeEnvironment) => { +export const generateAirdroplist = async ( + hre: HardhatRuntimeEnvironment, + name: string, + tokenaddress: string +) => { // 0 - Setup const options = { fieldSeparator: ',', @@ -29,45 +33,44 @@ export const generateAirdroplist = async (hre: HardhatRuntimeEnvironment) => { const csvExporter = new ExportToCsv(options) const airdropList: AirdropList[] = [] const addresses: string[] = [] - const snapshotBlockNumber = 15281097 + const snapshotBlockNumber = 15281097 - // 1 - get rnbwContract contract instance - const rnbwContract = await hre.ethers.getContractAt( - 'HaloHalo', - '0x47BE779De87de6580d0548cde80710a93c502405' + // 1 - get tokenContract contract instance + const tokenContract = await hre.ethers.getContractAt( + name, + tokenaddress, ) // 2 - query all Transfer events from deployment to snapshot block - const rnbwContractEventFilter = await rnbwContract.filters.Transfer() + const tokenContractEventFilter = await tokenContract.filters.Transfer() - const rnbwContractEvents = await rnbwContract.queryFilter( - rnbwContractEventFilter, + const tokenContractEvents = await tokenContract.queryFilter( + tokenContractEventFilter, 12570796, // deployment block snapshotBlockNumber ) // 3 - store Events[] to an array to prevent loss - const rnbwContractEventsArray = rnbwContractEvents + const tokenContractEventsArray = tokenContractEvents // 4 - store all unique addresses from transfer events in an array - for (let key in rnbwContractEventsArray) { - const log = rnbwContractEventsArray[key] + for (let key in tokenContractEventsArray) { + const log = tokenContractEventsArray[key] if (addresses.indexOf(log.args?.to) < 0 && log.args?.to != '0x0000000000000000000000000000000000000000' - && internalRnbwHolders.indexOf(log.args?.to) < 0) { + && xrnbwInternalHolders.indexOf(log.args?.to) < 0) { addresses.push(log.args?.to) } if (addresses.indexOf(log.args?.from) < 0 && log.args?.from != '0x0000000000000000000000000000000000000000' - && internalRnbwHolders.indexOf(log.args?.from) < 0) { + && xrnbwInternalHolders.indexOf(log.args?.from) < 0) { addresses.push(log.args?.from) } } - console.log(addresses) // 5 - get the RNBW balance of addresses at snapshot block for (let key in addresses) { - const bal = await rnbwContract.balanceOf(addresses[key], { blockTag: snapshotBlockNumber }) + const bal = await tokenContract.balanceOf(addresses[key], { blockTag: snapshotBlockNumber }) if (bal > 0) { airdropList.push({ address: addresses[key], diff --git a/scripts/constants/abi/rnbw.ts b/scripts/constants/abi/rnbw.ts deleted file mode 100644 index 00ec56a..0000000 --- a/scripts/constants/abi/rnbw.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const internalRnbwHolders = [ - '0x4fbc1dffd80f197cf99faeda8f7bcae0ebea4d81', // xRNBW Primary Bridge - '0xa3a7b6f88361f48403514059f1f16c8e78d60eec', // xRNBW Arbitrum Bridge (external contract) - '0xd10e226f85dfb53aa2f9f3d297e521e1ee4f1bf7', // xRNBW Multichain Bridge (external contract) - '0x9cff4a10b6fb163a4df369aafed9d95838222ca6', // AMM Rewards 1.1 - '0x1af00782f74ddc4c7fcefe8752113084febcda45', // AMM Rewards 1.0 - '0x5fcd66bce7fdccbaa7aeeb39537820bd953ef7e2', // AMM Rewards 0 - '0xd1a8ab10725779246d9d48e422f7fc3313d133f2', // Uniswap V2: xRNBW - '0x7eaE370E6a76407C3955A2f0BBCA853C38e6454E', // contract ops multisig -] \ No newline at end of file diff --git a/scripts/constants/index.ts b/scripts/constants/index.ts index 3f6273e..e58ab83 100644 --- a/scripts/constants/index.ts +++ b/scripts/constants/index.ts @@ -5,6 +5,16 @@ export const BPool: { xsgdusdc: string; thkdusdc: string } = { thkdusdc: '0x309411c77CF68D5662c0D4dF68FB60f7E2dF3B65' } +export const xrnbwInternalHolders = [ + '0x4fbc1dffd80f197cf99faeda8f7bcae0ebea4d81', // xRNBW Primary Bridge + '0xa3a7b6f88361f48403514059f1f16c8e78d60eec', // xRNBW Arbitrum Bridge (external contract) + '0xd10e226f85dfb53aa2f9f3d297e521e1ee4f1bf7', // xRNBW Multichain Bridge (external contract) + '0x9cff4a10b6fb163a4df369aafed9d95838222ca6', // AMM Rewards 1.1 + '0x1af00782f74ddc4c7fcefe8752113084febcda45', // AMM Rewards 1.0 + '0x5fcd66bce7fdccbaa7aeeb39537820bd953ef7e2', // AMM Rewards 0 + '0xd1a8ab10725779246d9d48e422f7fc3313d133f2', // Uniswap V2: xRNBW + '0x7eaE370E6a76407C3955A2f0BBCA853C38e6454E', // contract ops multisig +] export interface Stats { amountIn: string amountOut: string From 7b8b09f2b367473a00a30f8b14474fe866f93d23 Mon Sep 17 00:00:00 2001 From: Tracy Date: Tue, 16 Aug 2022 09:14:49 +0800 Subject: [PATCH 6/7] Fix comment typo --- scripts/airdrop-xav/generate-airdroplist.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/airdrop-xav/generate-airdroplist.ts b/scripts/airdrop-xav/generate-airdroplist.ts index ee341c6..0af0b66 100644 --- a/scripts/airdrop-xav/generate-airdroplist.ts +++ b/scripts/airdrop-xav/generate-airdroplist.ts @@ -68,7 +68,7 @@ export const generateAirdroplist = async ( } } - // 5 - get the RNBW balance of addresses at snapshot block + // 5 - get the xRNBW balance of addresses at snapshot block for (let key in addresses) { const bal = await tokenContract.balanceOf(addresses[key], { blockTag: snapshotBlockNumber }) if (bal > 0) { From 7ad38ecba362692717270d45349cf541ade22360 Mon Sep 17 00:00:00 2001 From: Tracy Date: Tue, 28 Mar 2023 15:58:41 +0800 Subject: [PATCH 7/7] Add fetch-lp-with-balance --- hardhat.config.ts | 5 + .../airdrop-ammv1/1-generate-airdroplist.ts | 2 +- scripts/airdrop-xav/generate-airdroplist.ts | 2 +- scripts/constants/abi/amm-rewards.ts | 705 ++++++++++++++++++ scripts/constants/index.ts | 7 + .../fetch-lp-with-balance.ts | 60 ++ yarn.lock | 489 +++++++++++- 7 files changed, 1263 insertions(+), 7 deletions(-) create mode 100644 scripts/constants/abi/amm-rewards.ts create mode 100644 scripts/protocol-statistics/fetch-lp-with-balance.ts diff --git a/hardhat.config.ts b/hardhat.config.ts index b2c5f25..b405f5d 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -9,6 +9,7 @@ import '@nomiclabs/hardhat-etherscan' import 'hardhat-typechain' import { fetchV0Stats } from './scripts/protocol-statistics/fetch-v0-stats' import { fetchV1Stats } from './scripts/protocol-statistics/fetch-v1-stats' +import { fetchLPWithBalance } from './scripts/protocol-statistics/fetch-lp-with-balance' import { generateAirdroplist } from './scripts/airdrop-xav/generate-airdroplist' // You need to export an object to set up your config @@ -32,6 +33,10 @@ task('v0statistics', 'fetch v0 statistics', async (args, hre) => { await fetchV0Stats(hre) }) +task('lpWithBalance', 'fetch LP with Balance from AMM Rewards', async (args, hre) => { + await fetchLPWithBalance(hre) +}) + task('xav-airdrop', 'generate XAV airdrop addresses') .addParam('name', 'Token Contract Name') .addParam('tokenaddress', 'Token Contract Address') diff --git a/scripts/airdrop-ammv1/1-generate-airdroplist.ts b/scripts/airdrop-ammv1/1-generate-airdroplist.ts index d8d622d..948d739 100644 --- a/scripts/airdrop-ammv1/1-generate-airdroplist.ts +++ b/scripts/airdrop-ammv1/1-generate-airdroplist.ts @@ -36,7 +36,7 @@ const verifyAddresses = async () => { const [deployer] = await ethers.getSigners() const ammRewardsv1 = await ethers.getContractAt( 'AmmRewards', - process.env.AMM_REWARDS_CONTRACT_ADDRESS + '0x9cFf4A10b6Fb163a4DF369AaFed9d95838222ca6' //process.env.AMM_REWARDS_CONTRACT_ADDRESS ) console.log(`Deployer Address: ${deployer.address}`) diff --git a/scripts/airdrop-xav/generate-airdroplist.ts b/scripts/airdrop-xav/generate-airdroplist.ts index 0af0b66..23f8162 100644 --- a/scripts/airdrop-xav/generate-airdroplist.ts +++ b/scripts/airdrop-xav/generate-airdroplist.ts @@ -11,7 +11,7 @@ interface AirdropList { address: string balance: string } - + export const generateAirdroplist = async ( hre: HardhatRuntimeEnvironment, name: string, diff --git a/scripts/constants/abi/amm-rewards.ts b/scripts/constants/abi/amm-rewards.ts new file mode 100644 index 0000000..f640d06 --- /dev/null +++ b/scripts/constants/abi/amm-rewards.ts @@ -0,0 +1,705 @@ +export const ammRewardsABI = [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "rewardToken_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "EmergencyWithdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Harvest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "allocPoint", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "lpToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IRewarder", + "name": "rewarder", + "type": "address" + } + ], + "name": "LogPoolAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "rewardTokenPerSecond", + "type": "uint256" + } + ], + "name": "LogRewardTokenPerSecond", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "allocPoint", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "contract IRewarder", + "name": "rewarder", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "overwrite", + "type": "bool" + } + ], + "name": "LogSetPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lastRewardTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lpSupply", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "accRewardTokenPerShare", + "type": "uint256" + } + ], + "name": "LogUpdatePool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "REWARD_TOKEN", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "allocPoint", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "contract IRewarder", + "name": "_rewarder", + "type": "address" + } + ], + "name": "add", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "harvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "lpToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "pids", + "type": "uint256[]" + } + ], + "name": "massUpdatePools", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "pendingRewardToken", + "outputs": [ + { + "internalType": "uint256", + "name": "pending", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poolInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "accRewardTokenPerShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "allocPoint", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolLength", + "outputs": [ + { + "internalType": "uint256", + "name": "pools", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardTokenPerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "rewarder", + "outputs": [ + { + "internalType": "contract IRewarder", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_allocPoint", + "type": "uint256" + }, + { + "internalType": "contract IRewarder", + "name": "_rewarder", + "type": "address" + }, + { + "internalType": "bool", + "name": "overwrite", + "type": "bool" + } + ], + "name": "set", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rewardTokenPerSecond_", + "type": "uint256" + } + ], + "name": "setRewardTokenPerSecond", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsManager", + "type": "address" + } + ], + "name": "setRewardsManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalAllocPoint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "pid", + "type": "uint256" + } + ], + "name": "updatePool", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "accRewardTokenPerShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "allocPoint", + "type": "uint256" + } + ], + "internalType": "struct AmmRewards.PoolInfo", + "name": "pool", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardDebt", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdrawAndHarvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] \ No newline at end of file diff --git a/scripts/constants/index.ts b/scripts/constants/index.ts index e58ab83..e4632fd 100644 --- a/scripts/constants/index.ts +++ b/scripts/constants/index.ts @@ -32,6 +32,13 @@ export interface StatsCurve { caller: string } +export interface UserInfo { + pid: number + user: string + amount: string + rewardDebt: string +} + // add more here as needed export const getStartBlockNumber = (networkName: string) => { switch (networkName) { diff --git a/scripts/protocol-statistics/fetch-lp-with-balance.ts b/scripts/protocol-statistics/fetch-lp-with-balance.ts new file mode 100644 index 0000000..37e73a8 --- /dev/null +++ b/scripts/protocol-statistics/fetch-lp-with-balance.ts @@ -0,0 +1,60 @@ +import { formatEther, formatUnits } from 'ethers/lib/utils' +import { ExportToCsv } from 'export-to-csv' +import { + UserInfo +} from '../constants' +import * as fs from 'fs' +import { ammRewardsABI } from '../constants/abi/amm-rewards' +import { curveABI } from '../constants/abi/curve' +import { HardhatRuntimeEnvironment } from 'hardhat/types' +import { getBlockRangeIteration } from '../util/blockUtils' + +export const fetchLPWithBalance = async ( + hre: HardhatRuntimeEnvironment + // curveAddress: string, + // name: string, + // decimal: number +) => { + const [deployer] = await hre.ethers.getSigners() + const userInfo: UserInfo[] = [] + + const FROM_BLOCK = 18910358 + + const ammRewardsContract = new hre.ethers.Contract( + '0x972127aFf8e6464e50eFc0a2aD344063355AE424', + ammRewardsABI, + deployer + ) + + const ammRewardsContractEventFilter = await ammRewardsContract.filters.Deposit() + + + const ammRewardsContractEvents = await ammRewardsContract.queryFilter( + ammRewardsContractEventFilter, + FROM_BLOCK, + await deployer.provider?.getBlockNumber() + ) + + const ammRewardsContractEventsArray = ammRewardsContractEvents + + for (let i = 0; i < ammRewardsContractEventsArray.length; i++) { + const log = ammRewardsContractEventsArray[i] + if (Number(log.args?.pid) > 0) continue + // query user info mapping from ammRewardsContract + + const user = await ammRewardsContract.userInfo(0, log.args?.user); + if (Number(formatUnits(user.amount, 18)) == 0) continue + // console.log('user', formatUnits(user.amount, 18)); + userInfo.push({ + pid: Number(log.args?.pid), + user: log.args?.user, + amount: formatUnits(user.amount, 18), + rewardDebt: formatUnits(user.rewardDebt, 18) + }) + } + + console.log('LP with HLP-XSGD-USDC Balance:', userInfo); + console.log('LP with HLP-XSGD-USDC Balance count', userInfo.length); + console.log('Deposit Event Count', ammRewardsContractEventsArray.length); + +} diff --git a/yarn.lock b/yarn.lock index e056dd5..fd187d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -558,6 +558,257 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" +"@firebase/analytics-types@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508" + integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA== + +"@firebase/analytics@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.0.tgz#49f508d3f9f419f08c503f1171ef5fa1c3ba52eb" + integrity sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw== + dependencies: + "@firebase/analytics-types" "0.4.0" + "@firebase/component" "0.1.19" + "@firebase/installations" "0.4.17" + "@firebase/logger" "0.2.6" + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/app-types@0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.1.tgz#dcbd23030a71c0c74fc95d4a3f75ba81653850e9" + integrity sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg== + +"@firebase/app@0.6.11": + version "0.6.11" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.11.tgz#f73f9e4571ba62f4029d8f9c9880a97e5a94eb1d" + integrity sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA== + dependencies: + "@firebase/app-types" "0.6.1" + "@firebase/component" "0.1.19" + "@firebase/logger" "0.2.6" + "@firebase/util" "0.3.2" + dom-storage "2.1.0" + tslib "^1.11.1" + xmlhttprequest "1.8.0" + +"@firebase/auth-interop-types@0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557" + integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw== + +"@firebase/auth-types@0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.1.tgz#7815e71c9c6f072034415524b29ca8f1d1770660" + integrity sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw== + +"@firebase/auth@0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.15.0.tgz#45d6def6d6d9444432c005710df442991828275f" + integrity sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ== + dependencies: + "@firebase/auth-types" "0.10.1" + +"@firebase/component@0.1.19": + version "0.1.19" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.19.tgz#bd2ac601652c22576b574c08c40da245933dbac7" + integrity sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ== + dependencies: + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/database-types@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.5.2.tgz#23bec8477f84f519727f165c687761e29958b63c" + integrity sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g== + dependencies: + "@firebase/app-types" "0.6.1" + +"@firebase/database@0.6.13": + version "0.6.13" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.6.13.tgz#b96fe0c53757dd6404ee085fdcb45c0f9f525c17" + integrity sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA== + dependencies: + "@firebase/auth-interop-types" "0.1.5" + "@firebase/component" "0.1.19" + "@firebase/database-types" "0.5.2" + "@firebase/logger" "0.2.6" + "@firebase/util" "0.3.2" + faye-websocket "0.11.3" + tslib "^1.11.1" + +"@firebase/firestore-types@1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-1.14.0.tgz#4516249d3c181849fd3c856831944dbd5c8c55fc" + integrity sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw== + +"@firebase/firestore@1.18.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-1.18.0.tgz#3430e8c60d3e6be1d174b3a258838b1944c93a4d" + integrity sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/firestore-types" "1.14.0" + "@firebase/logger" "0.2.6" + "@firebase/util" "0.3.2" + "@firebase/webchannel-wrapper" "0.4.0" + "@grpc/grpc-js" "^1.0.0" + "@grpc/proto-loader" "^0.5.0" + node-fetch "2.6.1" + tslib "^1.11.1" + +"@firebase/functions-types@0.3.17": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.3.17.tgz#348bf5528b238eeeeeae1d52e8ca547b21d33a94" + integrity sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ== + +"@firebase/functions@0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.5.1.tgz#fa0568bdcdf7dfa7e5f4f66c1e06e376dc7e25b6" + integrity sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/functions-types" "0.3.17" + "@firebase/messaging-types" "0.5.0" + node-fetch "2.6.1" + tslib "^1.11.1" + +"@firebase/installations-types@0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2" + integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q== + +"@firebase/installations@0.4.17": + version "0.4.17" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.17.tgz#1367b721e2c6c4880646bbc4f257e8616986a004" + integrity sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/installations-types" "0.3.4" + "@firebase/util" "0.3.2" + idb "3.0.2" + tslib "^1.11.1" + +"@firebase/logger@0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989" + integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw== + +"@firebase/messaging-types@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4" + integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg== + +"@firebase/messaging@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.1.tgz#debbe7eb17c5b789231da6c166c506e19ecf1ed4" + integrity sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/installations" "0.4.17" + "@firebase/messaging-types" "0.5.0" + "@firebase/util" "0.3.2" + idb "3.0.2" + tslib "^1.11.1" + +"@firebase/performance-types@0.0.13": + version "0.0.13" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6" + integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA== + +"@firebase/performance@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.2.tgz#d5f134674b429d095ce0edfb50fcb4ab279c3cbe" + integrity sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/installations" "0.4.17" + "@firebase/logger" "0.2.6" + "@firebase/performance-types" "0.0.13" + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/polyfill@0.3.36": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145" + integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg== + dependencies: + core-js "3.6.5" + promise-polyfill "8.1.3" + whatwg-fetch "2.0.4" + +"@firebase/remote-config-types@0.1.9": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965" + integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA== + +"@firebase/remote-config@0.1.28": + version "0.1.28" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.28.tgz#1c39916446f1ed82b4c07e556455bd232fcfd8e1" + integrity sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/installations" "0.4.17" + "@firebase/logger" "0.2.6" + "@firebase/remote-config-types" "0.1.9" + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/storage-types@0.3.13": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.13.tgz#cd43e939a2ab5742e109eb639a313673a48b5458" + integrity sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog== + +"@firebase/storage@0.3.43": + version "0.3.43" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.3.43.tgz#107fb5db2eff2561b5c4e35ee4cbff48f28c7e77" + integrity sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/storage-types" "0.3.13" + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/util@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.3.2.tgz#87de27f9cffc2324651cabf6ec133d0a9eb21b52" + integrity sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g== + dependencies: + tslib "^1.11.1" + +"@firebase/webchannel-wrapper@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz#becce788818d3f47f0ac1a74c3c061ac1dcf4f6d" + integrity sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ== + +"@grpc/grpc-js@^1.0.0": + version "1.6.7" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.6.7.tgz#4c4fa998ff719fe859ac19fe977fdef097bb99aa" + integrity sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw== + dependencies: + "@grpc/proto-loader" "^0.6.4" + "@types/node" ">=12.12.47" + +"@grpc/proto-loader@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.6.tgz#1dea4b8a6412b05e2d58514d507137b63a52a98d" + integrity sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ== + dependencies: + lodash.camelcase "^4.3.0" + protobufjs "^6.8.6" + +"@grpc/proto-loader@^0.6.4": + version "0.6.13" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" + integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== + dependencies: + "@types/long" "^4.0.1" + lodash.camelcase "^4.3.0" + long "^4.0.0" + protobufjs "^6.11.3" + yargs "^16.2.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -634,6 +885,59 @@ web3 "^1.2.5" web3-utils "^1.2.5" +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + "@resolver-engine/core@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" @@ -993,6 +1297,11 @@ "@types/level-errors" "*" "@types/node" "*" +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" @@ -1028,6 +1337,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.2.tgz#5764ca9aa94470adb4e1185fe2e9f19458992b2e" integrity sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ== +"@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== + "@types/node@^10.0.3": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -1325,7 +1639,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -2758,6 +3072,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" @@ -2939,6 +3262,11 @@ core-js-pure@^3.0.1: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.1.tgz#097d34d24484be45cea700a448d1e74622646c80" integrity sha512-kmW/k8MaSuqpvA1xm2l3TVlBuvW+XBkcaOroFUpO3D4lsTGQWBTb/tBDCf/PNkkPLrwgrkQRIYNPB0CeqGJWGQ== +core-js@3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" @@ -3321,6 +3649,11 @@ dom-serializer@^1.0.1, dom-serializer@^1.3.2: domhandler "^4.2.0" entities "^2.0.0" +dom-storage@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39" + integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q== + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" @@ -3421,6 +3754,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -3607,6 +3945,11 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4264,6 +4607,11 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +export-to-csv@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/export-to-csv/-/export-to-csv-0.2.1.tgz#8f997156feebc1cf995096da16341aa0100cce4e" + integrity sha512-KTbrd3CAZ0cFceJEZr1e5uiMasabeCpXq1/5uvVxDl53o4jXJHnltasQoj2NkzrxD8hU9kdwjnMhoir/7nNx/A== + express@^4.14.0: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -4403,6 +4751,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +faye-websocket@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + fetch-ponyfill@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" @@ -4498,6 +4853,26 @@ find-yarn-workspace-root@^2.0.0: dependencies: micromatch "^4.0.2" +firebase@^7.24.0: + version "7.24.0" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.24.0.tgz#dab53b9c0f1c9538d2d6f4f51769897b0b6d60d8" + integrity sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA== + dependencies: + "@firebase/analytics" "0.6.0" + "@firebase/app" "0.6.11" + "@firebase/app-types" "0.6.1" + "@firebase/auth" "0.15.0" + "@firebase/database" "0.6.13" + "@firebase/firestore" "1.18.0" + "@firebase/functions" "0.5.1" + "@firebase/installations" "0.4.17" + "@firebase/messaging" "0.7.1" + "@firebase/performance" "0.4.2" + "@firebase/polyfill" "0.3.36" + "@firebase/remote-config" "0.1.28" + "@firebase/storage" "0.3.43" + "@firebase/util" "0.3.2" + flat@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" @@ -4725,7 +5100,7 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -5260,6 +5635,11 @@ http-https@^1.0.0: resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + http-response-object@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" @@ -5303,6 +5683,11 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +idb@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384" + integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw== + idna-uts46-hx@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" @@ -5574,6 +5959,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-function@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" @@ -6297,6 +6687,11 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6: resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -6352,6 +6747,11 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -7619,6 +8019,11 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +promise-polyfill@8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" + integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== + promise-to-callback@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" @@ -7634,6 +8039,25 @@ promise@^8.0.0: dependencies: asap "~2.0.6" +protobufjs@^6.11.3, protobufjs@^6.8.6: + version "6.11.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" + integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + proxy-addr@~2.0.5: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -8221,7 +8645,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -8811,6 +9235,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string.prototype.trim@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd" @@ -8876,7 +9309,7 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -9236,7 +9669,7 @@ ts-node@^9.1.1: source-map-support "^0.5.17" yn "3.1.1" -tslib@^1.9.3: +tslib@^1.11.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -10426,6 +10859,20 @@ webpack@^3.0.0: webpack-sources "^1.0.1" yargs "^8.0.2" +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + websocket@1.0.32: version "1.0.32" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" @@ -10552,6 +10999,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -10647,6 +11103,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yaeti@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" @@ -10683,6 +11144,11 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" @@ -10732,6 +11198,19 @@ yargs@13.3.2, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0"