From ba41d0be23497d4fdf1b57f4457ad9d096160270 Mon Sep 17 00:00:00 2001 From: Anson Date: Mon, 24 Jun 2024 16:06:08 +0100 Subject: [PATCH 01/72] test: add RestClient endpoint tests --- requests/get-status-:requestId.http | 5 +++++ requests/mint-next-and-add-auth-methods.http | 14 ++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 requests/get-status-:requestId.http create mode 100644 requests/mint-next-and-add-auth-methods.http diff --git a/requests/get-status-:requestId.http b/requests/get-status-:requestId.http new file mode 100644 index 0000000..d617ea0 --- /dev/null +++ b/requests/get-status-:requestId.http @@ -0,0 +1,5 @@ +# Poll status of minting PKP transaction +# GET /auth/status/:requestId + +GET http://127.0.0.1:6380/auth/status/0xeff5cf00752705bf9ff8af007dd4cd9fd6568a1623d97cd1d9a7b12a4938ef5f +api-key: your-api-key-value diff --git a/requests/mint-next-and-add-auth-methods.http b/requests/mint-next-and-add-auth-methods.http new file mode 100644 index 0000000..38cde38 --- /dev/null +++ b/requests/mint-next-and-add-auth-methods.http @@ -0,0 +1,14 @@ +POST http://127.0.0.1:6380/api/v2/mint-next-and-add-auth-methods +Content-Type: application/json +api-key: your-api-key-value + +{ + "keyType": 2, + "permittedAuthMethodTypes": [2], + "permittedAuthMethodIds": ["ENTER YOUR AUTH METHOD ID HERE"], + "permittedAuthMethodPubkeys": ["0x"], + "permittedAuthMethodScopes": [[1]], + "addPkpEthAddressAsPermittedAddress": true, + "sendPkpToItself": true +} + From 722b26ad00d6447c1b8b8d36171d2f23345c22ee Mon Sep 17 00:00:00 2001 From: Anson Date: Mon, 24 Jun 2024 16:07:04 +0100 Subject: [PATCH 02/72] feat: add new `v2` endpoint for `mintNextAndAddAuthMethodsHandler` --- index.ts | 3 ++ lit.ts | 86 +++++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 75 insertions(+), 14 deletions(-) diff --git a/index.ts b/index.ts index 708c09a..4727691 100644 --- a/index.ts +++ b/index.ts @@ -216,6 +216,9 @@ app.post("/store-condition", storeConditionHandler); // --- Mint PKP for authorized account app.post("/mint-next-and-add-auth-methods", mintNextAndAddAuthMethodsHandler); +// -- (V2) Mint PKP for authorized account (using ThirdWeb) +app.post("/api/v2/mint-next-and-add-auth-methods", mintNextAndAddAuthMethodsHandler); + // --- Fetch PKPs tied to authorized account app.post("/fetch-pkps-by-auth-method", fetchPKPsHandler); diff --git a/lit.ts b/lit.ts index 1309221..35088af 100644 --- a/lit.ts +++ b/lit.ts @@ -8,6 +8,8 @@ import { Sequencer } from "./lib/sequencer"; import { parseEther } from "ethers/lib/utils"; import { LitNodeClientNodeJs } from "@lit-protocol/lit-node-client-nodejs"; import { CapacityToken } from "lit"; +import { VersionStrategy } from "./routes/versionStrategy"; +import { ThirdWebLib } from "./lib/thirdweb/ThirdWebLib"; const MANZANO_CONTRACT_ADDRESSES = 'https://lit-general-worker.getlit.dev/manzano-contract-addresses'; const HABANERO_CONTRACT_ADDRESSES = 'https://lit-general-worker.getlit.dev/habanero-contract-addresses'; @@ -238,6 +240,7 @@ export async function mintPKPV2({ permittedAuthMethodScopes, addPkpEthAddressAsPermittedAddress, sendPkpToItself, + versionStrategy, }: { keyType: string; permittedAuthMethodTypes: string[]; @@ -246,6 +249,7 @@ export async function mintPKPV2({ permittedAuthMethodScopes: string[][]; addPkpEthAddressAsPermittedAddress: boolean; sendPkpToItself: boolean; + versionStrategy?: VersionStrategy, }): Promise { console.log( "In mintPKPV2", @@ -260,23 +264,77 @@ export async function mintPKPV2({ console.log('config.network:', config.network); + // -- contracts to be used const pkpHelper = await getPkpHelperContract(); const pkpNft = await getPkpNftContract(); + + // -- contract functions to be called + const pkpNftFunctions = { + mintCost: 'mintCost', + } - // first get mint cost - const mintCost = await pkpNft.mintCost(); - const tx = await pkpHelper.mintNextAndAddAuthMethods( - keyType, - permittedAuthMethodTypes, - permittedAuthMethodIds, - permittedAuthMethodPubkeys, - permittedAuthMethodScopes, - addPkpEthAddressAsPermittedAddress, - sendPkpToItself, - { value: mintCost }, - ); - console.log("tx", tx); - return tx; + const pkpHelperFunctions = { + mintNextAndAddAuthMethods: 'mintNextAndAddAuthMethods', + } + + // version strategy is required + if(!versionStrategy){ + throw new Error("versionStrategy is required"); + } + + // must contain the value in the VersionStrategy enum + if(!Object.values(VersionStrategy).includes(versionStrategy)){ + throw new Error(`Invalid version strategy. Must be one of: ${Object.values(VersionStrategy).join(", ")}`); + } + + if(versionStrategy === VersionStrategy.DEFAULT){ + // first get mint cost + const mintCost = await pkpNft[pkpNftFunctions.mintCost](); + + const tx = await pkpHelper[pkpHelperFunctions.mintNextAndAddAuthMethods]( + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + { value: mintCost }, + ); + console.log("tx", tx); + return tx; + } + + if(versionStrategy === VersionStrategy.FORWARD_TO_THIRDWEB){ + + const mintCost = await ThirdWebLib.Contract.read({ + contractAddress: pkpNft.address, + functionName: pkpNftFunctions.mintCost, + }); + + console.log("mintCost", mintCost); + + const res = await ThirdWebLib.Contract.write({ + contractAddress: pkpHelper.address, + functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, + args: [ + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + ], + backendWalletAddress: "0x05Dffce4D37ffEeb758b01fE3d1f0468a78fD58D", + }); + + console.log(res); + + return res as any; + } + + throw new Error("Invalid version strategy"); } export async function mintPKP({ From 09ecfceeea51ae0a18b44970c12a0c9a807f7c6e Mon Sep 17 00:00:00 2001 From: Anson Date: Mon, 24 Jun 2024 16:07:42 +0100 Subject: [PATCH 03/72] feat: introduced `VersionStrategy` to run different logic based on the provided URL. --- routes/VersionStrategy.ts | 32 ++++++++++++++++++++++++++++++++ routes/auth/mintAndFetch.ts | 13 ++++++++++--- 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 routes/VersionStrategy.ts diff --git a/routes/VersionStrategy.ts b/routes/VersionStrategy.ts new file mode 100644 index 0000000..87be79c --- /dev/null +++ b/routes/VersionStrategy.ts @@ -0,0 +1,32 @@ +/** + * Enum representing the version strategy for the relay server. + */ +export enum VersionStrategy { + /** + * The default version strategy. Use the relay server to process the request. + */ + DEFAULT = "default", + + /** + * Forward the request to ThirdWeb for processing. + */ + FORWARD_TO_THIRDWEB = "thirdweb", +} + +/** + * Determines the version strategy based on the provided URL. + * @param url - The URL to check for the version. + * @returns The version strategy based on the URL. + */ +export function getVersionStrategy(url: string): VersionStrategy { + const versionRegex = /\/api\/v(\d+)\//; + const match = url.match(versionRegex); + const version = match ? parseInt(match[1], 10) : null; + + switch (version) { + case 2: + return VersionStrategy.FORWARD_TO_THIRDWEB; + default: + return VersionStrategy.DEFAULT; + } +} diff --git a/routes/auth/mintAndFetch.ts b/routes/auth/mintAndFetch.ts index f765e6c..9f0219a 100644 --- a/routes/auth/mintAndFetch.ts +++ b/routes/auth/mintAndFetch.ts @@ -8,6 +8,7 @@ import { MintNextAndAddAuthMethodsRequest, MintNextAndAddAuthMethodsResponse, } from "../../models"; +import { getVersionStrategy } from "../versionStrategy"; export async function mintNextAndAddAuthMethodsHandler( req: Request< @@ -23,9 +24,15 @@ export async function mintNextAndAddAuthMethodsHandler( number >, ) { + const versionStrategy = getVersionStrategy(req.url); + // mint PKP for user try { - const mintTx = await mintPKPV2(req.body); + const mintTx = await mintPKPV2({ + ...req.body, + versionStrategy, + }); + console.info("Minted PKP", { requestId: mintTx.hash, }); @@ -33,11 +40,11 @@ export async function mintNextAndAddAuthMethodsHandler( requestId: mintTx.hash, }); } catch (err) { - console.error("Unable to mint PKP", { + console.error("[mintNextAndAddAuthMethodsHandler] Unable to mint PKP", { err, }); return res.status(500).json({ - error: `Unable to mint PKP`, + error: `[mintNextAndAddAuthMethodsHandler] Unable to mint PKP ${err}`, }); } } From 4e05cfc3e28086c2a9c9c2660c665a0e1039a506 Mon Sep 17 00:00:00 2001 From: Anson Date: Mon, 24 Jun 2024 16:08:06 +0100 Subject: [PATCH 04/72] feat: add `ThirdWeb` lib --- lib/thirdweb/ThirdWebLib.spec.ts | 135 +++++++++++++ lib/thirdweb/ThirdWebLib.ts | 325 +++++++++++++++++++++++++++++++ 2 files changed, 460 insertions(+) create mode 100644 lib/thirdweb/ThirdWebLib.spec.ts create mode 100644 lib/thirdweb/ThirdWebLib.ts diff --git a/lib/thirdweb/ThirdWebLib.spec.ts b/lib/thirdweb/ThirdWebLib.spec.ts new file mode 100644 index 0000000..face900 --- /dev/null +++ b/lib/thirdweb/ThirdWebLib.spec.ts @@ -0,0 +1,135 @@ +import { expect, test } from "bun:test"; +import { ThirdWebLib } from "./ThirdWebLib"; +import { ethers } from "ethers"; + +// bun test --test-name-pattern 'getAllWallets' +test("getAllWallets", async () => { + const wallets = await ThirdWebLib.Action.getAllWallets({ limit: 500 }); + console.log("total wallets:", wallets.length); + + expect(wallets.length).toBeGreaterThan(0); +}); + +// bun test --test-name-pattern 'createWallet' +test("createWallet", async () => { + const res = await ThirdWebLib.Action.createWallet("test-wallet"); + console.log(res); + + expect(res).toHaveProperty("walletAddress"); + expect(res.status).toBe("success"); +}); + +// bun test --test-name-pattern 'create 500 wallets' --timeout 300000 +test("create 500 wallets", async () => { + const totalWallets = 500; + const currentTotalWallets = await ThirdWebLib.Action.getAllWallets(); + + const neededWallets = totalWallets - currentTotalWallets.length; + console.log("neededWallets:", neededWallets); + + for (let i = 0; i < neededWallets; i++) { + const label = `wallet-${neededWallets - i}`; + const res = await ThirdWebLib.Action.createWallet(label); + console.log(`${label}:`, res); + + expect(res).toHaveProperty("walletAddress"); + expect(res.status).toBe("success"); + } +}); + +// Used this to create a master wallet address +// // bun test --test-name-pattern 'ethers generate private key' +// // 0x05Dffce4D37ffEeb758b01fE3d1f0468a78fD58D +// test("ethers generate private key", async () => { +// const privateKey = ethers.Wallet.createRandom().privateKey; +// console.log("privateKey:", privateKey); +// }); + +// bun test --test-name-pattern 'ethers check balance' +// 10 LIT = 10000000000000000000 wei +// test("ethers check balance", async () => { +// const address = "0x05Dffce4D37ffEeb758b01fE3d1f0468a78fD58D"; +// const rpc = "https://chain-rpc.litprotocol.com/http"; +// const provider = new ethers.providers.JsonRpcProvider(rpc); +// const balance = await provider.getBalance(address); +// const parsedBalance = ethers.utils.formatEther(balance); +// const originalBalance = ethers.utils.parseEther(parsedBalance); +// console.log("balance:", parsedBalance); +// console.log("balance in wei:", balance.toString()); +// console.log("originalBalance:", originalBalance.toString()); + +// expect(balance.toString()).toBe(originalBalance.toString()); +// }); + +// bun test --test-name-pattern 'maintainBalances' --timeout 300000 +test("maintainBalances", async () => { + // -- config + const masterAddress = process.env.MASTER_WALLET_ADDRESS as string; + if (!masterAddress) { + throw new Error("MASTER_WALLET_ADDRESS is not set"); + } + + const queueIds = await ThirdWebLib.Action.maintainBalances({ + minimumBalance: "0.001", + funderAddress: masterAddress, + }); + + const funded = queueIds.filter((q) => q.queueId === ""); + const funding = 500 - funded.length; + console.log("funded:", funded.length); + console.log("funding:", funding); +}); + +// bun test --test-name-pattern 'get all transactions' +test("get all transactions", async () => { + const queuedTxs = await ThirdWebLib.Action.getAllTransactions(); + const totalTxs = queuedTxs.length; + const totalQueueingTxs = queuedTxs.filter( + (tx: any) => tx.status === "queued", + ).length; + console.log("totalTxs:", totalTxs); + console.log("totalQueueingTxs:", totalQueueingTxs); +}); + +// bun test --test-name-pattern 'get balances' --timeout 300000 +test("get balances", async () => { + const wallets = await ThirdWebLib.Action.getAllWallets({ + limit: 500, + }); + + const balancePromises = wallets.map((wallet) => { + return ThirdWebLib.Action.getBalance(wallet.address); + }); + + const balances = await Promise.all(balancePromises); + + // check how many wallets have a balance of 0 + const zeroBalances = balances.filter((balance) => { + return parseInt(balance.value) <= 0; + }).length; + + const greaterThanZeroBalances = balances.filter((balance) => { + return parseInt(balance.value) > 0; + }); + + console.log("zeroBalances:", zeroBalances); + console.log("greaterThanZeroBalances:", greaterThanZeroBalances.length); +}); + +// bun test --test-name-pattern 'read contract' --timeout 300000 +test("read contract", async () => { + const read = await ThirdWebLib.Fetch.get( + "/contract/lit-protocol/0x3c3ad2d238757Ea4AF87A8624c716B11455c1F9A/read?functionName=mintCost", + ); + + console.log("read:", read); +}); + +// bun test --test-name-pattern 'read lit' --timeout 300000 +test("read lit", async () => { + const read = await ThirdWebLib.Fetch.get( + "/contract/lit-protocol", + ); + + console.log("read:", read); +}); diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts new file mode 100644 index 0000000..ee4af8b --- /dev/null +++ b/lib/thirdweb/ThirdWebLib.ts @@ -0,0 +1,325 @@ +import { ethers } from "ethers"; + +// -- thirdweb config +const THIRDWEB_ENGINE_URL = process.env.THIRDWEB_ENGINE_URL; +const THIRDWEB_ACCESS_TOKEN = process.env.THIRDWEB_ACCESS_TOKEN; +const AUTH_HEADERS = { + authorization: `Bearer ${THIRDWEB_ACCESS_TOKEN}`, +}; + +// -- chain config +const LIT_CHAIN_ID = 175177; +const LIT_SLUG = "lit-protocol"; + +export namespace ThirdWebLib { + export namespace Fetch { + /** + * Fetches data from the specified path using a GET request. + * @param path - The path to fetch data from. + * @returns A Promise that resolves to the fetched data. + */ + export async function get(path: string) { + const res = await ( + await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { + headers: AUTH_HEADERS, + }) + ) + .json() + .catch((err) => { + console.error("Error fetching chain:", err); + }); + + return res.result; + } + + /** + * Fetches data from the server using the POST method. + * + * @param path - The path of the API endpoint. + * @param body - The request body. + * @param extraHeaders - Additional headers to be included in the request. + * @returns A Promise that resolves to the response data from the server. + */ + export async function post(path: string, body: any, extraHeaders = {}) { + const res = await ( + await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { + method: "POST", + headers: { + "Content-Type": "application/json", + ...AUTH_HEADERS, + ...extraHeaders, + }, + body: JSON.stringify(body), + }) + ) + .json() + .catch((err) => { + console.error("Error fetching chain:", err); + }); + + return res; + } + } + + /** + * Action is an abstraction of using the ThirdWeb API endpoints. + */ + export namespace Action { + /** + * Retrieves all wallets from the backend server. + * @returns A promise that resolves to an array of wallet objects. + * Each wallet object contains the address, type, and label (if available). + * @throws If there is an error fetching the wallets from the backend server. + */ + export async function getAllWallets( + { + limit, + }: { + limit: number; + } = { limit: 1000 }, + ): Promise< + { + address: string; + type: "local"; + label: string | null; + }[] + > { + try { + const wallets = await Fetch.get( + `/backend-wallet/get-all?page=1&limit=${limit}`, + ); + return wallets; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error fetching wallets:", e); + } + } + + /** + * Creates a wallet with the specified name. + * @param name - The name of the wallet. + * @returns A promise that resolves to an object containing the wallet address and status. + * @throws If there is an error creating the wallet. + */ + export async function createWallet(name: string): Promise<{ + walletAddress: string; + status: "success" | "error"; + }> { + try { + const res = await ThirdWebLib.Fetch.post( + "/backend-wallet/create", + { + label: name, + }, + ); + + return res.result; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error creating wallet:", e); + } + } + + /** + * Retrieves the balance of a wallet address. + * @param address - The wallet address to retrieve the balance for. + * @returns A promise that resolves to an object containing the wallet address, name, symbol, decimals, value, and displayValue. + * @throws If there is an error retrieving the balance. + */ + export async function getBalance(address: string): Promise<{ + walletAddress: string; + name: "LitProtocol"; + symbol: "LIT"; + decimals: 18; + value: string; + displayValue: string; + }> { + try { + const balance = await Fetch.get( + `/backend-wallet/${LIT_SLUG}/${address}/get-balance`, + ); + return balance; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error getting balance:", e); + } + } + + /** + * Funds a wallet by sending a transaction from one address to another. + * @param funder - The address of the funder. + * @param fundee - The address of the fundee. + * @param amount - The amount to be funded. + * @returns A promise that resolves to an object containing the queue ID of the transaction. + * @throws If there is an error while funding the wallet. + */ + export async function fundWallet({ + funder, + fundee, + amount, + }: { + funder: string; + fundee: string; + amount: string; + }): Promise<{ queueId: string }> { + try { + const res = await ThirdWebLib.Fetch.post( + `/backend-wallet/${LIT_SLUG}/send-transaction`, + { + toAddress: fundee, + data: "0x", + value: amount, + }, + { + "x-backend-wallet-address": funder, + }, + ); + + return { + queueId: res.result.queueId, + }; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error funding wallet:", e); + } + } + + /** + * Maintains balances of wallets by funding them if their balance is below a minimum threshold. + * @param {Object} options - The options for maintaining balances. + * @param {string} options.funderAddress - The address of the funder. + * @param {string} options.minimumBalance - The minimum balance threshold. + * @param {number} [options.maxWallets] - The maximum number of wallets to consider. + * @returns {Promise>} - A promise that resolves to an array of funding promises. + */ + export async function maintainBalances({ + minimumBalance, + funderAddress, + maxWallets, + }: { + funderAddress: string; + minimumBalance: string; + maxWallets?: number; + }): Promise<{ queueId: string }[]> { + const wallets = await ThirdWebLib.Action.getAllWallets({ + limit: maxWallets || 500, + }); + + // -- get all balances + const balancePromises = wallets.map((wallet) => { + return ThirdWebLib.Action.getBalance(wallet.address); + }); + + const balances = await Promise.all(balancePromises); + + // -- get all funding promises + const fundPromises = balances.map((balance, i) => { + const currentBalance = ethers.utils.parseEther(balance.value); + const diff = ethers.utils + .parseEther(minimumBalance) + .sub(currentBalance); + + if (diff.gt(0)) { + const diffInWei = diff.toString(); + + return ThirdWebLib.Action.fundWallet({ + funder: funderAddress, + fundee: balance.walletAddress, + amount: diffInWei, + }); + } else { + console.log( + `[${i}]: no need to fund ${balance.walletAddress}`, + ); + return Promise.resolve({ queueId: "" }); + } + }); + + // queue all funding promises + return await Promise.all(fundPromises); + } + + export async function getAllTransactions() { + try { + const data = await Fetch.get( + `/transaction/get-all?limit=10000`, + ); + return data.transactions; + } catch (e: any) { + throw new Error( + "[ThirdWebLib] Error fetching transactions:", + e, + ); + } + } + } + + export namespace Contract { + + export async function lit(){ + try{ + const res = await ThirdWebLib.Fetch.get( + `/contract/${LIT_SLUG}`, + ); + return res; + }catch(e: any){ + throw new Error("[ThirdWebLib] Error reading contract:", e); + } + } + + export async function read({ + contractAddress, + functionName, + }: { + contractAddress: string; + functionName: string; + }) { + try { + const res = await ThirdWebLib.Fetch.get( + `/contract/${LIT_SLUG}/${contractAddress}/read?functionName=${functionName}`, + ); + + return res; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error reading contract:", e); + } + } + + export async function write({ + contractAddress, + functionName, + args, + backendWalletAddress, + options, + }: { + contractAddress: string; + functionName: string; + args: any[]; + backendWalletAddress: string; + options?: { + simulateTx?: boolean; + }; + }) { + try { + const res = await ThirdWebLib.Fetch.post( + `/contract/${LIT_SLUG}/${contractAddress}/write?chain`, + { + functionName, + args, + // args: [ + // "string", + // ["string", "string"], + // {}, + // ["string"], + // "string", + // ], + }, + { + "x-backend-wallet-address": backendWalletAddress, + }, + ); + + return res; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error writing contract:", e); + } + } + + } +} From 032154b56b66ba1a80fe916067c0b6db8b624466 Mon Sep 17 00:00:00 2001 From: Anson Date: Tue, 25 Jun 2024 16:34:46 +0100 Subject: [PATCH 05/72] wip: adding a request id source to the response. Did it get processed by the relayer or from ThirdWeb? --- lib/thirdweb/ThirdWebLib.ts | 7 ------- lit.ts | 19 ++++++++++++++++--- routes/auth/mintAndFetch.ts | 6 ++++++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index ee4af8b..9cfe711 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -302,13 +302,6 @@ export namespace ThirdWebLib { { functionName, args, - // args: [ - // "string", - // ["string", "string"], - // {}, - // ["string"], - // "string", - // ], }, { "x-backend-wallet-address": backendWalletAddress, diff --git a/lit.ts b/lit.ts index 35088af..f77c20e 100644 --- a/lit.ts +++ b/lit.ts @@ -301,6 +301,18 @@ export async function mintPKPV2({ sendPkpToItself, { value: mintCost }, ); + + console.log("PRINT THIS OUT TO SEE THE TX OBJECT"); + console.log( + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + { value: mintCost } + ); console.log("tx", tx); return tx; } @@ -312,8 +324,6 @@ export async function mintPKPV2({ functionName: pkpNftFunctions.mintCost, }); - console.log("mintCost", mintCost); - const res = await ThirdWebLib.Contract.write({ contractAddress: pkpHelper.address, functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, @@ -325,11 +335,14 @@ export async function mintPKPV2({ permittedAuthMethodScopes, addPkpEthAddressAsPermittedAddress, sendPkpToItself, + { + value: mintCost + } ], backendWalletAddress: "0x05Dffce4D37ffEeb758b01fE3d1f0468a78fD58D", }); - console.log(res); + console.log("res:", res); return res as any; } diff --git a/routes/auth/mintAndFetch.ts b/routes/auth/mintAndFetch.ts index 9f0219a..b16dace 100644 --- a/routes/auth/mintAndFetch.ts +++ b/routes/auth/mintAndFetch.ts @@ -33,8 +33,14 @@ export async function mintNextAndAddAuthMethodsHandler( versionStrategy, }); + console.log("mintTx:", mintTx); + + const source = mintTx.hash ? 'lit-relayer' : 'thirdweb'; + + console.info("Minted PKP", { requestId: mintTx.hash, + source, }); return res.status(200).json({ requestId: mintTx.hash, From f27391e513ffc30f60b51ad24dbda801b2d29d1c Mon Sep 17 00:00:00 2001 From: Anson Date: Tue, 25 Jun 2024 16:35:48 +0100 Subject: [PATCH 06/72] feat(test): add RestClient tests on minting --- requests/mint-next-and-add-auth-methods-v2.http | 13 +++++++++++++ requests/mint-next-and-add-auth-methods.http | 7 +++---- 2 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 requests/mint-next-and-add-auth-methods-v2.http diff --git a/requests/mint-next-and-add-auth-methods-v2.http b/requests/mint-next-and-add-auth-methods-v2.http new file mode 100644 index 0000000..c58c75b --- /dev/null +++ b/requests/mint-next-and-add-auth-methods-v2.http @@ -0,0 +1,13 @@ +POST http://127.0.0.1:6380/api/v2/mint-next-and-add-auth-methods +Content-Type: application/json +api-key: your-api-key-value + +{ + "keyType": 2, + "permittedAuthMethodTypes": [2], + "permittedAuthMethodIds": ["0x4825e3caf11a273792ad0405524820410cd15d6323ae4621537f0a89c1322a74"], + "permittedAuthMethodPubkeys": ["0x"], + "permittedAuthMethodScopes": [[1]], + "addPkpEthAddressAsPermittedAddress": true, + "sendPkpToItself": true +} \ No newline at end of file diff --git a/requests/mint-next-and-add-auth-methods.http b/requests/mint-next-and-add-auth-methods.http index 38cde38..0405e90 100644 --- a/requests/mint-next-and-add-auth-methods.http +++ b/requests/mint-next-and-add-auth-methods.http @@ -1,14 +1,13 @@ -POST http://127.0.0.1:6380/api/v2/mint-next-and-add-auth-methods +POST http://127.0.0.1:6380/mint-next-and-add-auth-methods Content-Type: application/json api-key: your-api-key-value { "keyType": 2, "permittedAuthMethodTypes": [2], - "permittedAuthMethodIds": ["ENTER YOUR AUTH METHOD ID HERE"], + "permittedAuthMethodIds": [""], "permittedAuthMethodPubkeys": ["0x"], "permittedAuthMethodScopes": [[1]], "addPkpEthAddressAsPermittedAddress": true, "sendPkpToItself": true -} - +} \ No newline at end of file From c48005d46d5c18163b3b63d1acc2e35c0f062a0c Mon Sep 17 00:00:00 2001 From: Anson Date: Tue, 25 Jun 2024 16:36:12 +0100 Subject: [PATCH 07/72] feat(package.json): add bun to devDependencies --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 63c434a..53caead 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "uint8arrays": "^3.0.0" }, "devDependencies": { + "@types/bun": "^1.1.5", "@types/cbor": "^6.0.0", "@types/cors": "^2.8.12", "@types/elliptic": "^6.4.14", From edd692455ff066b1f4806ee9bc1b28697e229eb5 Mon Sep 17 00:00:00 2001 From: Anson Date: Wed, 10 Jul 2024 19:17:51 +0100 Subject: [PATCH 08/72] chore: change file name to make it compatible to different OSs --- .../{get-status-:requestId.http => get-status-requestId.http} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename requests/{get-status-:requestId.http => get-status-requestId.http} (100%) diff --git a/requests/get-status-:requestId.http b/requests/get-status-requestId.http similarity index 100% rename from requests/get-status-:requestId.http rename to requests/get-status-requestId.http From 6eca4c32d8beae8c36f1bfcb1d5e7f12a4744fde Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Sun, 21 Jul 2024 22:47:48 +0530 Subject: [PATCH 09/72] feat: added thirdweb in mintPKP with Round Robin --- .vscode/settings.json | 44 +- index.ts | 64 +- lib/thirdweb/ThirdWebLib.spec.ts | 135 + lib/thirdweb/ThirdWebLib.ts | 324 + lit.ts | 107 +- models/index.ts | 2 + package-lock.json | 11526 ++++++++++++++++ package.json | 5 +- requests/get-status-requestId.http | 4 +- .../mint-next-and-add-auth-methods-v2.http | 13 + routes/VersionStrategy.ts | 32 + routes/auth/mintAndFetch.ts | 34 +- routes/webhook/thirdweb.ts | 50 + types/lit.ts | 9 +- utils/thirdweb/constants.ts | 12 + utils/thirdweb/roundRobin.ts | 23 + utils/thirdweb/webhook.ts | 41 + yarn.lock | 1350 +- 18 files changed, 13149 insertions(+), 626 deletions(-) create mode 100644 lib/thirdweb/ThirdWebLib.spec.ts create mode 100644 lib/thirdweb/ThirdWebLib.ts create mode 100644 package-lock.json create mode 100644 requests/mint-next-and-add-auth-methods-v2.http create mode 100644 routes/VersionStrategy.ts create mode 100644 routes/webhook/thirdweb.ts create mode 100644 utils/thirdweb/constants.ts create mode 100644 utils/thirdweb/roundRobin.ts create mode 100644 utils/thirdweb/webhook.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index b92839d..818865c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,22 +1,22 @@ -{ - "workbench.colorCustomizations": { - "activityBar.activeBackground": "#65c89b", - "activityBar.background": "#65c89b", - "activityBar.foreground": "#15202b", - "activityBar.inactiveForeground": "#15202b99", - "activityBarBadge.background": "#945bc4", - "activityBarBadge.foreground": "#e7e7e7", - "commandCenter.border": "#15202b99", - "sash.hoverBorder": "#65c89b", - "statusBar.background": "#42b883", - "statusBar.foreground": "#15202b", - "statusBarItem.hoverBackground": "#359268", - "statusBarItem.remoteBackground": "#42b883", - "statusBarItem.remoteForeground": "#15202b", - "titleBar.activeBackground": "#42b883", - "titleBar.activeForeground": "#15202b", - "titleBar.inactiveBackground": "#42b88399", - "titleBar.inactiveForeground": "#15202b99" - }, - "peacock.color": "#42b883" -} \ No newline at end of file +// { +// "workbench.colorCustomizations": { +// "activityBar.activeBackground": "#65c89b", +// "activityBar.background": "#65c89b", +// "activityBar.foreground": "#15202b", +// "activityBar.inactiveForeground": "#15202b99", +// "activityBarBadge.background": "#945bc4", +// "activityBarBadge.foreground": "#e7e7e7", +// "commandCenter.border": "#15202b99", +// "sash.hoverBorder": "#65c89b", +// "statusBar.background": "#42b883", +// "statusBar.foreground": "#15202b", +// "statusBarItem.hoverBackground": "#359268", +// "statusBarItem.remoteBackground": "#42b883", +// "statusBarItem.remoteForeground": "#15202b", +// "titleBar.activeBackground": "#42b883", +// "titleBar.activeForeground": "#15202b", +// "titleBar.inactiveBackground": "#42b88399", +// "titleBar.inactiveForeground": "#15202b99" +// }, +// "peacock.color": "#42b883" +// } \ No newline at end of file diff --git a/index.ts b/index.ts index 39dca61..f8ef077 100644 --- a/index.ts +++ b/index.ts @@ -12,6 +12,7 @@ import https from "https"; import base64url from "base64url"; import dotenv from "dotenv"; import express from "express"; +import { Server as SocketIOServer } from 'socket.io'; dotenv.config(); @@ -68,8 +69,11 @@ import { import { mintClaimedKeyId } from "./routes/auth/claim"; import { registerPayerHandler } from "./routes/delegate/register"; import { addPayeeHandler } from "./routes/delegate/user"; +import redisClient from "./lib/redisClient"; +import { thirdwebWebHookHandler } from "./routes/webhook/thirdweb"; const app = express(); +let server = http.createServer(app); const { ENABLE_CONFORMANCE, ENABLE_HTTPS, RP_ID = "localhost" } = process.env; @@ -77,7 +81,47 @@ app.use(express.static("./public/")); app.use(express.json()); app.use(cors()); +export const io = new SocketIOServer(server, { + cors: { + origin: "*", // Allow all origins, you can restrict this to your client's URL + methods: ["GET", "POST"] + } + }); +io.on('connection', (socket) => { + console.log('New client connected'); + + // Store user identifier with the socket ID in Redis + socket.on('register', async (userId) => { + try { + await redisClient.hSet("userSocketMapping", userId, socket.id); + console.log(`✅ User ${userId} connected with socket ID ${socket.id}`); + }catch(err){ + console.error('❌ Error storing user ID in Redis:', err); + } + }); + + socket.on('disconnect', async () => { + try { + const keys = await redisClient.hKeys('userSocketMapping'); + for (const key of keys) { + const socketId = await redisClient.hGet("userSocketMapping", key); + if (socketId === socket.id) { + await redisClient.hDel("userSocketMapping", key); + console.log(`🔴 User ${key} disconnected`); + break; + } + } + } catch (err) { + console.error('❌ Error handling disconnection:', err); + } + }); +}); + app.use(limiter); + +// --- thirdweb webhook +app.post("/webhook", thirdwebWebHookHandler); + app.use(apiKeyGateAndTracking); /** @@ -216,6 +260,9 @@ app.post("/store-condition", storeConditionHandler); // --- Mint PKP for authorized account app.post("/mint-next-and-add-auth-methods", mintNextAndAddAuthMethodsHandler); +// -- (V2) Mint PKP for authorized account (using ThirdWeb) +app.post("/api/v2/mint-next-and-add-auth-methods", mintNextAndAddAuthMethodsHandler); + // --- Fetch PKPs tied to authorized account app.post("/fetch-pkps-by-auth-method", fetchPKPsHandler); @@ -226,6 +273,8 @@ app.get("/auth/status/:requestId", getAuthStatusHandler); app.post("/register-payer", registerPayerHandler); app.post("/add-users", addPayeeHandler); + + // *** Deprecated *** app.post("/auth/google", googleOAuthVerifyToMintHandler); @@ -252,12 +301,11 @@ app.get( ); app.post("/auth/claim", mintClaimedKeyId); - if (ENABLE_HTTPS) { const host = "0.0.0.0"; const port = 443; - https + server = https .createServer( { /** @@ -267,15 +315,15 @@ if (ENABLE_HTTPS) { cert: fs.readFileSync(`./${rpID}.crt`), }, app, - ) - .listen(port, host, () => { - console.log(`🚀 1: Server ready at ${host}:${port}`); - }); + ); + server.listen(port, host, () => { + console.log(`🚀 1: Server ready at ${host}:${port}`); + }); } else { const host = "127.0.0.1"; const port = config.port; - - http.createServer(app).listen(port, () => { + + server.listen(port, () => { console.log(`🚀 2: Server ready at ${host}:${port} 🌶️ NETWORK: ${process.env.NETWORK} | RPC: ${process.env.LIT_TXSENDER_RPC_URL} |`); }); } diff --git a/lib/thirdweb/ThirdWebLib.spec.ts b/lib/thirdweb/ThirdWebLib.spec.ts new file mode 100644 index 0000000..face900 --- /dev/null +++ b/lib/thirdweb/ThirdWebLib.spec.ts @@ -0,0 +1,135 @@ +import { expect, test } from "bun:test"; +import { ThirdWebLib } from "./ThirdWebLib"; +import { ethers } from "ethers"; + +// bun test --test-name-pattern 'getAllWallets' +test("getAllWallets", async () => { + const wallets = await ThirdWebLib.Action.getAllWallets({ limit: 500 }); + console.log("total wallets:", wallets.length); + + expect(wallets.length).toBeGreaterThan(0); +}); + +// bun test --test-name-pattern 'createWallet' +test("createWallet", async () => { + const res = await ThirdWebLib.Action.createWallet("test-wallet"); + console.log(res); + + expect(res).toHaveProperty("walletAddress"); + expect(res.status).toBe("success"); +}); + +// bun test --test-name-pattern 'create 500 wallets' --timeout 300000 +test("create 500 wallets", async () => { + const totalWallets = 500; + const currentTotalWallets = await ThirdWebLib.Action.getAllWallets(); + + const neededWallets = totalWallets - currentTotalWallets.length; + console.log("neededWallets:", neededWallets); + + for (let i = 0; i < neededWallets; i++) { + const label = `wallet-${neededWallets - i}`; + const res = await ThirdWebLib.Action.createWallet(label); + console.log(`${label}:`, res); + + expect(res).toHaveProperty("walletAddress"); + expect(res.status).toBe("success"); + } +}); + +// Used this to create a master wallet address +// // bun test --test-name-pattern 'ethers generate private key' +// // 0x05Dffce4D37ffEeb758b01fE3d1f0468a78fD58D +// test("ethers generate private key", async () => { +// const privateKey = ethers.Wallet.createRandom().privateKey; +// console.log("privateKey:", privateKey); +// }); + +// bun test --test-name-pattern 'ethers check balance' +// 10 LIT = 10000000000000000000 wei +// test("ethers check balance", async () => { +// const address = "0x05Dffce4D37ffEeb758b01fE3d1f0468a78fD58D"; +// const rpc = "https://chain-rpc.litprotocol.com/http"; +// const provider = new ethers.providers.JsonRpcProvider(rpc); +// const balance = await provider.getBalance(address); +// const parsedBalance = ethers.utils.formatEther(balance); +// const originalBalance = ethers.utils.parseEther(parsedBalance); +// console.log("balance:", parsedBalance); +// console.log("balance in wei:", balance.toString()); +// console.log("originalBalance:", originalBalance.toString()); + +// expect(balance.toString()).toBe(originalBalance.toString()); +// }); + +// bun test --test-name-pattern 'maintainBalances' --timeout 300000 +test("maintainBalances", async () => { + // -- config + const masterAddress = process.env.MASTER_WALLET_ADDRESS as string; + if (!masterAddress) { + throw new Error("MASTER_WALLET_ADDRESS is not set"); + } + + const queueIds = await ThirdWebLib.Action.maintainBalances({ + minimumBalance: "0.001", + funderAddress: masterAddress, + }); + + const funded = queueIds.filter((q) => q.queueId === ""); + const funding = 500 - funded.length; + console.log("funded:", funded.length); + console.log("funding:", funding); +}); + +// bun test --test-name-pattern 'get all transactions' +test("get all transactions", async () => { + const queuedTxs = await ThirdWebLib.Action.getAllTransactions(); + const totalTxs = queuedTxs.length; + const totalQueueingTxs = queuedTxs.filter( + (tx: any) => tx.status === "queued", + ).length; + console.log("totalTxs:", totalTxs); + console.log("totalQueueingTxs:", totalQueueingTxs); +}); + +// bun test --test-name-pattern 'get balances' --timeout 300000 +test("get balances", async () => { + const wallets = await ThirdWebLib.Action.getAllWallets({ + limit: 500, + }); + + const balancePromises = wallets.map((wallet) => { + return ThirdWebLib.Action.getBalance(wallet.address); + }); + + const balances = await Promise.all(balancePromises); + + // check how many wallets have a balance of 0 + const zeroBalances = balances.filter((balance) => { + return parseInt(balance.value) <= 0; + }).length; + + const greaterThanZeroBalances = balances.filter((balance) => { + return parseInt(balance.value) > 0; + }); + + console.log("zeroBalances:", zeroBalances); + console.log("greaterThanZeroBalances:", greaterThanZeroBalances.length); +}); + +// bun test --test-name-pattern 'read contract' --timeout 300000 +test("read contract", async () => { + const read = await ThirdWebLib.Fetch.get( + "/contract/lit-protocol/0x3c3ad2d238757Ea4AF87A8624c716B11455c1F9A/read?functionName=mintCost", + ); + + console.log("read:", read); +}); + +// bun test --test-name-pattern 'read lit' --timeout 300000 +test("read lit", async () => { + const read = await ThirdWebLib.Fetch.get( + "/contract/lit-protocol", + ); + + console.log("read:", read); +}); diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts new file mode 100644 index 0000000..fa4c314 --- /dev/null +++ b/lib/thirdweb/ThirdWebLib.ts @@ -0,0 +1,324 @@ +import { ethers } from "ethers"; + +// -- thirdweb config +const THIRDWEB_ENGINE_URL = process.env.THIRDWEB_ENGINE_URL; +const THIRDWEB_ACCESS_TOKEN = process.env.THIRDWEB_ACCESS_TOKEN; +const AUTH_HEADERS = { + authorization: `Bearer ${THIRDWEB_ACCESS_TOKEN}`, +}; + +// -- chain config +const LIT_CHAIN_ID = 175177; +// const LIT_SLUG = "lit-protocol"; +const LIT_SLUG = "2311"; + +export namespace ThirdWebLib { + export namespace Fetch { + /** + * Fetches data from the specified path using a GET request. + * @param path - The path to fetch data from. + * @returns A Promise that resolves to the fetched data. + */ + export async function get(path: string) { + const res = await ( + await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { + headers: AUTH_HEADERS, + }) + ) + .json() + .catch((err) => { + console.error("Error fetching chain:", err); + }); + + return res.result; + } + + /** + * Fetches data from the server using the POST method. + * + * @param path - The path of the API endpoint. + * @param body - The request body. + * @param extraHeaders - Additional headers to be included in the request. + * @returns A Promise that resolves to the response data from the server. + */ + export async function post(path: string, body: any, extraHeaders = {}) { + const res = await ( + await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { + method: "POST", + headers: { + "Content-Type": "application/json", + ...AUTH_HEADERS, + ...extraHeaders, + }, + body: JSON.stringify(body), + }) + ) + .json() + .catch((err) => { + console.error("Error fetching chain:", err); + }); + + return res; + } + } + + /** + * Action is an abstraction of using the ThirdWeb API endpoints. + */ + export namespace Action { + /** + * Retrieves all wallets from the backend server. + * @returns A promise that resolves to an array of wallet objects. + * Each wallet object contains the address, type, and label (if available). + * @throws If there is an error fetching the wallets from the backend server. + */ + export async function getAllWallets( + { + limit, + }: { + limit: number; + } = { limit: 1000 }, + ): Promise< + { + address: string; + type: "local"; + label: string | null; + }[] + > { + try { + const wallets = await Fetch.get( + `/backend-wallet/get-all?page=1&limit=${limit}`, + ); + return wallets; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error fetching wallets:", e); + } + } + + /** + * Creates a wallet with the specified name. + * @param name - The name of the wallet. + * @returns A promise that resolves to an object containing the wallet address and status. + * @throws If there is an error creating the wallet. + */ + export async function createWallet(name: string): Promise<{ + walletAddress: string; + status: "success" | "error"; + }> { + try { + const res = await ThirdWebLib.Fetch.post( + "/backend-wallet/create", + { + label: name, + }, + ); + + return res.result; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error creating wallet:", e); + } + } + + /** + * Retrieves the balance of a wallet address. + * @param address - The wallet address to retrieve the balance for. + * @returns A promise that resolves to an object containing the wallet address, name, symbol, decimals, value, and displayValue. + * @throws If there is an error retrieving the balance. + */ + export async function getBalance(address: string): Promise<{ + walletAddress: string; + name: "LitProtocol"; + symbol: "LIT"; + decimals: 18; + value: string; + displayValue: string; + }> { + try { + const balance = await Fetch.get( + `/backend-wallet/${LIT_SLUG}/${address}/get-balance`, + ); + return balance; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error getting balance:", e); + } + } + + /** + * Funds a wallet by sending a transaction from one address to another. + * @param funder - The address of the funder. + * @param fundee - The address of the fundee. + * @param amount - The amount to be funded. + * @returns A promise that resolves to an object containing the queue ID of the transaction. + * @throws If there is an error while funding the wallet. + */ + export async function fundWallet({ + funder, + fundee, + amount, + }: { + funder: string; + fundee: string; + amount: string; + }): Promise<{ queueId: string }> { + try { + const res = await ThirdWebLib.Fetch.post( + `/backend-wallet/${LIT_SLUG}/send-transaction`, + { + toAddress: fundee, + data: "0x", + value: amount, + }, + { + "x-backend-wallet-address": funder, + }, + ); + + return { + queueId: res.result.queueId, + }; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error funding wallet:", e); + } + } + + /** + * Maintains balances of wallets by funding them if their balance is below a minimum threshold. + * @param {Object} options - The options for maintaining balances. + * @param {string} options.funderAddress - The address of the funder. + * @param {string} options.minimumBalance - The minimum balance threshold. + * @param {number} [options.maxWallets] - The maximum number of wallets to consider. + * @returns {Promise>} - A promise that resolves to an array of funding promises. + */ + export async function maintainBalances({ + minimumBalance, + funderAddress, + maxWallets, + }: { + funderAddress: string; + minimumBalance: string; + maxWallets?: number; + }): Promise<{ queueId: string }[]> { + const wallets = await ThirdWebLib.Action.getAllWallets({ + limit: maxWallets || 500, + }); + + // -- get all balances + const balancePromises = wallets.map((wallet) => { + return ThirdWebLib.Action.getBalance(wallet.address); + }); + + const balances = await Promise.all(balancePromises); + + // -- get all funding promises + const fundPromises = balances.map((balance, i) => { + const currentBalance = ethers.utils.parseEther(balance.value); + const diff = ethers.utils + .parseEther(minimumBalance) + .sub(currentBalance); + + if (diff.gt(0)) { + const diffInWei = diff.toString(); + + return ThirdWebLib.Action.fundWallet({ + funder: funderAddress, + fundee: balance.walletAddress, + amount: diffInWei, + }); + } else { + console.log( + `[${i}]: no need to fund ${balance.walletAddress}`, + ); + return Promise.resolve({ queueId: "" }); + } + }); + + // queue all funding promises + return await Promise.all(fundPromises); + } + + export async function getAllTransactions() { + try { + const data = await Fetch.get( + `/transaction/get-all?limit=10000`, + ); + return data.transactions; + } catch (e: any) { + throw new Error( + "[ThirdWebLib] Error fetching transactions:", + e, + ); + } + } + } + + export namespace Contract { + + export async function lit(){ + try{ + const res = await ThirdWebLib.Fetch.get( + `/contract/${LIT_SLUG}`, + ); + return res; + }catch(e: any){ + throw new Error("[ThirdWebLib] Error reading contract:", e); + } + } + + export async function read({ + contractAddress, + functionName, + }: { + contractAddress: string; + functionName: string; + }) { + try { + const res = await ThirdWebLib.Fetch.get( + `/contract/${LIT_SLUG}/${contractAddress}/read?functionName=${functionName}`, + ); + + return res; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error reading contract:", e); + } + } + + export async function write({ + contractAddress, + functionName, + args, + txOverrides, + backendWalletAddress, + options, + }: { + contractAddress: string; + functionName: string; + args: any[]; + txOverrides?:{ + value: number + } + backendWalletAddress: string; + options?: { + simulateTx?: boolean; + }; + }) { + try { + const res = await ThirdWebLib.Fetch.post( + `/contract/${LIT_SLUG}/${contractAddress}/write?chain`, + { + functionName, + args, + txOverrides + }, + { + "x-backend-wallet-address": backendWalletAddress, + }, + ); + + return res; + } catch (e: any) { + throw new Error("[ThirdWebLib] Error writing contract:", e); + } + } + + } +} diff --git a/lit.ts b/lit.ts index 9192aea..61fcc42 100644 --- a/lit.ts +++ b/lit.ts @@ -8,6 +8,14 @@ import { Sequencer } from "./lib/sequencer"; import { parseEther } from "ethers/lib/utils"; import { LitNodeClientNodeJs } from "@lit-protocol/lit-node-client-nodejs"; import { CapacityToken } from "lit"; +import { VersionStrategy } from "./routes/VersionStrategy"; +import { ThirdWebLib } from "./lib/thirdweb/ThirdWebLib"; +import {MintPKPV2} from "./types/lit"; + +import { backendWallets } from "./utils/thirdweb/constants"; +import { RoundRobin } from "./utils/thirdweb/roundRobin"; + +const rr = new RoundRobin(backendWallets); const MANZANO_CONTRACT_ADDRESSES = "https://lit-general-worker.getlit.dev/manzano-contract-addresses"; @@ -291,6 +299,7 @@ export async function mintPKPV2({ permittedAuthMethodScopes, addPkpEthAddressAsPermittedAddress, sendPkpToItself, + versionStrategy, }: { keyType: string; permittedAuthMethodTypes: string[]; @@ -299,7 +308,8 @@ export async function mintPKPV2({ permittedAuthMethodScopes: string[][]; addPkpEthAddressAsPermittedAddress: boolean; sendPkpToItself: boolean; -}): Promise { + versionStrategy?: VersionStrategy, +}): Promise { console.log( "In mintPKPV2", keyType, @@ -313,24 +323,91 @@ export async function mintPKPV2({ console.log("config.network:", config.network); + // -- contracts to be used const pkpHelper = await getPkpHelperContract(); const pkpNft = await getPkpNftContract(); + + // -- contract functions to be called + const pkpNftFunctions = { + mintCost: 'mintCost', + } - // first get mint cost - const mintCost = await pkpNft.mintCost(); + const pkpHelperFunctions = { + mintNextAndAddAuthMethods: 'mintNextAndAddAuthMethods', + } - const tx = await pkpHelper.mintNextAndAddAuthMethods( - keyType, - permittedAuthMethodTypes, - permittedAuthMethodIds, - permittedAuthMethodPubkeys, - permittedAuthMethodScopes, - addPkpEthAddressAsPermittedAddress, - sendPkpToItself, - { value: mintCost }, - ); - console.log("tx", tx); - return tx; + // version strategy is required + if(!versionStrategy){ + throw new Error("versionStrategy is required"); + } + + // must contain the value in the VersionStrategy enum + if(!Object.values(VersionStrategy).includes(versionStrategy)){ + throw new Error(`Invalid version strategy. Must be one of: ${Object.values(VersionStrategy).join(", ")}`); + } + + if(versionStrategy === VersionStrategy.DEFAULT){ + // first get mint cost + const mintCost = await pkpNft[pkpNftFunctions.mintCost](); + + const tx = await pkpHelper[pkpHelperFunctions.mintNextAndAddAuthMethods]( + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + { value: mintCost }, + ); + + console.log("PRINT THIS OUT TO SEE THE TX OBJECT"); + console.log( + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + { value: mintCost } + ); + console.log("tx", tx); + return tx; + } + + if(versionStrategy === VersionStrategy.FORWARD_TO_THIRDWEB){ + const address = await rr.next(); + const mintCost = await ThirdWebLib.Contract.read({ + contractAddress: pkpNft.address, + functionName: pkpNftFunctions.mintCost, + }); + + const res = await ThirdWebLib.Contract.write({ + contractAddress: pkpHelper.address, + functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, + args: [ + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + ], + txOverrides: { + value: mintCost + }, + // this we have to dynamic using round robin + backendWalletAddress: address, + }); + + console.log("res:", res); + + return res.result; + } + + throw new Error("Invalid version strategy"); } export async function mintPKP({ diff --git a/models/index.ts b/models/index.ts index 5409724..1918ca1 100644 --- a/models/index.ts +++ b/models/index.ts @@ -14,6 +14,7 @@ export interface OTPAuthVerifyRegistrationRequest { } export interface MintNextAndAddAuthMethodsRequest { + uuid: string; keyType: string; permittedAuthMethodTypes: string[]; permittedAuthMethodIds: string[]; @@ -45,6 +46,7 @@ export interface FetchRequest { export interface AuthMethodVerifyRegistrationResponse { requestId?: string; error?: string; + queueId?:string; } export interface AuthMethodVerifyToFetchResponse { diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0ce1267 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11526 @@ +{ + "name": "relay-server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "relay-server", + "version": "1.0.0", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "@lit-protocol/lit-node-client-nodejs": "^6.2.0", + "@simplewebauthn/server": "6.2.1", + "async-mutex": "^0.5.0", + "base64url": "^3.0.1", + "cbor": "^8.1.0", + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "elliptic": "^6.5.4", + "ethereum-cryptography": "^2.1.3", + "ethers": "~5.6.8", + "express": "^4.17.1", + "express-rate-limit": "^6.6.0", + "google-auth-library": "^8.7.0", + "js-base64": "^3.7.2", + "node-fetch": "^2.6.0", + "rate-limit-redis": "^3.0.1", + "redis": "^4.4.0", + "siwe": "^2.3.2", + "socket.io": "^4.7.5", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1", + "uint8arrays": "^3.0.0" + }, + "devDependencies": { + "@types/bun": "^1.1.5", + "@types/cbor": "^6.0.0", + "@types/cors": "^2.8.12", + "@types/elliptic": "^6.4.14", + "@types/express": "^4.17.13", + "@types/jwk-to-pem": "^2.0.1", + "@types/node": "^16.7.4", + "@types/node-fetch": "^2.5.12", + "nodemon": "^2.0.12", + "ts-node": "^10.2.1", + "typescript": "^4.4.2" + } + }, + "node_modules/@cosmjs/amino": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.30.1.tgz", + "integrity": "sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/crypto": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/utils": "^0.30.1" + } + }, + "node_modules/@cosmjs/crypto": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.30.1.tgz", + "integrity": "sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/utils": "^0.30.1", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers": "^0.7.6" + } + }, + "node_modules/@cosmjs/crypto/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@cosmjs/encoding": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.30.1.tgz", + "integrity": "sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@cosmjs/math": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.30.1.tgz", + "integrity": "sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@cosmjs/utils": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz", + "integrity": "sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==", + "license": "Apache-2.0" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.1.tgz", + "integrity": "sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.1.tgz", + "integrity": "sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz", + "integrity": "sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/json-wallets": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@lit-protocol/access-control-conditions": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/access-control-conditions/-/access-control-conditions-6.2.0.tgz", + "integrity": "sha512-hx1ORDkyxLPNrQwq0GuA4oO/53uinM6Ca3J0ZHScwhaa2tqvYZh0sLmN8Qf2jv9b+iZshugSHQP4+6hXm9HYRw==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/logger": "6.2.0", + "@lit-protocol/misc": "6.2.0", + "@lit-protocol/types": "6.2.0", + "@lit-protocol/uint8arrays": "6.2.0", + "ajv": "^8.12.0", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "tslib": "1.14.1", + "uint8arrays": "^4.0.3", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/access-control-conditions/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/access-control-conditions/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/access-control-conditions/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/access-control-conditions/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/access-control-conditions/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/access-control-conditions/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/accs-schemas": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@lit-protocol/accs-schemas/-/accs-schemas-0.0.7.tgz", + "integrity": "sha512-n8fJ6NMh2T3KgSKe0CRB0Uam6ZwxUTQV0oQXY0vEmSL+Q2a1PsM2FX42szOM+O7LgY+Bko7AiCjjDHbqQoJydg==", + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0" + } + }, + "node_modules/@lit-protocol/auth-helpers": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/auth-helpers/-/auth-helpers-6.2.0.tgz", + "integrity": "sha512-TZxc/bYAaaejUkkpX0GuMMFR7uT6TS8TjOVffuu7Ptl1VKftdRSx4Hs52XQLzzPOIiowIOPTK/3oL7l391rykw==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@lit-protocol/access-control-conditions": "6.2.0", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/logger": "6.2.0", + "@lit-protocol/misc": "6.2.0", + "@lit-protocol/types": "6.2.0", + "@lit-protocol/uint8arrays": "6.2.0", + "ajv": "^8.12.0", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "siwe-recap": "0.0.2-alpha.0", + "tslib": "2.6.0", + "uint8arrays": "^4.0.3", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/multiformats": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-11.0.2.tgz", + "integrity": "sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/siwe-recap": { + "version": "0.0.2-alpha.0", + "resolved": "https://registry.npmjs.org/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz", + "integrity": "sha512-xqFUnvrACWW/Q4s5HQ02avg8IyH2RcgkUzfvN4scYaaHErotLVtTGDZkSS0sn/oNK4MXRt83lTqredsvXgt8iA==", + "license": "MIT", + "dependencies": { + "canonicalize": "^2.0.0", + "multiformats": "^11.0.2", + "siwe": "^2.1.4" + }, + "peerDependencies": { + "ethers": "^5.5.1" + } + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "license": "0BSD" + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/auth-helpers/node_modules/uint8arrays/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/bls-sdk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/bls-sdk/-/bls-sdk-6.2.0.tgz", + "integrity": "sha512-qJG8q1coSyThL6QIuHHjAkuIp7fkIhETDUTaOEIOOSNN+ZuZ+YuFYocueHCz6SgJUcnGoooC/5KSxV9/Em5UUg==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/constants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/constants/-/constants-6.2.0.tgz", + "integrity": "sha512-jdXaM1gRCprgaEmXXQyLXwYgasWoTPyprqG1Wzc7Njri7STdX8LU70oxs+nvcT2R8ASwfy+4ysdAbbsyi9MxaA==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/types": "6.2.0", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "siwe": "^2.0.5", + "tslib": "1.14.1" + } + }, + "node_modules/@lit-protocol/constants/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/constants/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/constants/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/constants/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/contracts-sdk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/contracts-sdk/-/contracts-sdk-6.2.0.tgz", + "integrity": "sha512-mtW2msaoWW5QSbC9wOE09mxc5zfGiulE+gA4IFVOQNA7RBzFWub/AxlKMLYlB0t3mlW4gvJ/vmEy+3qOy8nZkA==", + "license": "MIT", + "dependencies": { + "@cosmjs/amino": "0.30.1", + "@cosmjs/crypto": "0.30.1", + "@cosmjs/encoding": "0.30.1", + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/logger": "6.2.0", + "@lit-protocol/misc": "6.2.0", + "@lit-protocol/types": "6.2.0", + "ajv": "^8.12.0", + "bitcoinjs-lib": "^6.1.0", + "ethers": "^5.7.1", + "jose": "^4.14.4", + "jszip": "^3.10.1", + "process": "0.11.10", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "tslib": "1.14.1", + "uint8arrays": "^4.0.3", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/contracts-sdk/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/contracts-sdk/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/contracts-sdk/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/contracts-sdk/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/contracts-sdk/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/contracts-sdk/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/core/-/core-6.2.0.tgz", + "integrity": "sha512-kxklPOJYEcoacFBgvr5Cycy7eknB0kO1tp/75oRq3PwBJIwVX4Wx8qL0DGh+sxSa6Ayck1Nvf4yFJaF1XjTvYA==", + "license": "MIT", + "dependencies": { + "@cosmjs/amino": "0.30.1", + "@cosmjs/crypto": "0.30.1", + "@cosmjs/encoding": "0.30.1", + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@lit-protocol/access-control-conditions": "6.2.0", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/bls-sdk": "6.2.0", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/contracts-sdk": "6.2.0", + "@lit-protocol/crypto": "6.2.0", + "@lit-protocol/ecdsa-sdk": "6.2.0", + "@lit-protocol/logger": "6.2.0", + "@lit-protocol/misc": "6.2.0", + "@lit-protocol/nacl": "6.2.0", + "@lit-protocol/sev-snp-utils-sdk": "6.2.0", + "@lit-protocol/types": "6.2.0", + "@lit-protocol/uint8arrays": "6.2.0", + "ajv": "^8.12.0", + "bitcoinjs-lib": "^6.1.0", + "bs58": "^5.0.0", + "cross-fetch": "3.1.4", + "date-and-time": "^2.4.1", + "ethers": "^5.7.1", + "jose": "^4.14.4", + "jszip": "^3.10.1", + "multiformats": "^9.7.1", + "pako": "1.0.11", + "process": "0.11.10", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "tslib": "1.14.1", + "uint8arrays": "^4.0.3", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/core/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/core/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/core/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/core/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/core/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/core/node_modules/uint8arrays/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/crypto": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/crypto/-/crypto-6.2.0.tgz", + "integrity": "sha512-iiK2hB2l21vanlal50ILVWWF+YMskItjz7nJuR4r3vvs/nXBlHJH9extgAmaLIsX9CeObuLD8NmcCtfDSYs1hg==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/bls-sdk": "6.2.0", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/ecdsa-sdk": "6.2.0", + "@lit-protocol/logger": "6.2.0", + "@lit-protocol/misc": "6.2.0", + "@lit-protocol/nacl": "6.2.0", + "@lit-protocol/sev-snp-utils-sdk": "6.2.0", + "@lit-protocol/types": "6.2.0", + "@lit-protocol/uint8arrays": "6.2.0", + "ajv": "^8.12.0", + "cross-fetch": "3.1.4", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "pako": "1.0.11", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "tslib": "1.14.1", + "uint8arrays": "^4.0.3", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/crypto/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/crypto/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/crypto/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/crypto/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/crypto/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/crypto/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/ecdsa-sdk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/ecdsa-sdk/-/ecdsa-sdk-6.2.0.tgz", + "integrity": "sha512-GZwo151hG3HLYYvHB1fhLcXroRnrwX9g79bSq/4rxJWLuzgMDgSSkCl7MCvFcPTp2bLRaOO6IrgSglbkGUIxhg==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/encryption": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/encryption/-/encryption-6.2.0.tgz", + "integrity": "sha512-ttH+Dd/rapsfMk0GclX03ddtTLu1eKXx0YMI2+sotz9UoY2LEBgYhnx6h1Bc2vsfAbPIJb9/s3y17LpJz1XVxQ==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/bls-sdk": "6.2.0", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/crypto": "6.2.0", + "@lit-protocol/ecdsa-sdk": "6.2.0", + "@lit-protocol/logger": "6.2.0", + "@lit-protocol/misc": "6.2.0", + "@lit-protocol/nacl": "6.2.0", + "@lit-protocol/sev-snp-utils-sdk": "6.2.0", + "@lit-protocol/types": "6.2.0", + "@lit-protocol/uint8arrays": "6.2.0", + "ajv": "^8.12.0", + "cross-fetch": "3.1.4", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "pako": "1.0.11", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "tslib": "1.14.1", + "uint8arrays": "^4.0.3", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/encryption/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/encryption/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/encryption/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/encryption/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/encryption/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/encryption/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/lit-node-client-nodejs/-/lit-node-client-nodejs-6.2.0.tgz", + "integrity": "sha512-1Mkg9Lc9rGIHkxQ1+9A+HbYraG3NfCooEz8gOLpospnfd7sRxqqaKtgcaE0/hYRbSQN6+tKBgiT+EMVBJSVfqA==", + "license": "MIT", + "dependencies": { + "@cosmjs/amino": "0.30.1", + "@cosmjs/crypto": "0.30.1", + "@cosmjs/encoding": "0.30.1", + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/transactions": "5.7.0", + "@lit-protocol/access-control-conditions": "6.2.0", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/auth-helpers": "6.2.0", + "@lit-protocol/bls-sdk": "6.2.0", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/contracts-sdk": "6.2.0", + "@lit-protocol/core": "6.2.0", + "@lit-protocol/crypto": "6.2.0", + "@lit-protocol/ecdsa-sdk": "6.2.0", + "@lit-protocol/encryption": "6.2.0", + "@lit-protocol/logger": "6.2.0", + "@lit-protocol/misc": "6.2.0", + "@lit-protocol/misc-browser": "6.2.0", + "@lit-protocol/nacl": "6.2.0", + "@lit-protocol/sev-snp-utils-sdk": "6.2.0", + "@lit-protocol/types": "6.2.0", + "@lit-protocol/uint8arrays": "6.2.0", + "ajv": "^8.12.0", + "bitcoinjs-lib": "^6.1.0", + "bs58": "^5.0.0", + "cross-fetch": "3.1.4", + "date-and-time": "^2.4.1", + "ethers": "^5.7.1", + "jose": "^4.14.4", + "jszip": "^3.10.1", + "multiformats": "^9.7.1", + "pako": "1.0.11", + "process": "0.11.10", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "siwe-recap": "0.0.2-alpha.0", + "tslib": "^2.3.0", + "uint8arrays": "^4.0.3", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/siwe-recap": { + "version": "0.0.2-alpha.0", + "resolved": "https://registry.npmjs.org/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz", + "integrity": "sha512-xqFUnvrACWW/Q4s5HQ02avg8IyH2RcgkUzfvN4scYaaHErotLVtTGDZkSS0sn/oNK4MXRt83lTqredsvXgt8iA==", + "license": "MIT", + "dependencies": { + "canonicalize": "^2.0.0", + "multiformats": "^11.0.2", + "siwe": "^2.1.4" + }, + "peerDependencies": { + "ethers": "^5.5.1" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/siwe-recap/node_modules/multiformats": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-11.0.2.tgz", + "integrity": "sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/lit-node-client-nodejs/node_modules/uint8arrays/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/logger": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/logger/-/logger-6.2.0.tgz", + "integrity": "sha512-GXRZ+eBDsXUmev+8hR2Pi9do6lHLQhZpjKeTHnXBAq58Gn8bHYN6H3y2r3ueQNyBZygOnOuSsNoKc9MYXccK6g==", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/types": "6.2.0", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "tslib": "1.14.1", + "uint8arrays": "^4.0.3" + } + }, + "node_modules/@lit-protocol/logger/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/logger/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/logger/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/logger/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/logger/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/logger/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/misc": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/misc/-/misc-6.2.0.tgz", + "integrity": "sha512-9zYSogDHePvRbmUcOJ9uLytpCSWAH+Ekf64WpGJLuHlUoXau/wadyg5+aGgBxyfiPWvWzFHivGIGrAOZOZjMEA==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/logger": "6.2.0", + "@lit-protocol/types": "6.2.0", + "ajv": "^8.12.0", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "punycode": "2.3.1", + "siwe": "^2.0.5", + "tslib": "1.14.1", + "uint8arrays": "^4.0.3", + "util": "0.12.5" + } + }, + "node_modules/@lit-protocol/misc-browser": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/misc-browser/-/misc-browser-6.2.0.tgz", + "integrity": "sha512-X6IO46tQFW6EvlI63PI3KDzr7qsjnqHPFZLuQqUqELSxsLvxyzQgUusKfx7woFDrzvP+aZSIDFOZq+k7MKwBrA==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@lit-protocol/accs-schemas": "0.0.7", + "@lit-protocol/constants": "6.2.0", + "@lit-protocol/types": "6.2.0", + "@lit-protocol/uint8arrays": "6.2.0", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "siwe": "^2.0.5", + "tslib": "1.14.1" + } + }, + "node_modules/@lit-protocol/misc-browser/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/misc-browser/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/misc-browser/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/misc-browser/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/misc/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/misc/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/misc/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/misc/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/misc/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@lit-protocol/misc/node_modules/uint8arrays": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz", + "integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^12.0.1" + } + }, + "node_modules/@lit-protocol/nacl": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/nacl/-/nacl-6.2.0.tgz", + "integrity": "sha512-fnxEJlRdLmfgGXaLr1SSvIoqIlDVgCrFsMZbJDUX0Pzr6MxcsWRfYO5NA6eYUpo+nkGm8ZBjfj9fZCke++NLUA==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@lit-protocol/sev-snp-utils-sdk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/sev-snp-utils-sdk/-/sev-snp-utils-sdk-6.2.0.tgz", + "integrity": "sha512-x/K9FM9uGNcbxQJgEd3kGIMW1aNTpCZ6Mdn2KTl7yzDw+1iY/pw/BESxkOiOehIxQG2//Ub2fxIAvxQ16+KHvA==", + "license": "MIT", + "dependencies": { + "cross-fetch": "3.1.4", + "tslib": "1.14.1" + } + }, + "node_modules/@lit-protocol/types": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/types/-/types-6.2.0.tgz", + "integrity": "sha512-CU6KBlYEpb1algGk6W924v7+mMshJEXMo/hFElo/ctGooCwXPpsQmFxr/eomQiYuHrs8qw5L7J+ADApe4SW8Mg==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@lit-protocol/accs-schemas": "0.0.7", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "siwe": "^2.0.5", + "tslib": "1.14.1" + } + }, + "node_modules/@lit-protocol/types/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/types/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/types/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/types/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@lit-protocol/uint8arrays": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@lit-protocol/uint8arrays/-/uint8arrays-6.2.0.tgz", + "integrity": "sha512-lN9dnzzk3o8d3b6cpgdtjfSVyOPS20n6BjqoQfb+AcoxXLtBFtM33doa7w8hD29aNCuQNUcPMddW4atTIqLn/Q==", + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "5.7.0", + "@lit-protocol/accs-schemas": "0.0.7", + "ethers": "^5.7.1", + "jszip": "^3.10.1", + "siwe": "^2.0.5", + "tslib": "1.14.1" + } + }, + "node_modules/@lit-protocol/uint8arrays/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@lit-protocol/uint8arrays/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@lit-protocol/uint8arrays/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@lit-protocol/uint8arrays/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.3" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/ed25519": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", + "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@peculiar/asn1-android": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.6.tgz", + "integrity": "sha512-zkYh4DsiRhiNfg6tWaUuRc+huwlb9XJbmeZLrjTz9v76UK1Ehq3EnfJFED6P3sdznW/nqWe46LoM9JrqxcD58g==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.6", + "asn1js": "^3.0.5", + "tslib": "^2.4.0" + } + }, + "node_modules/@peculiar/asn1-android/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "license": "0BSD" + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz", + "integrity": "sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==", + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@peculiar/asn1-schema/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "license": "0BSD" + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.6.tgz", + "integrity": "sha512-dRwX31R1lcbIdzbztiMvLNTDoGptxdV7HocNx87LfKU0fEWh7fTWJjx4oV+glETSy6heF/hJHB2J4RGB3vVSYg==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.6", + "asn1js": "^3.0.5", + "ipaddr.js": "^2.0.1", + "pvtsutils": "^1.3.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@peculiar/asn1-x509/node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@peculiar/asn1-x509/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "license": "0BSD" + }, + "node_modules/@redis/bloom": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", + "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.6.tgz", + "integrity": "sha512-dFD1S6je+A47Lj22jN/upVU2fj4huR7S9APd7/ziUXsIXDL+11GPYti4Suv5y8FuXaN+0ZG4JF+y1houEJ7ToA==", + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.2", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/graph": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", + "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", + "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.2.tgz", + "integrity": "sha512-/cMfstG/fOh/SsE+4/BQGeuH/JJloeWuH+qJzM8dbxuWvdWibWAOAHHCZTMPhV3xIlH4/cUEIA8OV5QnYpaVoA==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz", + "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@scure/base": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz", + "integrity": "sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@simplewebauthn/server": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-6.2.1.tgz", + "integrity": "sha512-0JPHrxhYkYislk60kCoExqyLW0yulxmD+1LAhOo9Oo3BlFFPnGIRgm5QNnDnXsDXX4WDqK8fU+RgPunCnUqcJw==", + "license": "MIT", + "dependencies": { + "@noble/ed25519": "^1.6.1", + "@peculiar/asn1-android": "^2.1.7", + "@peculiar/asn1-schema": "^2.1.7", + "@peculiar/asn1-x509": "^2.1.7", + "@simplewebauthn/typescript-types": "^6.2.1", + "base64url": "^3.0.1", + "cbor": "^5.1.0", + "debug": "^4.3.2", + "jsrsasign": "^10.4.0", + "jwk-to-pem": "^2.0.4", + "node-fetch": "^2.6.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@simplewebauthn/server/node_modules/cbor": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", + "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.1", + "nofilter": "^1.0.4" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@simplewebauthn/server/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@simplewebauthn/server/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/@simplewebauthn/server/node_modules/nofilter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", + "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@simplewebauthn/typescript-types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/typescript-types/-/typescript-types-6.2.1.tgz", + "integrity": "sha512-qScvkt0nP0Uy/xeeunlXAkJni9wtecsvxwLELSgiWRx/KRVZy1SGDHsKAfQowpIeDmLDyhWxUoN7qUgvgWCiAQ==", + "license": "MIT" + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" + }, + "node_modules/@spruceid/siwe-parser": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@spruceid/siwe-parser/-/siwe-parser-2.1.2.tgz", + "integrity": "sha512-d/r3S1LwJyMaRAKQ0awmo9whfXeE88Qt00vRj91q5uv5ATtWIQEGJ67Yr5eSZw5zp1/fZCXZYuEckt8lSkereQ==", + "license": "Apache-2.0", + "dependencies": { + "@noble/hashes": "^1.1.2", + "apg-js": "^4.3.0", + "uri-js": "^4.4.1", + "valid-url": "^1.0.9" + } + }, + "node_modules/@spruceid/siwe-parser/node_modules/@noble/hashes": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", + "license": "MIT", + "dependencies": { + "@stablelib/int": "^1.0.1" + } + }, + "node_modules/@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==", + "license": "MIT" + }, + "node_modules/@stablelib/random": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", + "license": "MIT", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==", + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/bn.js/node_modules/@types/node": { + "version": "18.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz", + "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/body-parser/node_modules/@types/node": { + "version": "18.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz", + "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/bun": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.1.6.tgz", + "integrity": "sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bun-types": "1.1.17" + } + }, + "node_modules/@types/cbor": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/cbor/-/cbor-6.0.0.tgz", + "integrity": "sha512-mGQ1lbYOwVti5Xlarn1bTeBZqgY0kstsdjnkoEovgohYKdBjGejHyNGXHdMBeqyQazIv32Jjp33+5pBEaSRy2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cbor": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect/node_modules/@types/node": { + "version": "18.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz", + "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "node_modules/@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cors/node_modules/@types/node": { + "version": "18.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz", + "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==", + "license": "MIT" + }, + "node_modules/@types/elliptic": { + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.14.tgz", + "integrity": "sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bn.js": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/express-serve-static-core/node_modules/@types/node": { + "version": "18.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz", + "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jwk-to-pem": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/jwk-to-pem/-/jwk-to-pem-2.0.1.tgz", + "integrity": "sha512-QXmRPhR/LPzvXBHTPfG2BBfMTkNLUD7NyRcPft8m5xFCeANa1BZyLgT0Gw+OxdWx6i1WCpT27EqyggP4UUHMrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "16.18.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.20.tgz", + "integrity": "sha512-9fH66vSJnF563exTu3y1g2IbDz1vCj01Lbqms97r8j0qzfFisT2biypSfybVv/eYrtTB74x9xQTdRU8RyMiRrg==", + "license": "MIT" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/@types/node": { + "version": "18.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz", + "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static/node_modules/@types/node": { + "version": "18.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz", + "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz", + "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws/node_modules/@types/node": { + "version": "18.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz", + "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apg-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/apg-js/-/apg-js-4.4.0.tgz", + "integrity": "sha512-fefmXFknJmtgtNEXfPwZKYkMFX4Fyeyz+fNF6JWp87biGOPslJbCBVU158zvKRZfHBKnJDy8CMM40oLFGkXT8Q==", + "license": "BSD-2-Clause" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/asn1js/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "license": "0BSD" + }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/async-mutex/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "license": "MIT" + }, + "node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bip174": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bip174/-/bip174-2.1.1.tgz", + "integrity": "sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/bitcoinjs-lib": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz", + "integrity": "sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bech32": "^2.0.0", + "bip174": "^2.1.1", + "bs58check": "^3.0.1", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/bitcoinjs-lib/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/bitcoinjs-lib/node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/bs58check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" + } + }, + "node_modules/bs58check/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/bun-types": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.17.tgz", + "integrity": "sha512-Z4+OplcSd/YZq7ZsrfD00DKJeCwuNY96a1IDJyR73+cTBaFIS7SC6LhpY/W3AMEXO9iYq5NJ58WAwnwL1p5vKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "~20.12.8", + "@types/ws": "~8.5.10" + } + }, + "node_modules/bun-types/node_modules/@types/node": { + "version": "20.12.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz", + "integrity": "sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/canonicalize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-2.0.0.tgz", + "integrity": "sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w==", + "license": "Apache-2.0" + }, + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "license": "MIT", + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "license": "MIT", + "dependencies": { + "node-fetch": "2.6.1" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "license": "MIT", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/date-and-time": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-2.4.3.tgz", + "integrity": "sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ethereum-cryptography": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", + "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.3.0", + "@noble/hashes": "1.3.3", + "@scure/bip32": "1.3.3", + "@scure/bip39": "1.2.2" + } + }, + "node_modules/ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.4.tgz", + "integrity": "sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abi/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", + "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", + "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/address/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/address/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/address/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/address/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/address/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/base64": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", + "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/base64/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/base64/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/basex": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz", + "integrity": "sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/basex/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/basex/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/basex/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/bignumber": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", + "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/bignumber/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/bignumber/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/bytes": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", + "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/bytes/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/constants": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", + "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.6.2" + } + }, + "node_modules/ethers/node_modules/@ethersproject/constants/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/constants/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/constants/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/contracts": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.2.tgz", + "integrity": "sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.6.3", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", + "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hash/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz", + "integrity": "sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz", + "integrity": "sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/keccak256": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", + "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/keccak256/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/keccak256/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/logger": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", + "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/networks": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.4.tgz", + "integrity": "sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/networks/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/pbkdf2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz", + "integrity": "sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/sha2": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/properties": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", + "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/properties/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/providers": { + "version": "5.6.8", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.8.tgz", + "integrity": "sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/base64": "^5.6.1", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/providers/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/random": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz", + "integrity": "sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/random/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/random/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/rlp": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", + "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/rlp/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/rlp/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/sha2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz", + "integrity": "sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/sha2/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/sha2/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/signing-key": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", + "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/strings": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", + "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/strings/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/strings/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/strings/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/strings/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/transactions": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", + "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/transactions/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/web": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", + "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/web/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/web/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/web/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/web/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/web/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/web/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/web/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz", + "integrity": "sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-rate-limit": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.7.0.tgz", + "integrity": "sha512-vhwIdRoqcYB/72TK3tRZI+0ttS8Ytrk24GfmsxDXK9o9IhHNO5bXRiXQSExPQ4GbaE5tvIS7j1SGrxsuWs+sGA==", + "license": "MIT", + "engines": { + "node": ">= 12.9.0" + }, + "peerDependencies": { + "express": "^4 || ^5" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==", + "license": "Apache-2.0" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.0.tgz", + "integrity": "sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/gcp-metadata": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.2.0.tgz", + "integrity": "sha512-aFhhvvNycky2QyhG+dcfEdHBF0FRbYcf39s6WNHUDysKSrbJ5vuFbjydxBcmewtXeV248GP8dWT3ByPNxsyHCw==", + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/google-auth-library": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.7.0.tgz", + "integrity": "sha512-1M0NG5VDIvJZEnstHbRdckLZESoJwguinwN8Dhae0j2ZKIQFIV63zxm6Fo6nM4xkgqUr2bbMtV5Dgo+Hy6oo0Q==", + "license": "Apache-2.0", + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^5.0.0", + "gcp-metadata": "^5.0.0", + "gtoken": "^6.1.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/google-p12-pem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", + "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", + "license": "MIT", + "dependencies": { + "node-forge": "^1.3.1" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gtoken": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", + "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "license": "MIT", + "dependencies": { + "gaxios": "^5.0.1", + "google-p12-pem": "^4.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has/node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jose": { + "version": "4.15.5", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", + "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-base64": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz", + "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==", + "license": "BSD-3-Clause" + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/jsrsasign": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.7.0.tgz", + "integrity": "sha512-D5V2gGpYGtwbAtQHoglTVrpYf7QJuNoPEhaLOsTFONS2jXUl3qyR1hnYrNpASAybqQeiDYA3zGthR0ubgPRoQA==", + "license": "MIT", + "funding": { + "url": "https://github.com/kjur/jsrsasign#donations" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwk-to-pem": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz", + "integrity": "sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==", + "license": "Apache-2.0", + "dependencies": { + "asn1.js": "^5.3.0", + "elliptic": "^6.5.4", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/libsodium": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", + "integrity": "sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==", + "license": "ISC" + }, + "node_modules/libsodium-wrappers": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz", + "integrity": "sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==", + "license": "ISC", + "dependencies": { + "libsodium": "^0.7.13" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "license": "(Apache-2.0 AND MIT)" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "license": "MIT", + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pvtsutils": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz", + "integrity": "sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/pvtsutils/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "license": "0BSD" + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rate-limit-redis": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rate-limit-redis/-/rate-limit-redis-3.0.1.tgz", + "integrity": "sha512-L6yhOUBrAZ8VEMX9DwlM3X6hfm8yq+gBO4LoOW7+JgmNq59zE7QmLz4v5VnwYPvLeSh/e7PDcrzUI3UumJw1iw==", + "license": "MIT", + "engines": { + "node": ">= 14.5.0" + }, + "peerDependencies": { + "express-rate-limit": "^6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readonly-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", + "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==", + "license": "Apache-2.0" + }, + "node_modules/redis": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.5.tgz", + "integrity": "sha512-O0OWA36gDQbswOdUuAhRL6mTZpHFN525HlgZgDaVNgCJIAZR3ya06NTESb0R+TUZ+BFaDpz6NnnVvoMx9meUFg==", + "license": "MIT", + "workspaces": [ + "./packages/*" + ], + "dependencies": { + "@redis/bloom": "1.2.0", + "@redis/client": "1.5.6", + "@redis/graph": "1.1.0", + "@redis/json": "1.0.4", + "@redis/search": "1.1.2", + "@redis/time-series": "1.0.4" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel/node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel/node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "license": "MIT" + }, + "node_modules/side-channel/node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/siwe": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/siwe/-/siwe-2.3.2.tgz", + "integrity": "sha512-aSf+6+Latyttbj5nMu6GF3doMfv2UYj83hhwZgUF20ky6fTS83uVhkQABdIVnEuS8y1bBdk7p6ltb9SmlhTTlA==", + "license": "Apache-2.0", + "dependencies": { + "@spruceid/siwe-parser": "^2.1.2", + "@stablelib/random": "^1.0.1", + "uri-js": "^4.4.1", + "valid-url": "^1.0.9" + }, + "peerDependencies": { + "ethers": "^5.6.8 || ^6.0.8" + } + }, + "node_modules/socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "license": "ISC", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "license": "Unlicense" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "license": "MIT", + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" + }, + "node_modules/varuint-bitcoin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz", + "integrity": "sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.1" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + } + } +} diff --git a/package.json b/package.json index 89e87d5..4e262ce 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dependencies": { "@lit-protocol/lit-node-client-nodejs": "^6.2.0", "@simplewebauthn/server": "6.2.1", + "async-mutex": "^0.5.0", "base64url": "^3.0.1", "cbor": "^8.1.0", "cors": "^2.8.5", @@ -30,11 +31,13 @@ "rate-limit-redis": "^3.0.1", "redis": "^4.4.0", "siwe": "^2.3.2", + "socket.io": "^4.7.5", "tweetnacl": "^1.0.3", "tweetnacl-util": "^0.15.1", "uint8arrays": "^3.0.0" }, "devDependencies": { + "@types/bun": "^1.1.5", "@types/cbor": "^6.0.0", "@types/cors": "^2.8.12", "@types/elliptic": "^6.4.14", @@ -46,4 +49,4 @@ "ts-node": "^10.2.1", "typescript": "^4.4.2" } -} \ No newline at end of file +} diff --git a/requests/get-status-requestId.http b/requests/get-status-requestId.http index f7c7d74..d617ea0 100644 --- a/requests/get-status-requestId.http +++ b/requests/get-status-requestId.http @@ -1,5 +1,5 @@ # Poll status of minting PKP transaction # GET /auth/status/:requestId -GET http://127.0.0.1:6380/auth/status/0xa5dfce3341fa9ca44e3cbaa41da2cf7f6d6858ca5a3b71eafae090ab5ca249af -api-key: your-api-key-value \ No newline at end of file +GET http://127.0.0.1:6380/auth/status/0xeff5cf00752705bf9ff8af007dd4cd9fd6568a1623d97cd1d9a7b12a4938ef5f +api-key: your-api-key-value diff --git a/requests/mint-next-and-add-auth-methods-v2.http b/requests/mint-next-and-add-auth-methods-v2.http new file mode 100644 index 0000000..c58c75b --- /dev/null +++ b/requests/mint-next-and-add-auth-methods-v2.http @@ -0,0 +1,13 @@ +POST http://127.0.0.1:6380/api/v2/mint-next-and-add-auth-methods +Content-Type: application/json +api-key: your-api-key-value + +{ + "keyType": 2, + "permittedAuthMethodTypes": [2], + "permittedAuthMethodIds": ["0x4825e3caf11a273792ad0405524820410cd15d6323ae4621537f0a89c1322a74"], + "permittedAuthMethodPubkeys": ["0x"], + "permittedAuthMethodScopes": [[1]], + "addPkpEthAddressAsPermittedAddress": true, + "sendPkpToItself": true +} \ No newline at end of file diff --git a/routes/VersionStrategy.ts b/routes/VersionStrategy.ts new file mode 100644 index 0000000..87be79c --- /dev/null +++ b/routes/VersionStrategy.ts @@ -0,0 +1,32 @@ +/** + * Enum representing the version strategy for the relay server. + */ +export enum VersionStrategy { + /** + * The default version strategy. Use the relay server to process the request. + */ + DEFAULT = "default", + + /** + * Forward the request to ThirdWeb for processing. + */ + FORWARD_TO_THIRDWEB = "thirdweb", +} + +/** + * Determines the version strategy based on the provided URL. + * @param url - The URL to check for the version. + * @returns The version strategy based on the URL. + */ +export function getVersionStrategy(url: string): VersionStrategy { + const versionRegex = /\/api\/v(\d+)\//; + const match = url.match(versionRegex); + const version = match ? parseInt(match[1], 10) : null; + + switch (version) { + case 2: + return VersionStrategy.FORWARD_TO_THIRDWEB; + default: + return VersionStrategy.DEFAULT; + } +} diff --git a/routes/auth/mintAndFetch.ts b/routes/auth/mintAndFetch.ts index dac250e..c2b0ee9 100644 --- a/routes/auth/mintAndFetch.ts +++ b/routes/auth/mintAndFetch.ts @@ -8,6 +8,8 @@ import { MintNextAndAddAuthMethodsRequest, MintNextAndAddAuthMethodsResponse, } from "../../models"; +import { getVersionStrategy } from "../VersionStrategy"; +import redisClient from "../../lib/redisClient"; export async function mintNextAndAddAuthMethodsHandler( req: Request< @@ -23,14 +25,36 @@ export async function mintNextAndAddAuthMethodsHandler( number >, ) { + const versionStrategy = getVersionStrategy(req.url); + const { uuid } = req.body; // mint PKP for user try { - const mintTx = await mintPKPV2(req.body); - console.info("Minted PKP", { - requestId: mintTx.hash, + const mintTx = await mintPKPV2({ + ...req.body, + versionStrategy, }); - return res.status(200).json({ - requestId: mintTx.hash, + + console.log("mintTx:", mintTx); + + if (mintTx.hash) { + const source = 'lit-relayer'; + console.info("Minted PKP", { + requestId: mintTx.hash, + source, + }); + } + + if (mintTx.queueId) { + const queueId = mintTx.queueId; + // mapping queueId with uuid for webhook + await redisClient.hSet("userQueueIdMapping", queueId, uuid); + return res.status(200).json({ + queueId + }); + } + + return res.status(500).json({ + error: `[mintNextAndAddAuthMethodsHandler] Unable to mint PKP`, }); } catch (err) { console.error("[mintNextAndAddAuthMethodsHandler] Unable to mint PKP", { diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts new file mode 100644 index 0000000..bd0fd44 --- /dev/null +++ b/routes/webhook/thirdweb.ts @@ -0,0 +1,50 @@ +import { Request, Response } from 'express'; +import { isExpired, isValidSignature } from '../../utils/thirdweb/webhook'; +import redisClient from '../../lib/redisClient'; +import { io } from '../..'; + +const { WEBHOOK_SECRET } = process.env; +export async function thirdwebWebHookHandler(req: Request, res: Response) { + try { + console.log("webhook"); + if (!WEBHOOK_SECRET) { + throw new Error("WEBHOOK_SECRET Required"); + } + const signatureFromHeader = req.header("X-Engine-Signature"); + const timestampFromHeader = req.header("X-Engine-Timestamp"); + + if (!signatureFromHeader || !timestampFromHeader) { + throw new Error("Missing signature or timestamp header"); + } + + // if ( + // !isValidSignature( + // req.body, + // timestampFromHeader, + // signatureFromHeader, + // WEBHOOK_SECRET, + // ) + // ) { + // throw new Error("Invalid signature"); + // } + + if (isExpired(timestampFromHeader, 300)) { + // Assuming expiration time is 5 minutes (300 seconds) + throw new Error("Request has expired"); + } + const uuid = await redisClient.hGet("userQueueIdMapping",req.body.id); + if(!uuid) { + throw new Error("Queue ID not found in redis"); + } + await redisClient.hDel("userQueueIdMapping", req.body.id); + const socketId = await redisClient.hGet("userSocketMapping",uuid); + if(!socketId) { + throw new Error("socketId not found in redis"); + } + io.to(socketId).emit('transactionComplete', {requestId: req.body.transactionHash, queueId: req.body.id}); + res.status(200).send({requestId: req.body.transactionHash, queueId: req.body.id}); + } catch (err) { + console.log(err); + + } +} \ No newline at end of file diff --git a/types/lit.ts b/types/lit.ts index d243fc6..49643ec 100644 --- a/types/lit.ts +++ b/types/lit.ts @@ -1,3 +1,5 @@ +import { ethers } from "ethers"; + export type CapacityToken = { URI: { description: string; image_data: string; name: string }; capacity: { @@ -6,4 +8,9 @@ export type CapacityToken = { }; isExpired: boolean; tokenId: number; -}; \ No newline at end of file +}; + + +export interface MintPKPV2 extends ethers.Transaction { + queueId: string; +} \ No newline at end of file diff --git a/utils/thirdweb/constants.ts b/utils/thirdweb/constants.ts new file mode 100644 index 0000000..17ae56e --- /dev/null +++ b/utils/thirdweb/constants.ts @@ -0,0 +1,12 @@ +export const backendWallets = [ + '0xbF678cB0898856da855796C700107d75Efe5f534', + '0xf402335076Cbd5c58d5dfa61052EC4fD3CeBC1bD', + '0xC5d2EC86a80a4F3A62B7882858FBfe106b891DE0', + '0x6d2a662589947D397b863FbF1b505eFEFB3A37A7', + '0xFBE619E87ca4889540137E0265D69DD2aD886c03', + '0xca28dd602B46c1338aF3889C75FeBa883687E937', + '0x6315646A615F46C6d6B3802D809a6A61A6bF88fa', + '0x0b0a3fd675238C41170f6A7fe5ad04aD3bb20FD8', + '0x827c3b1e5bd37907b65e8687204540ec06bFe95a', + '0x32ecEaE262EB188a6FfA252144D90C4d8D42C001' +] \ No newline at end of file diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts new file mode 100644 index 0000000..e0ab55a --- /dev/null +++ b/utils/thirdweb/roundRobin.ts @@ -0,0 +1,23 @@ +import {Mutex} from "async-mutex"; + +export class RoundRobin { + addresses: string[]; + index: number; + mutex: Mutex; + constructor(addresses: string[]) { + this.addresses = addresses; + this.index = 0; + this.mutex = new Mutex(); + } + + async next() { + const release = await this.mutex.acquire(); + try { + const address = this.addresses[this.index]; + this.index = (this.index + 1) % this.addresses.length; + return address; + } finally { + release(); + } + } +} \ No newline at end of file diff --git a/utils/thirdweb/webhook.ts b/utils/thirdweb/webhook.ts new file mode 100644 index 0000000..d5e8d78 --- /dev/null +++ b/utils/thirdweb/webhook.ts @@ -0,0 +1,41 @@ +import crypto from "crypto"; + + +const generateSignature = ( + body: string, + timestamp: string, + secret: string, + ): string => { + const payload = `${timestamp}.${body}`; + return crypto + .createHmac("sha256", secret) + .update(payload) + .digest("hex"); + }; + + export const isValidSignature = ( + body: string, + timestamp: string, + signature: string, + secret: string, + ): boolean => { + const expectedSignature = generateSignature( + body, + timestamp, + secret, + ); + return crypto.timingSafeEqual( + Buffer.from(expectedSignature), + Buffer.from(signature), + ); + }; + + + export const isExpired = ( + timestamp: string, + expirationInSeconds: number, + ): boolean => { + const currentTime = Math.floor(Date.now() / 1000); + return currentTime - parseInt(timestamp) > expirationInSeconds; + }; + \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 6cd201e..58750e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@cosmjs/amino@0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.30.1.tgz#7c18c14627361ba6c88e3495700ceea1f76baace" + resolved "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.30.1.tgz" integrity sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w== dependencies: "@cosmjs/crypto" "^0.30.1" @@ -12,9 +12,9 @@ "@cosmjs/math" "^0.30.1" "@cosmjs/utils" "^0.30.1" -"@cosmjs/crypto@0.30.1", "@cosmjs/crypto@^0.30.1": +"@cosmjs/crypto@^0.30.1", "@cosmjs/crypto@0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.30.1.tgz#21e94d5ca8f8ded16eee1389d2639cb5c43c3eb5" + resolved "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.30.1.tgz" integrity sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ== dependencies: "@cosmjs/encoding" "^0.30.1" @@ -25,9 +25,9 @@ elliptic "^6.5.4" libsodium-wrappers "^0.7.6" -"@cosmjs/encoding@0.30.1", "@cosmjs/encoding@^0.30.1": +"@cosmjs/encoding@^0.30.1", "@cosmjs/encoding@0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.30.1.tgz#b5c4e0ef7ceb1f2753688eb96400ed70f35c6058" + resolved "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.30.1.tgz" integrity sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ== dependencies: base64-js "^1.3.0" @@ -36,26 +36,56 @@ "@cosmjs/math@^0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.30.1.tgz#8b816ef4de5d3afa66cb9fdfb5df2357a7845b8a" + resolved "https://registry.npmjs.org/@cosmjs/math/-/math-0.30.1.tgz" integrity sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q== dependencies: bn.js "^5.2.0" "@cosmjs/utils@^0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb" + resolved "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz" integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@ethersproject/abi@^5.6.3": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abi@^5.7.0", "@ethersproject/abi@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/abi@5.6.4": version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.4.tgz#f6e01b6ed391a505932698ecc0d9e7a99ee60362" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.4.tgz" integrity sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg== dependencies: "@ethersproject/address" "^5.6.1" @@ -68,24 +98,22 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": +"@ethersproject/abstract-provider@^5.6.1", "@ethersproject/abstract-provider@^5.7.0", "@ethersproject/abstract-provider@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== dependencies: - "@ethersproject/address" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" "@ethersproject/abstract-provider@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz" integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== dependencies: "@ethersproject/bignumber" "^5.6.2" @@ -96,22 +124,20 @@ "@ethersproject/transactions" "^5.6.2" "@ethersproject/web" "^5.6.1" -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.6.1", "@ethersproject/abstract-provider@^5.7.0": +"@ethersproject/abstract-signer@^5.6.2", "@ethersproject/abstract-signer@^5.7.0", "@ethersproject/abstract-signer@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== dependencies: + "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" "@ethersproject/abstract-signer@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz" integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== dependencies: "@ethersproject/abstract-provider" "^5.6.1" @@ -120,20 +146,20 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.6.2", "@ethersproject/abstract-signer@^5.7.0": +"@ethersproject/address@^5.6.1", "@ethersproject/address@^5.7.0", "@ethersproject/address@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== dependencies: - "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" "@ethersproject/address@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz" integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== dependencies: "@ethersproject/bignumber" "^5.6.2" @@ -142,96 +168,93 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/rlp" "^5.6.1" -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.6.1", "@ethersproject/address@^5.7.0": +"@ethersproject/base64@^5.6.1", "@ethersproject/base64@^5.7.0", "@ethersproject/base64@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== dependencies: - "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" "@ethersproject/base64@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz" integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== dependencies: "@ethersproject/bytes" "^5.6.1" -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.6.1", "@ethersproject/base64@^5.7.0": +"@ethersproject/basex@^5.6.1": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/basex@^5.7.0", "@ethersproject/basex@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== dependencies: "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" "@ethersproject/basex@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz" integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== dependencies: "@ethersproject/bytes" "^5.6.1" "@ethersproject/properties" "^5.6.0" -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.6.1", "@ethersproject/basex@^5.7.0": +"@ethersproject/bignumber@^5.6.2", "@ethersproject/bignumber@^5.7.0", "@ethersproject/bignumber@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== dependencies: "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" "@ethersproject/bignumber@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz" integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== dependencies: "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" bn.js "^5.2.1" -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.6.2", "@ethersproject/bignumber@^5.7.0": +"@ethersproject/bytes@^5.6.1", "@ethersproject/bytes@^5.7.0", "@ethersproject/bytes@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: - "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" "@ethersproject/bytes@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz" integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== dependencies: "@ethersproject/logger" "^5.6.0" -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.6.1", "@ethersproject/bytes@^5.7.0": +"@ethersproject/constants@^5.6.1", "@ethersproject/constants@^5.7.0", "@ethersproject/constants@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== dependencies: - "@ethersproject/logger" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" "@ethersproject/constants@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz" integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== dependencies: "@ethersproject/bignumber" "^5.6.2" -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.6.1", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/contracts@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" + resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.2.tgz" integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== dependencies: "@ethersproject/abi" "^5.6.3" @@ -247,7 +270,7 @@ "@ethersproject/contracts@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== dependencies: "@ethersproject/abi" "^5.7.0" @@ -261,9 +284,24 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/transactions" "^5.7.0" +"@ethersproject/hash@^5.6.1", "@ethersproject/hash@^5.7.0", "@ethersproject/hash@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/hash@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz" integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== dependencies: "@ethersproject/abstract-signer" "^5.6.2" @@ -275,24 +313,27 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.6.1", "@ethersproject/hash@^5.7.0": +"@ethersproject/hdnode@^5.6.2", "@ethersproject/hdnode@^5.7.0", "@ethersproject/hdnode@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== dependencies: "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" "@ethersproject/hdnode@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz" integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== dependencies: "@ethersproject/abstract-signer" "^5.6.2" @@ -308,27 +349,28 @@ "@ethersproject/transactions" "^5.6.2" "@ethersproject/wordlists" "^5.6.1" -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.6.2", "@ethersproject/hdnode@^5.7.0": +"@ethersproject/json-wallets@^5.6.1", "@ethersproject/json-wallets@^5.7.0", "@ethersproject/json-wallets@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== dependencies: "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/address" "^5.7.0" "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/pbkdf2" "^5.7.0" "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/random" "^5.7.0" "@ethersproject/strings" "^5.7.0" "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" "@ethersproject/json-wallets@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz" integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== dependencies: "@ethersproject/abstract-signer" "^5.6.2" @@ -345,98 +387,94 @@ aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.6.1", "@ethersproject/json-wallets@^5.7.0": +"@ethersproject/keccak256@^5.6.1", "@ethersproject/keccak256@^5.7.0", "@ethersproject/keccak256@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" + js-sha3 "0.8.0" "@ethersproject/keccak256@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz" integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== dependencies: "@ethersproject/bytes" "^5.6.1" js-sha3 "0.8.0" -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.6.1", "@ethersproject/keccak256@^5.7.0": +"@ethersproject/logger@^5.6.0", "@ethersproject/logger@^5.7.0", "@ethersproject/logger@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== "@ethersproject/logger@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz" integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.6.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== +"@ethersproject/networks@^5.6.3", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/networks@^5.7.0", "@ethersproject/networks@5.7.1": + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" "@ethersproject/networks@5.6.4": version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.4.tgz" integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== dependencies: "@ethersproject/logger" "^5.6.0" -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.6.3", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== +"@ethersproject/pbkdf2@^5.6.1", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== dependencies: - "@ethersproject/logger" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/pbkdf2@^5.7.0", "@ethersproject/pbkdf2@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" "@ethersproject/pbkdf2@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz" integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== dependencies: "@ethersproject/bytes" "^5.6.1" "@ethersproject/sha2" "^5.6.1" -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.6.1", "@ethersproject/pbkdf2@^5.7.0": +"@ethersproject/properties@^5.6.0", "@ethersproject/properties@^5.7.0", "@ethersproject/properties@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" + "@ethersproject/logger" "^5.7.0" "@ethersproject/properties@5.6.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz" integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== dependencies: "@ethersproject/logger" "^5.6.0" -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.6.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - "@ethersproject/providers@5.6.8": version "5.6.8" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.8.tgz" integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== dependencies: "@ethersproject/abstract-provider" "^5.6.1" @@ -462,7 +500,7 @@ "@ethersproject/providers@5.7.2": version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== dependencies: "@ethersproject/abstract-provider" "^5.7.0" @@ -486,59 +524,79 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/random@^5.6.1", "@ethersproject/random@^5.7.0", "@ethersproject/random@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/random@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz" integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== dependencies: "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.6.1", "@ethersproject/random@^5.7.0": +"@ethersproject/rlp@^5.6.1", "@ethersproject/rlp@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@^5.7.0", "@ethersproject/rlp@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/rlp@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz" integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== dependencies: "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.6.1", "@ethersproject/rlp@^5.7.0": +"@ethersproject/sha2@^5.6.1", "@ethersproject/sha2@^5.7.0", "@ethersproject/sha2@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" "@ethersproject/sha2@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz" integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== dependencies: "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" hash.js "1.1.7" -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.6.1", "@ethersproject/sha2@^5.7.0": +"@ethersproject/signing-key@^5.6.2", "@ethersproject/signing-key@^5.7.0", "@ethersproject/signing-key@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" hash.js "1.1.7" "@ethersproject/signing-key@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz" integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== dependencies: "@ethersproject/bytes" "^5.6.1" @@ -548,21 +606,9 @@ elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.6.2", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - "@ethersproject/solidity@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.1.tgz" integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== dependencies: "@ethersproject/bignumber" "^5.6.2" @@ -574,7 +620,7 @@ "@ethersproject/solidity@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -584,27 +630,42 @@ "@ethersproject/sha2" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@ethersproject/strings@^5.6.1", "@ethersproject/strings@^5.7.0", "@ethersproject/strings@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/strings@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz" integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== dependencies: "@ethersproject/bytes" "^5.6.1" "@ethersproject/constants" "^5.6.1" "@ethersproject/logger" "^5.6.0" -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.6.1", "@ethersproject/strings@^5.7.0": +"@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0", "@ethersproject/transactions@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" "@ethersproject/transactions@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz" integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== dependencies: "@ethersproject/address" "^5.6.1" @@ -617,24 +678,9 @@ "@ethersproject/rlp" "^5.6.1" "@ethersproject/signing-key" "^5.6.2" -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/units@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.1.tgz" integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== dependencies: "@ethersproject/bignumber" "^5.6.2" @@ -643,7 +689,7 @@ "@ethersproject/units@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz" integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -652,7 +698,7 @@ "@ethersproject/wallet@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz" integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== dependencies: "@ethersproject/abstract-provider" "^5.6.1" @@ -673,7 +719,7 @@ "@ethersproject/wallet@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== dependencies: "@ethersproject/abstract-provider" "^5.7.0" @@ -692,20 +738,20 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/wordlists" "^5.7.0" -"@ethersproject/web@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" - integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== +"@ethersproject/web@^5.6.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== dependencies: - "@ethersproject/base64" "^5.6.1" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.6.1", "@ethersproject/web@^5.7.0": +"@ethersproject/web@^5.7.0", "@ethersproject/web@5.7.1": version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== dependencies: "@ethersproject/base64" "^5.7.0" @@ -714,20 +760,20 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/wordlists@5.6.1": +"@ethersproject/web@5.6.1": version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" - integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz" + integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== dependencies: + "@ethersproject/base64" "^5.6.1" "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hash" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.6.1", "@ethersproject/wordlists@^5.7.0": +"@ethersproject/wordlists@^5.6.1", "@ethersproject/wordlists@^5.7.0", "@ethersproject/wordlists@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -736,19 +782,30 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@ethersproject/wordlists@5.6.1": + version "5.6.1" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz" + integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + "@jridgewell/resolve-uri@^3.0.3": version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" @@ -756,7 +813,7 @@ "@lit-protocol/access-control-conditions@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/access-control-conditions/-/access-control-conditions-6.2.0.tgz#f798c7ddf9ebc5a117ac5a063525649279f4cc58" + resolved "https://registry.npmjs.org/@lit-protocol/access-control-conditions/-/access-control-conditions-6.2.0.tgz" integrity sha512-hx1ORDkyxLPNrQwq0GuA4oO/53uinM6Ca3J0ZHScwhaa2tqvYZh0sLmN8Qf2jv9b+iZshugSHQP4+6hXm9HYRw== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -779,14 +836,14 @@ "@lit-protocol/accs-schemas@0.0.7": version "0.0.7" - resolved "https://registry.yarnpkg.com/@lit-protocol/accs-schemas/-/accs-schemas-0.0.7.tgz#aad45c27f8c1dc0363a08771bdab50b595dc34d7" + resolved "https://registry.npmjs.org/@lit-protocol/accs-schemas/-/accs-schemas-0.0.7.tgz" integrity sha512-n8fJ6NMh2T3KgSKe0CRB0Uam6ZwxUTQV0oQXY0vEmSL+Q2a1PsM2FX42szOM+O7LgY+Bko7AiCjjDHbqQoJydg== dependencies: ajv "^8.12.0" "@lit-protocol/auth-helpers@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/auth-helpers/-/auth-helpers-6.2.0.tgz#75e28158f5fff9998ab7d2a65100a6fb1bcb4bf5" + resolved "https://registry.npmjs.org/@lit-protocol/auth-helpers/-/auth-helpers-6.2.0.tgz" integrity sha512-TZxc/bYAaaejUkkpX0GuMMFR7uT6TS8TjOVffuu7Ptl1VKftdRSx4Hs52XQLzzPOIiowIOPTK/3oL7l391rykw== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -811,7 +868,7 @@ "@lit-protocol/bls-sdk@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/bls-sdk/-/bls-sdk-6.2.0.tgz#aad1ae6b8966e2ebd152066ea5295901871139b1" + resolved "https://registry.npmjs.org/@lit-protocol/bls-sdk/-/bls-sdk-6.2.0.tgz" integrity sha512-qJG8q1coSyThL6QIuHHjAkuIp7fkIhETDUTaOEIOOSNN+ZuZ+YuFYocueHCz6SgJUcnGoooC/5KSxV9/Em5UUg== dependencies: tslib "1.14.1" @@ -819,7 +876,7 @@ "@lit-protocol/constants@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/constants/-/constants-6.2.0.tgz#53c58269b68f9ba0c6a973f1cf64e93baf3dcd7a" + resolved "https://registry.npmjs.org/@lit-protocol/constants/-/constants-6.2.0.tgz" integrity sha512-jdXaM1gRCprgaEmXXQyLXwYgasWoTPyprqG1Wzc7Njri7STdX8LU70oxs+nvcT2R8ASwfy+4ysdAbbsyi9MxaA== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -832,7 +889,7 @@ "@lit-protocol/contracts-sdk@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/contracts-sdk/-/contracts-sdk-6.2.0.tgz#2ffdfc25488d64fa5ad3e85b8f20e1b9fe076ee3" + resolved "https://registry.npmjs.org/@lit-protocol/contracts-sdk/-/contracts-sdk-6.2.0.tgz" integrity sha512-mtW2msaoWW5QSbC9wOE09mxc5zfGiulE+gA4IFVOQNA7RBzFWub/AxlKMLYlB0t3mlW4gvJ/vmEy+3qOy8nZkA== dependencies: "@cosmjs/amino" "0.30.1" @@ -861,7 +918,7 @@ "@lit-protocol/core@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/core/-/core-6.2.0.tgz#bce6fa4775f8ccdc5cce0044a2b2dba8ac1692d6" + resolved "https://registry.npmjs.org/@lit-protocol/core/-/core-6.2.0.tgz" integrity sha512-kxklPOJYEcoacFBgvr5Cycy7eknB0kO1tp/75oRq3PwBJIwVX4Wx8qL0DGh+sxSa6Ayck1Nvf4yFJaF1XjTvYA== dependencies: "@cosmjs/amino" "0.30.1" @@ -903,7 +960,7 @@ "@lit-protocol/crypto@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/crypto/-/crypto-6.2.0.tgz#0b7ec6791ed609c18fc23991c38e122a80931122" + resolved "https://registry.npmjs.org/@lit-protocol/crypto/-/crypto-6.2.0.tgz" integrity sha512-iiK2hB2l21vanlal50ILVWWF+YMskItjz7nJuR4r3vvs/nXBlHJH9extgAmaLIsX9CeObuLD8NmcCtfDSYs1hg== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -932,7 +989,7 @@ "@lit-protocol/ecdsa-sdk@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/ecdsa-sdk/-/ecdsa-sdk-6.2.0.tgz#3f6ca85d51900190467c4039c1deb040314fff10" + resolved "https://registry.npmjs.org/@lit-protocol/ecdsa-sdk/-/ecdsa-sdk-6.2.0.tgz" integrity sha512-GZwo151hG3HLYYvHB1fhLcXroRnrwX9g79bSq/4rxJWLuzgMDgSSkCl7MCvFcPTp2bLRaOO6IrgSglbkGUIxhg== dependencies: tslib "1.14.1" @@ -940,7 +997,7 @@ "@lit-protocol/encryption@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/encryption/-/encryption-6.2.0.tgz#1efd222d5bc8255c5d4ee41fcce95843455e3a89" + resolved "https://registry.npmjs.org/@lit-protocol/encryption/-/encryption-6.2.0.tgz" integrity sha512-ttH+Dd/rapsfMk0GclX03ddtTLu1eKXx0YMI2+sotz9UoY2LEBgYhnx6h1Bc2vsfAbPIJb9/s3y17LpJz1XVxQ== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -970,7 +1027,7 @@ "@lit-protocol/lit-node-client-nodejs@^6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client-nodejs/-/lit-node-client-nodejs-6.2.0.tgz#dd512985df39d17bfa027f1b2c1a31acb7865e43" + resolved "https://registry.npmjs.org/@lit-protocol/lit-node-client-nodejs/-/lit-node-client-nodejs-6.2.0.tgz" integrity sha512-1Mkg9Lc9rGIHkxQ1+9A+HbYraG3NfCooEz8gOLpospnfd7sRxqqaKtgcaE0/hYRbSQN6+tKBgiT+EMVBJSVfqA== dependencies: "@cosmjs/amino" "0.30.1" @@ -1018,7 +1075,7 @@ "@lit-protocol/logger@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/logger/-/logger-6.2.0.tgz#9be72d2995c091f9b1459d5c1025e19ceed160ad" + resolved "https://registry.npmjs.org/@lit-protocol/logger/-/logger-6.2.0.tgz" integrity sha512-GXRZ+eBDsXUmev+8hR2Pi9do6lHLQhZpjKeTHnXBAq58Gn8bHYN6H3y2r3ueQNyBZygOnOuSsNoKc9MYXccK6g== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -1034,7 +1091,7 @@ "@lit-protocol/misc-browser@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/misc-browser/-/misc-browser-6.2.0.tgz#f85411a2f90d9b246ad7ba861fde9e60c9841d5e" + resolved "https://registry.npmjs.org/@lit-protocol/misc-browser/-/misc-browser-6.2.0.tgz" integrity sha512-X6IO46tQFW6EvlI63PI3KDzr7qsjnqHPFZLuQqUqELSxsLvxyzQgUusKfx7woFDrzvP+aZSIDFOZq+k7MKwBrA== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -1049,7 +1106,7 @@ "@lit-protocol/misc@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/misc/-/misc-6.2.0.tgz#15ffa0eba70c9381caa81097e1e6a6ae15cd6333" + resolved "https://registry.npmjs.org/@lit-protocol/misc/-/misc-6.2.0.tgz" integrity sha512-9zYSogDHePvRbmUcOJ9uLytpCSWAH+Ekf64WpGJLuHlUoXau/wadyg5+aGgBxyfiPWvWzFHivGIGrAOZOZjMEA== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -1070,14 +1127,14 @@ "@lit-protocol/nacl@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/nacl/-/nacl-6.2.0.tgz#110c28cbb5d4c517dfea8380bee27ee2723948c3" + resolved "https://registry.npmjs.org/@lit-protocol/nacl/-/nacl-6.2.0.tgz" integrity sha512-fnxEJlRdLmfgGXaLr1SSvIoqIlDVgCrFsMZbJDUX0Pzr6MxcsWRfYO5NA6eYUpo+nkGm8ZBjfj9fZCke++NLUA== dependencies: tslib "1.14.1" "@lit-protocol/sev-snp-utils-sdk@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/sev-snp-utils-sdk/-/sev-snp-utils-sdk-6.2.0.tgz#c14da48f8dd0d3e074d587aa0acc3d7c9339dcd0" + resolved "https://registry.npmjs.org/@lit-protocol/sev-snp-utils-sdk/-/sev-snp-utils-sdk-6.2.0.tgz" integrity sha512-x/K9FM9uGNcbxQJgEd3kGIMW1aNTpCZ6Mdn2KTl7yzDw+1iY/pw/BESxkOiOehIxQG2//Ub2fxIAvxQ16+KHvA== dependencies: cross-fetch "3.1.4" @@ -1085,7 +1142,7 @@ "@lit-protocol/types@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/types/-/types-6.2.0.tgz#efce4a55d7ad1faff68957c135ba6867f755f840" + resolved "https://registry.npmjs.org/@lit-protocol/types/-/types-6.2.0.tgz" integrity sha512-CU6KBlYEpb1algGk6W924v7+mMshJEXMo/hFElo/ctGooCwXPpsQmFxr/eomQiYuHrs8qw5L7J+ADApe4SW8Mg== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -1097,7 +1154,7 @@ "@lit-protocol/uint8arrays@6.2.0": version "6.2.0" - resolved "https://registry.yarnpkg.com/@lit-protocol/uint8arrays/-/uint8arrays-6.2.0.tgz#a72a84f4d817d5109639c98c216f421db1658939" + resolved "https://registry.npmjs.org/@lit-protocol/uint8arrays/-/uint8arrays-6.2.0.tgz" integrity sha512-lN9dnzzk3o8d3b6cpgdtjfSVyOPS20n6BjqoQfb+AcoxXLtBFtM33doa7w8hD29aNCuQNUcPMddW4atTIqLn/Q== dependencies: "@ethersproject/abstract-provider" "5.7.0" @@ -1107,36 +1164,41 @@ siwe "^2.0.5" tslib "1.14.1" -"@noble/curves@1.3.0", "@noble/curves@~1.3.0": +"@noble/curves@~1.3.0", "@noble/curves@1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz" integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== dependencies: "@noble/hashes" "1.3.3" "@noble/ed25519@^1.6.1": version "1.7.3" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" + resolved "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz" integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== -"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" - integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== - -"@noble/hashes@^1", "@noble/hashes@^1.2.0": +"@noble/hashes@^1": version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== "@noble/hashes@^1.1.2": version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz" integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== +"@noble/hashes@^1.2.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/hashes@~1.3.2", "@noble/hashes@1.3.3": + version "1.3.3" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + "@peculiar/asn1-android@^2.1.7": version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-android/-/asn1-android-2.3.6.tgz#20363c23bc5b9a91f7ffd80d7c3842dccff8c20b" + resolved "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.6.tgz" integrity sha512-zkYh4DsiRhiNfg6tWaUuRc+huwlb9XJbmeZLrjTz9v76UK1Ehq3EnfJFED6P3sdznW/nqWe46LoM9JrqxcD58g== dependencies: "@peculiar/asn1-schema" "^2.3.6" @@ -1145,7 +1207,7 @@ "@peculiar/asn1-schema@^2.1.7", "@peculiar/asn1-schema@^2.3.6": version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" + resolved "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz" integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== dependencies: asn1js "^3.0.5" @@ -1154,7 +1216,7 @@ "@peculiar/asn1-x509@^2.1.7": version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.3.6.tgz#e50154a460cdf43da8a41b23ee807a53e0036af0" + resolved "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.6.tgz" integrity sha512-dRwX31R1lcbIdzbztiMvLNTDoGptxdV7HocNx87LfKU0fEWh7fTWJjx4oV+glETSy6heF/hJHB2J4RGB3vVSYg== dependencies: "@peculiar/asn1-schema" "^2.3.6" @@ -1165,12 +1227,12 @@ "@redis/bloom@1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.2.0.tgz#d3fd6d3c0af3ef92f26767b56414a370c7b63b71" + resolved "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz" integrity sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg== -"@redis/client@1.5.6": +"@redis/client@^1.0.0", "@redis/client@1.5.6": version "1.5.6" - resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.5.6.tgz#869cc65718d7d5493ef655a71dc40f3bc64a1b28" + resolved "https://registry.npmjs.org/@redis/client/-/client-1.5.6.tgz" integrity sha512-dFD1S6je+A47Lj22jN/upVU2fj4huR7S9APd7/ziUXsIXDL+11GPYti4Suv5y8FuXaN+0ZG4JF+y1houEJ7ToA== dependencies: cluster-key-slot "1.1.2" @@ -1179,32 +1241,32 @@ "@redis/graph@1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@redis/graph/-/graph-1.1.0.tgz#cc2b82e5141a29ada2cce7d267a6b74baa6dd519" + resolved "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz" integrity sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg== "@redis/json@1.0.4": version "1.0.4" - resolved "https://registry.yarnpkg.com/@redis/json/-/json-1.0.4.tgz#f372b5f93324e6ffb7f16aadcbcb4e5c3d39bda1" + resolved "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz" integrity sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw== "@redis/search@1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.1.2.tgz#6a8f66ba90812d39c2457420f859ce8fbd8f3838" + resolved "https://registry.npmjs.org/@redis/search/-/search-1.1.2.tgz" integrity sha512-/cMfstG/fOh/SsE+4/BQGeuH/JJloeWuH+qJzM8dbxuWvdWibWAOAHHCZTMPhV3xIlH4/cUEIA8OV5QnYpaVoA== "@redis/time-series@1.0.4": version "1.0.4" - resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.4.tgz#af85eb080f6934580e4d3b58046026b6c2b18717" + resolved "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz" integrity sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng== "@scure/base@~1.1.4": version "1.1.6" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz" integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== "@scure/bip32@1.3.3": version "1.3.3" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz" integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== dependencies: "@noble/curves" "~1.3.0" @@ -1213,7 +1275,7 @@ "@scure/bip39@1.2.2": version "1.2.2" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz" integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== dependencies: "@noble/hashes" "~1.3.2" @@ -1221,7 +1283,7 @@ "@simplewebauthn/server@6.2.1": version "6.2.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/server/-/server-6.2.1.tgz#64a9793e5e4ed33d1fd9b53a6a80f33e916fe44e" + resolved "https://registry.npmjs.org/@simplewebauthn/server/-/server-6.2.1.tgz" integrity sha512-0JPHrxhYkYislk60kCoExqyLW0yulxmD+1LAhOo9Oo3BlFFPnGIRgm5QNnDnXsDXX4WDqK8fU+RgPunCnUqcJw== dependencies: "@noble/ed25519" "^1.6.1" @@ -1238,12 +1300,17 @@ "@simplewebauthn/typescript-types@^6.2.1": version "6.2.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-6.2.1.tgz#2a6c9f74f58539ec27f638cf33e658f4a9c57078" + resolved "https://registry.npmjs.org/@simplewebauthn/typescript-types/-/typescript-types-6.2.1.tgz" integrity sha512-qScvkt0nP0Uy/xeeunlXAkJni9wtecsvxwLELSgiWRx/KRVZy1SGDHsKAfQowpIeDmLDyhWxUoN7qUgvgWCiAQ== +"@socket.io/component-emitter@~3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== + "@spruceid/siwe-parser@^2.1.2": version "2.1.2" - resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.2.tgz#3e13e7d3ac0bfdaf109a07342590eb21daee2fc3" + resolved "https://registry.npmjs.org/@spruceid/siwe-parser/-/siwe-parser-2.1.2.tgz" integrity sha512-d/r3S1LwJyMaRAKQ0awmo9whfXeE88Qt00vRj91q5uv5ATtWIQEGJ67Yr5eSZw5zp1/fZCXZYuEckt8lSkereQ== dependencies: "@noble/hashes" "^1.1.2" @@ -1253,19 +1320,19 @@ "@stablelib/binary@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" + resolved "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz" integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== dependencies: "@stablelib/int" "^1.0.1" "@stablelib/int@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" + resolved "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz" integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== "@stablelib/random@^1.0.1": version "1.0.2" - resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" + resolved "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz" integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== dependencies: "@stablelib/binary" "^1.0.1" @@ -1273,75 +1340,87 @@ "@stablelib/wipe@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" + resolved "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== "@tsconfig/node10@^1.0.7": version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== "@types/bn.js@*": version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz" integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== dependencies: "@types/node" "*" "@types/body-parser@*": version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" "@types/node" "*" +"@types/bun@^1.1.5": + version "1.1.6" + resolved "https://registry.npmjs.org/@types/bun/-/bun-1.1.6.tgz" + integrity sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA== + dependencies: + bun-types "1.1.17" + "@types/cbor@^6.0.0": version "6.0.0" - resolved "https://registry.yarnpkg.com/@types/cbor/-/cbor-6.0.0.tgz#ddead015e14ef4463287d40cd92a6297a34dac8d" + resolved "https://registry.npmjs.org/@types/cbor/-/cbor-6.0.0.tgz" integrity sha512-mGQ1lbYOwVti5Xlarn1bTeBZqgY0kstsdjnkoEovgohYKdBjGejHyNGXHdMBeqyQazIv32Jjp33+5pBEaSRy2w== dependencies: cbor "*" "@types/connect@*": version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" +"@types/cookie@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + "@types/cors@^2.8.12": version "2.8.13" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" + resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz" integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== dependencies: "@types/node" "*" "@types/elliptic@^6.4.14": version "6.4.14" - resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.14.tgz#7bbaad60567a588c1f08b10893453e6b9b4de48e" + resolved "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.14.tgz" integrity sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ== dependencies: "@types/bn.js" "*" "@types/express-serve-static-core@^4.17.33": version "4.17.33" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz" integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== dependencies: "@types/node" "*" @@ -1350,7 +1429,7 @@ "@types/express@^4.17.13": version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" @@ -1360,58 +1439,67 @@ "@types/jwk-to-pem@^2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/jwk-to-pem/-/jwk-to-pem-2.0.1.tgz#ba6949f447e02cb7bebf101551e3a4dea5f4fde4" + resolved "https://registry.npmjs.org/@types/jwk-to-pem/-/jwk-to-pem-2.0.1.tgz" integrity sha512-QXmRPhR/LPzvXBHTPfG2BBfMTkNLUD7NyRcPft8m5xFCeANa1BZyLgT0Gw+OxdWx6i1WCpT27EqyggP4UUHMrA== "@types/mime@*": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/node-fetch@^2.5.12": version "2.6.2" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*": - version "18.15.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.8.tgz#222383320e71f9a1397d25c416e9c62d347758e0" - integrity sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q== - -"@types/node@^16.7.4": +"@types/node@*", "@types/node@^16.7.4", "@types/node@>=10.0.0": version "16.18.20" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.20.tgz#8d69761aca4cf40a54dcd5c70ed313f393f8d6b5" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.20.tgz" integrity sha512-9fH66vSJnF563exTu3y1g2IbDz1vCj01Lbqms97r8j0qzfFisT2biypSfybVv/eYrtTB74x9xQTdRU8RyMiRrg== +"@types/node@~20.12.8": + version "20.12.14" + resolved "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz" + integrity sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg== + dependencies: + undici-types "~5.26.4" + "@types/qs@*": version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/serve-static@*": version "1.15.1" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz" integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== dependencies: "@types/mime" "*" "@types/node" "*" +"@types/ws@~8.5.10": + version "8.5.11" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz" + integrity sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w== + dependencies: + "@types/node" "*" + abbrev@1: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.8: +accepts@~1.3.4, accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -1419,29 +1507,29 @@ accepts@~1.3.8: acorn-walk@^8.1.1: version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^8.4.1: version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== aes-js@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" ajv@^8.12.0: version "8.13.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz" integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== dependencies: fast-deep-equal "^3.1.3" @@ -1451,7 +1539,7 @@ ajv@^8.12.0: anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -1459,27 +1547,27 @@ anymatch@~3.1.2: apg-js@^4.3.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/apg-js/-/apg-js-4.4.0.tgz#09dcecab0731fbde233b9f2352fdd2d07e56b2cf" + resolved "https://registry.npmjs.org/apg-js/-/apg-js-4.4.0.tgz" integrity sha512-fefmXFknJmtgtNEXfPwZKYkMFX4Fyeyz+fNF6JWp87biGOPslJbCBVU158zvKRZfHBKnJDy8CMM40oLFGkXT8Q== arg@^4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== arrify@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== asn1.js@^5.3.0: version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" @@ -1489,73 +1577,85 @@ asn1.js@^5.3.0: asn1js@^3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + resolved "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz" integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== dependencies: pvtsutils "^1.3.2" pvutils "^1.1.3" tslib "^2.4.0" +async-mutex@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz" + integrity sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA== + dependencies: + tslib "^2.4.0" + asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== available-typed-arrays@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== dependencies: possible-typed-array-names "^1.0.0" balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base-x@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + resolved "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz" integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== base64-js@^1.3.0: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base64id@~2.0.0, base64id@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + base64url@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + resolved "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== -bech32@1.1.4, bech32@^1.1.4: +bech32@^1.1.4, bech32@1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== bech32@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" + resolved "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz" integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== bignumber.js@^9.0.0, bignumber.js@^9.0.1: version "9.1.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bip174@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" + resolved "https://registry.npmjs.org/bip174/-/bip174-2.1.1.tgz" integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== bitcoinjs-lib@^6.1.0: version "6.1.5" - resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz#3b03509ae7ddd80a440f10fc38c4a97f0a028d8c" + resolved "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz" integrity sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ== dependencies: "@noble/hashes" "^1.2.0" @@ -1565,19 +1665,24 @@ bitcoinjs-lib@^6.1.0: typeforce "^1.11.3" varuint-bitcoin "^1.1.2" -bn.js@^4.0.0, bn.js@^4.11.9: +bn.js@^4.0.0: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^4.11.9: version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== body-parser@1.20.1: version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" @@ -1595,7 +1700,7 @@ body-parser@1.20.1: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -1603,26 +1708,26 @@ brace-expansion@^1.1.7: braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" brorand@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== bs58@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + resolved "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz" integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== dependencies: base-x "^4.0.0" bs58check@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz" integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== dependencies: "@noble/hashes" "^1.2.0" @@ -1630,17 +1735,25 @@ bs58check@^3.0.1: buffer-equal-constant-time@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== +bun-types@1.1.17: + version "1.1.17" + resolved "https://registry.npmjs.org/bun-types/-/bun-types-1.1.17.tgz" + integrity sha512-Z4+OplcSd/YZq7ZsrfD00DKJeCwuNY96a1IDJyR73+cTBaFIS7SC6LhpY/W3AMEXO9iYq5NJ58WAwnwL1p5vKg== + dependencies: + "@types/node" "~20.12.8" + "@types/ws" "~8.5.10" + bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== call-bind@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -1648,7 +1761,7 @@ call-bind@^1.0.0: call-bind@^1.0.2, call-bind@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: es-define-property "^1.0.0" @@ -1659,19 +1772,19 @@ call-bind@^1.0.2, call-bind@^1.0.7: canonicalize@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" + resolved "https://registry.npmjs.org/canonicalize/-/canonicalize-2.0.0.tgz" integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== cbor@*, cbor@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + resolved "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz" integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== dependencies: nofilter "^3.1.0" cbor@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" + resolved "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz" integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== dependencies: bignumber.js "^9.0.1" @@ -1679,7 +1792,7 @@ cbor@^5.1.0: chokidar@^3.5.2: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -1694,51 +1807,56 @@ chokidar@^3.5.2: cluster-key-slot@1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" + resolved "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz" integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + cookie@0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cors@^2.8.5: +cors@^2.8.5, cors@~2.8.5: version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: object-assign "^4" @@ -1746,45 +1864,73 @@ cors@^2.8.5: create-require@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cross-fetch@3.1.4: version "3.1.4" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz" integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== dependencies: node-fetch "2.6.1" date-and-time@^2.4.1: version "2.4.3" - resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.4.3.tgz#116963998a8cecd478955ae053f31a6747a988df" + resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-2.4.3.tgz" integrity sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA== +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.3.2: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@~4.3.1: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +debug@~4.3.2: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +debug@~4.3.4: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + debug@2.6.9: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.3.2: +debug@4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - define-data-property@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: es-define-property "^1.0.0" @@ -1793,44 +1939,44 @@ define-data-property@^1.1.4: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== depd@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== destroy@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== diff@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dotenv@^16.0.3: version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz" integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== -ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: +ecdsa-sig-formatter@^1.0.11, ecdsa-sig-formatter@1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== dependencies: safe-buffer "^5.0.1" ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -elliptic@6.5.4, elliptic@^6.5.4: +elliptic@^6.5.4, elliptic@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" @@ -1843,34 +1989,55 @@ elliptic@6.5.4, elliptic@^6.5.4: encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +engine.io-parser@~5.2.1: + version "5.2.3" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz" + integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== + +engine.io@~6.5.2: + version "6.5.5" + resolved "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz" + integrity sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA== + dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.17.1" + es-define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: get-intrinsic "^1.2.4" es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== ethereum-cryptography@^2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz" integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== dependencies: "@noble/curves" "1.3.0" @@ -1878,9 +2045,9 @@ ethereum-cryptography@^2.1.3: "@scure/bip32" "1.3.3" "@scure/bip39" "1.2.2" -ethers@^5.7.1: +ethers@^5.5.1, ethers@^5.7.1: version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== dependencies: "@ethersproject/abi" "5.7.0" @@ -1914,9 +2081,9 @@ ethers@^5.7.1: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -ethers@~5.6.8: +"ethers@^5.6.8 || ^6.0.8", ethers@~5.6.8: version "5.6.9" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz" integrity sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA== dependencies: "@ethersproject/abi" "5.6.4" @@ -1950,14 +2117,14 @@ ethers@~5.6.8: "@ethersproject/web" "5.6.1" "@ethersproject/wordlists" "5.6.1" -express-rate-limit@^6.6.0: +express-rate-limit@^6, express-rate-limit@^6.6.0: version "6.7.0" - resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-6.7.0.tgz#6aa8a1bd63dfe79702267b3af1161a93afc1d3c2" + resolved "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.7.0.tgz" integrity sha512-vhwIdRoqcYB/72TK3tRZI+0ttS8Ytrk24GfmsxDXK9o9IhHNO5bXRiXQSExPQ4GbaE5tvIS7j1SGrxsuWs+sGA== -express@^4.17.1: +"express@^4 || ^5", express@^4.17.1: version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" @@ -1994,29 +2161,29 @@ express@^4.17.1: extend@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-text-encoding@^1.0.0: version "1.0.6" - resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" + resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz" integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -2029,14 +2196,14 @@ finalhandler@1.2.0: for-each@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" form-data@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" @@ -2045,32 +2212,27 @@ form-data@^3.0.0: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== gaxios@^5.0.0, gaxios@^5.0.1: version "5.1.0" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.1.0.tgz#133b77b45532be71eec72012b7e97c2320b6140a" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-5.1.0.tgz" integrity sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A== dependencies: extend "^3.0.2" @@ -2080,7 +2242,7 @@ gaxios@^5.0.0, gaxios@^5.0.1: gcp-metadata@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.2.0.tgz#b4772e9c5976241f5d3e69c4f446c906d25506ec" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.2.0.tgz" integrity sha512-aFhhvvNycky2QyhG+dcfEdHBF0FRbYcf39s6WNHUDysKSrbJ5vuFbjydxBcmewtXeV248GP8dWT3ByPNxsyHCw== dependencies: gaxios "^5.0.0" @@ -2088,12 +2250,12 @@ gcp-metadata@^5.0.0: generic-pool@3.9.0: version "3.9.0" - resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4" + resolved "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz" integrity sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g== get-intrinsic@^1.0.2: version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: function-bind "^1.1.1" @@ -2102,7 +2264,7 @@ get-intrinsic@^1.0.2: get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: es-errors "^1.3.0" @@ -2113,14 +2275,14 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" google-auth-library@^8.7.0: version "8.7.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.7.0.tgz#e36e255baba4755ce38dded4c50f896cf8515e51" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.7.0.tgz" integrity sha512-1M0NG5VDIvJZEnstHbRdckLZESoJwguinwN8Dhae0j2ZKIQFIV63zxm6Fo6nM4xkgqUr2bbMtV5Dgo+Hy6oo0Q== dependencies: arrify "^2.0.0" @@ -2135,21 +2297,21 @@ google-auth-library@^8.7.0: google-p12-pem@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-4.0.1.tgz#82841798253c65b7dc2a4e5fe9df141db670172a" + resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz" integrity sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ== dependencies: node-forge "^1.3.1" gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" gtoken@^6.1.0: version "6.1.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-6.1.2.tgz#aeb7bdb019ff4c3ba3ac100bbe7b6e74dce0e8bc" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz" integrity sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ== dependencies: gaxios "^5.0.1" @@ -2158,43 +2320,43 @@ gtoken@^6.1.0: has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-property-descriptors@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: es-define-property "^1.0.0" has-proto@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: has-symbols "^1.0.3" has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" @@ -2202,14 +2364,14 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: hasown@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" @@ -2218,7 +2380,7 @@ hmac-drbg@^1.0.1: http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -2229,7 +2391,7 @@ http-errors@2.0.0: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -2237,39 +2399,39 @@ https-proxy-agent@^5.0.0: iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" ignore-by-default@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== immediate@~3.0.5: version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-arguments@^1.0.4: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: call-bind "^1.0.2" @@ -2277,92 +2439,92 @@ is-arguments@^1.0.4: is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-callable@^1.1.3: version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-generator-function@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-typed-array@^1.1.3: version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: which-typed-array "^1.1.14" isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== jose@^4.14.4: version "4.15.5" - resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" + resolved "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz" integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg== js-base64@^3.7.2: version "3.7.5" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.5.tgz#21e24cf6b886f76d6f5f165bfcd69cc55b9e3fca" + resolved "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz" integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA== js-sha3@0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== json-bigint@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + resolved "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz" integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== dependencies: bignumber.js "^9.0.0" json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== jsrsasign@^10.4.0: version "10.7.0" - resolved "https://registry.yarnpkg.com/jsrsasign/-/jsrsasign-10.7.0.tgz#e8727f5cb4585d94d53cee662a1ec721eb013a4e" + resolved "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.7.0.tgz" integrity sha512-D5V2gGpYGtwbAtQHoglTVrpYf7QJuNoPEhaLOsTFONS2jXUl3qyR1hnYrNpASAybqQeiDYA3zGthR0ubgPRoQA== jszip@^3.10.1: version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== dependencies: lie "~3.3.0" @@ -2372,7 +2534,7 @@ jszip@^3.10.1: jwa@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" + resolved "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz" integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== dependencies: buffer-equal-constant-time "1.0.1" @@ -2381,7 +2543,7 @@ jwa@^2.0.0: jwk-to-pem@^2.0.4: version "2.0.5" - resolved "https://registry.yarnpkg.com/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz#151310bcfbcf731adc5ad9f379cbc8b395742906" + resolved "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz" integrity sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A== dependencies: asn1.js "^5.3.0" @@ -2390,7 +2552,7 @@ jwk-to-pem@^2.0.4: jws@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" + resolved "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz" integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== dependencies: jwa "^2.0.0" @@ -2398,139 +2560,139 @@ jws@^4.0.0: libsodium-wrappers@^0.7.6: version "0.7.13" - resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz#83299e06ee1466057ba0e64e532777d2929b90d3" + resolved "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz" integrity sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw== dependencies: libsodium "^0.7.13" libsodium@^0.7.13: version "0.7.13" - resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" + resolved "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz" integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== lie@~3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== dependencies: immediate "~3.0.5" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +ms@^2.1.1, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - multiformats@^11.0.2: version "11.0.2" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-11.0.2.tgz" integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== multiformats@^12.0.1: version "12.1.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz" integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== multiformats@^9.4.2, multiformats@^9.7.1: version "9.9.0" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== negotiator@0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - node-fetch@^2.6.0, node-fetch@^2.6.7: version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz" integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== dependencies: whatwg-url "^5.0.0" +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + node-forge@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== nodemon@^2.0.12: version "2.0.22" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" + resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz" integrity sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== dependencies: chokidar "^3.5.2" @@ -2546,81 +2708,81 @@ nodemon@^2.0.12: nofilter@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz" integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== nofilter@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== nopt@~1.0.10: version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== dependencies: abbrev "1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== object-assign@^4: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.9.0: version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== on-finished@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" -pako@1.0.11, pako@~1.0.2: +pako@~1.0.2, pako@1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== possible-typed-array-names@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz" integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -2628,51 +2790,51 @@ proxy-addr@~2.0.7: pstree.remy@^1.1.8: version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== -punycode@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - punycode@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +punycode@2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + pvtsutils@^1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.2.tgz#9f8570d132cdd3c27ab7d51a2799239bf8d8d5de" + resolved "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz" integrity sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ== dependencies: tslib "^2.4.0" pvutils@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + resolved "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz" integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== qs@6.11.0: version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== rate-limit-redis@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/rate-limit-redis/-/rate-limit-redis-3.0.1.tgz#f12425417e03c1a4b9a7cdfa153113fd649a898c" + resolved "https://registry.npmjs.org/rate-limit-redis/-/rate-limit-redis-3.0.1.tgz" integrity sha512-L6yhOUBrAZ8VEMX9DwlM3X6hfm8yq+gBO4LoOW7+JgmNq59zE7QmLz4v5VnwYPvLeSh/e7PDcrzUI3UumJw1iw== raw-body@2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -2682,7 +2844,7 @@ raw-body@2.5.1: readable-stream@~2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -2695,19 +2857,19 @@ readable-stream@~2.3.6: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" readonly-date@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/readonly-date/-/readonly-date-1.0.0.tgz#5af785464d8c7d7c40b9d738cbde8c646f97dcd9" + resolved "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz" integrity sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ== redis@^4.4.0: version "4.6.5" - resolved "https://registry.yarnpkg.com/redis/-/redis-4.6.5.tgz#f32fbde44429e96f562bb0c9b1db0143ab8cfa4f" + resolved "https://registry.npmjs.org/redis/-/redis-4.6.5.tgz" integrity sha512-O0OWA36gDQbswOdUuAhRL6mTZpHFN525HlgZgDaVNgCJIAZR3ya06NTESb0R+TUZ+BFaDpz6NnnVvoMx9meUFg== dependencies: "@redis/bloom" "1.2.0" @@ -2719,42 +2881,47 @@ redis@^4.4.0: require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== scrypt-js@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== semver@^5.7.1: version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@~7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== send@0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -2773,7 +2940,7 @@ send@0.18.0: serve-static@1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -2783,7 +2950,7 @@ serve-static@1.15.0: set-function-length@^1.2.1: version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: define-data-property "^1.1.4" @@ -2795,17 +2962,17 @@ set-function-length@^1.2.1: setimmediate@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -2814,14 +2981,14 @@ side-channel@^1.0.4: simple-update-notifier@^1.0.7: version "1.1.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" + resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz" integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== dependencies: semver "~7.0.0" siwe-recap@0.0.2-alpha.0: version "0.0.2-alpha.0" - resolved "https://registry.yarnpkg.com/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz#75a0902c10a8ba5b4471f40e4eafb0afb2f8db59" + resolved "https://registry.npmjs.org/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz" integrity sha512-xqFUnvrACWW/Q4s5HQ02avg8IyH2RcgkUzfvN4scYaaHErotLVtTGDZkSS0sn/oNK4MXRt83lTqredsvXgt8iA== dependencies: canonicalize "^2.0.0" @@ -2830,7 +2997,7 @@ siwe-recap@0.0.2-alpha.0: siwe@^2.0.5, siwe@^2.1.4, siwe@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.3.2.tgz#0794ae25f734f3068de0ab093ddd2f7867bc2d67" + resolved "https://registry.npmjs.org/siwe/-/siwe-2.3.2.tgz" integrity sha512-aSf+6+Latyttbj5nMu6GF3doMfv2UYj83hhwZgUF20ky6fTS83uVhkQABdIVnEuS8y1bBdk7p6ltb9SmlhTTlA== dependencies: "@spruceid/siwe-parser" "^2.1.2" @@ -2838,52 +3005,81 @@ siwe@^2.0.5, siwe@^2.1.4, siwe@^2.3.2: uri-js "^4.4.1" valid-url "^1.0.9" +socket.io-adapter@~2.5.2: + version "2.5.5" + resolved "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz" + integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg== + dependencies: + debug "~4.3.4" + ws "~8.17.1" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +socket.io@^4.7.5: + version "4.7.5" + resolved "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz" + integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== + dependencies: + accepts "~1.3.4" + base64id "~2.0.0" + cors "~2.8.5" + debug "~4.3.2" + engine.io "~6.5.2" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.4" + statuses@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" supports-color@^5.5.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== touch@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + resolved "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== dependencies: nopt "~1.0.10" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== ts-node@^10.2.1: version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -2900,39 +3096,39 @@ ts-node@^10.2.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tslib@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" - integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== - tslib@^2.3.0: version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tslib@^2.4.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@1.14.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + tweetnacl-util@^0.15.1: version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + resolved "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== tweetnacl@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -2940,53 +3136,58 @@ type-is@~1.6.18: typeforce@^1.11.3: version "1.18.0" - resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + resolved "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== -typescript@^4.4.2: +typescript@^4.4.2, typescript@>=2.7: version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== uint8arrays@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz" integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== dependencies: multiformats "^9.4.2" uint8arrays@^4.0.3: version "4.0.10" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz" integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== dependencies: multiformats "^12.0.1" undefsafe@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -unpipe@1.0.0, unpipe@~1.0.0: +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== uri-js@^4.4.1: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util@0.12.5: version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" @@ -2997,39 +3198,39 @@ util@0.12.5: utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== v8-compile-cache-lib@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== valid-url@^1.0.9: version "1.0.9" - resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + resolved "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz" integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== varuint-bitcoin@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + resolved "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz" integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== dependencies: safe-buffer "^5.1.1" vary@^1, vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -3037,7 +3238,7 @@ whatwg-url@^5.0.0: which-typed-array@^1.1.14, which-typed-array@^1.1.2: version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== dependencies: available-typed-arrays "^1.0.7" @@ -3046,17 +3247,22 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.2: gopd "^1.0.1" has-tostringtag "^1.0.2" +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + ws@7.4.6: version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -yallist@4.0.0, yallist@^4.0.0: +yallist@^4.0.0, yallist@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yn@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From 55078cd1d8ed11b09413be3159e4240a226b9310 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Tue, 23 Jul 2024 13:29:55 +0530 Subject: [PATCH 10/72] added logs: fetch PKP --- lit.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lit.ts b/lit.ts index 61fcc42..231536a 100644 --- a/lit.ts +++ b/lit.ts @@ -600,6 +600,7 @@ export async function getPKPsForAuthMethod({ } return pkps; } catch (err) { + console.log("Unable to get PKPs for auth method", err); throw new Error("Unable to get PKPs for auth method"); } } else { From 4d896408db69501a142c7ebafdb0aa17da5dd476 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Tue, 23 Jul 2024 23:06:04 +0530 Subject: [PATCH 11/72] fix: mintCost type error --- lit.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lit.ts b/lit.ts index f7bc75b..8dc8351 100644 --- a/lit.ts +++ b/lit.ts @@ -405,7 +405,7 @@ export async function mintPKPV2({ sendPkpToItself, ], txOverrides: { - value: mintCost, + value: mintCost.toString(), gasLimit: adjustedGasLimit }, // this we have to dynamic using round robin From 2076663afde2434fa07b73cc01249e266eca6392 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Wed, 24 Jul 2024 13:34:33 +0530 Subject: [PATCH 12/72] added paymentDb --- config/index.ts | 6 +++++ index.ts | 1 + models/index.ts | 3 +++ package-lock.json | 51 ++++++++++++++++++++++++++++++++++++++++--- package.json | 1 + routes/auth/status.ts | 10 +++++++++ yarn.lock | 28 ++++++++++++++++++++++++ 7 files changed, 97 insertions(+), 3 deletions(-) diff --git a/config/index.ts b/config/index.ts index 4e56dfb..cc68dcd 100644 --- a/config/index.ts +++ b/config/index.ts @@ -21,6 +21,9 @@ const { NETWORK, USE_SOLO_NET, EXPECTED_ORIGINS, + RELAYER_BASE_URL, + PAYER_SECRET, + API_KEY } = process.env; const baseConfig = { @@ -72,6 +75,9 @@ const baseConfig = { network: NETWORK || "cayenne", useSoloNet: USE_SOLO_NET === "true", expectedOrigins: EXPECTED_ORIGINS?.split(",") || ["http://localhost:3000"], + baseUrl: RELAYER_BASE_URL, + apiKey: API_KEY, + payerSecret: PAYER_SECRET }; export default { diff --git a/index.ts b/index.ts index f8ef077..6b8d743 100644 --- a/index.ts +++ b/index.ts @@ -272,6 +272,7 @@ app.get("/auth/status/:requestId", getAuthStatusHandler); // -- Payment Delegation app.post("/register-payer", registerPayerHandler); app.post("/add-users", addPayeeHandler); +app.post("/api/v2/add-users", addPayeeHandler); diff --git a/models/index.ts b/models/index.ts index 1918ca1..59b7007 100644 --- a/models/index.ts +++ b/models/index.ts @@ -144,6 +144,9 @@ export interface Config { cayenneContracts?: Contract; datilDevContracts?: Contract; useSoloNet: boolean; + baseUrl: string, + apiKey:string, + payerSecret: string, network: "serrano" | "cayenne" | "manzano" | "habanero" | "datil-dev" | 'datil-test'; } diff --git a/package-lock.json b/package-lock.json index 0ce1267..e895d37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@lit-protocol/lit-node-client-nodejs": "^6.2.0", "@simplewebauthn/server": "6.2.1", "async-mutex": "^0.5.0", + "axios": "^1.7.2", "base64url": "^3.0.1", "cbor": "^8.1.0", "cors": "^2.8.5", @@ -3883,7 +3884,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, "license": "MIT" }, "node_modules/available-typed-arrays": { @@ -3901,6 +3901,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4225,7 +4248,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -4363,7 +4385,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -9753,6 +9774,25 @@ "node": ">= 0.8" } }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -10696,6 +10736,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", diff --git a/package.json b/package.json index 4e262ce..32b7587 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@lit-protocol/lit-node-client-nodejs": "^6.2.0", "@simplewebauthn/server": "6.2.1", "async-mutex": "^0.5.0", + "axios": "^1.7.2", "base64url": "^3.0.1", "cbor": "^8.1.0", "cors": "^2.8.5", diff --git a/routes/auth/status.ts b/routes/auth/status.ts index 8f0205e..c49dfb0 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -9,6 +9,8 @@ import { GetAuthStatusResponse, } from "../../models"; import { getTokenIdFromTransferEvent } from "../../utils/receipt"; +import axios from "axios"; +import config from "../../config"; const safeBlockConfirmations = parseInt( process.env.SAFE_BLOCK_CONFIRMATIONS || "1", @@ -73,6 +75,14 @@ export async function getAuthStatusHandler( const pkpEthAddress = await getPkpEthAddress(tokenIdFromEvent); const pkpPublicKey = await getPkpPublicKey(tokenIdFromEvent); + const data = JSON.stringify([pkpEthAddress]); + axios.post(`${config.baseUrl}/add-users`, data, { + headers: { + 'api-key': config.apiKey, + 'payer-secret-key': config.payerSecret, + 'Content-Type': 'application/json' + } + }) return res.status(200).json({ status: AuthStatus.Succeeded, pkpTokenId: tokenIdFromEvent, diff --git a/yarn.lock b/yarn.lock index 58750e9..1078eae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1603,6 +1603,15 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +axios@^1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -2194,6 +2203,11 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" @@ -2210,6 +2224,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" @@ -2788,6 +2811,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + pstree.remy@^1.1.8: version "1.1.8" resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" From b984bea979a92f09ace62ea0232f427726786249 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Wed, 24 Jul 2024 15:39:45 +0530 Subject: [PATCH 13/72] wip: datil-test --- lit.ts | 2 +- routes/auth/mintAndFetch.ts | 2 +- routes/webhook/thirdweb.ts | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lit.ts b/lit.ts index f3f1eca..dc833bb 100644 --- a/lit.ts +++ b/lit.ts @@ -26,7 +26,7 @@ const DATIL_DEV_CONTRACT_ADDRESSES = "https://lit-general-worker.getlit.dev/datil-dev/contracts"; const DATIL_TEST_CONTRACT_ADDRESSES = - "https://staging.apis.getlit.dev/datil-test/contracts"; + "https://lit-general-worker.getlit.dev/datil-test/contracts"; async function getContractFromWorker( network: "manzano" | "habanero" | "datil-dev" | "datil-test", diff --git a/routes/auth/mintAndFetch.ts b/routes/auth/mintAndFetch.ts index c2b0ee9..a47cf03 100644 --- a/routes/auth/mintAndFetch.ts +++ b/routes/auth/mintAndFetch.ts @@ -46,7 +46,7 @@ export async function mintNextAndAddAuthMethodsHandler( if (mintTx.queueId) { const queueId = mintTx.queueId; - // mapping queueId with uuid for webhook + // mapping queueId => uuid for webhook await redisClient.hSet("userQueueIdMapping", queueId, uuid); return res.status(200).json({ queueId diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index bd0fd44..35f831f 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -32,6 +32,7 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { // Assuming expiration time is 5 minutes (300 seconds) throw new Error("Request has expired"); } + console.log(req.body.id); const uuid = await redisClient.hGet("userQueueIdMapping",req.body.id); if(!uuid) { throw new Error("Queue ID not found in redis"); From d830a04b6b65a9612bb2f34313398e19166715b5 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Wed, 24 Jul 2024 15:48:42 +0530 Subject: [PATCH 14/72] wip: datil-test --- routes/auth/status.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/auth/status.ts b/routes/auth/status.ts index c49dfb0..d99b814 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -76,7 +76,7 @@ export async function getAuthStatusHandler( const pkpPublicKey = await getPkpPublicKey(tokenIdFromEvent); const data = JSON.stringify([pkpEthAddress]); - axios.post(`${config.baseUrl}/add-users`, data, { + await axios.post(`${config.baseUrl}/add-users`, data, { headers: { 'api-key': config.apiKey, 'payer-secret-key': config.payerSecret, From fcfdf582c86b9139e3894598ba86efbc61306d4a Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Fri, 26 Jul 2024 17:17:15 +0530 Subject: [PATCH 15/72] added sockets in delegate api --- index.ts | 2 ++ lib/thirdweb/ThirdWebLib.ts | 14 ++++++++++++ lit.ts | 42 ++++++++++++++++++++++++++++------ models/index.ts | 1 + routes/auth/status.ts | 10 +++++--- routes/delegate/user.ts | 39 +++++++++++++++++++++++++++---- routes/thirdweb/transaction.ts | 17 ++++++++++++++ 7 files changed, 111 insertions(+), 14 deletions(-) create mode 100644 routes/thirdweb/transaction.ts diff --git a/index.ts b/index.ts index 6b8d743..58b9712 100644 --- a/index.ts +++ b/index.ts @@ -71,6 +71,7 @@ import { registerPayerHandler } from "./routes/delegate/register"; import { addPayeeHandler } from "./routes/delegate/user"; import redisClient from "./lib/redisClient"; import { thirdwebWebHookHandler } from "./routes/webhook/thirdweb"; +import { getTxStatusByQueueId } from "./routes/thirdweb/transaction"; const app = express(); let server = http.createServer(app); @@ -301,6 +302,7 @@ app.get( webAuthnGenerateRegistrationOptionsHandler, ); app.post("/auth/claim", mintClaimedKeyId); +app.get("/transaction/status/:queueId", getTxStatusByQueueId); if (ENABLE_HTTPS) { const host = "0.0.0.0"; diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index d27a0c8..f369eb3 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -249,6 +249,20 @@ export namespace ThirdWebLib { ); } } + + export async function getTxStatusByQueueId(queueId:string) { + try { + const data = await Fetch.get( + `/transaction/status/${queueId}`, + ); + return data; + } catch (e: any) { + throw new Error( + "[ThirdWebLib] Error fetching transactions:", + e, + ); + } + } } export namespace Contract { diff --git a/lit.ts b/lit.ts index ab66b94..5e9ae05 100644 --- a/lit.ts +++ b/lit.ts @@ -865,9 +865,11 @@ export async function queryCapacityCredits(signer: ethers.Wallet) { export async function addPaymentDelegationPayee({ wallet, payeeAddresses, + versionStrategy }: { wallet: ethers.Wallet; payeeAddresses: string[]; + versionStrategy: VersionStrategy }) { if (config.network === "serrano" || config.network === "cayenne") { throw new Error( @@ -910,13 +912,39 @@ export async function addPaymentDelegationPayee({ "PaymentDelegation", wallet, ); - - const tx = await paymentDelegationContract.functions.delegatePaymentsBatch( - payeeAddresses, - ); - console.log("tx hash for delegatePaymentsBatch()", tx.hash); - await tx.wait(); - return tx; + if (versionStrategy === VersionStrategy.DEFAULT) { + const tx = await paymentDelegationContract.functions.delegatePaymentsBatch( + payeeAddresses, + ); + console.log("tx hash for delegatePaymentsBatch()", tx.hash); + await tx.wait(); + return {tx}; + } + if (versionStrategy === VersionStrategy.FORWARD_TO_THIRDWEB) { + const address = await rr.next(); + // const mintCost = await ThirdWebLib.Contract.read({ + // contractAddress: pkpNft.address, + // functionName: pkpNftFunctions.mintCost, + // }); + + const res = await ThirdWebLib.Contract.write({ + contractAddress: paymentDelegationContract.address, + functionName: 'delegatePaymentsBatch', + args: [ + payeeAddresses + ], + // txOverrides: { + // value: mintCost.toString(), + // gasLimit: gasLimit + // }, + // this we have to dynamic using round robin + backendWalletAddress: address, + }); + + console.log("res:", res); + + return res.result; + } } // export function packAuthData({ diff --git a/models/index.ts b/models/index.ts index 4501539..d974d9e 100644 --- a/models/index.ts +++ b/models/index.ts @@ -69,6 +69,7 @@ export interface GetAuthStatusResponse { pkpEthAddress?: string; pkpPublicKey?: string; error?: string; + queueId?: string; } export enum AuthStatus { diff --git a/routes/auth/status.ts b/routes/auth/status.ts index d99b814..b45b473 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -28,6 +28,7 @@ export async function getAuthStatusHandler( ) { // get requestId from params const { requestId } = req.params; + const {uuid} = req.query; // query the chain using requestId as the txHash. const provider = getProvider(); @@ -75,15 +76,18 @@ export async function getAuthStatusHandler( const pkpEthAddress = await getPkpEthAddress(tokenIdFromEvent); const pkpPublicKey = await getPkpPublicKey(tokenIdFromEvent); - const data = JSON.stringify([pkpEthAddress]); - await axios.post(`${config.baseUrl}/add-users`, data, { + const payeeAddresses = JSON.stringify([pkpEthAddress]); + const {data: {queueId}} = await axios.post(`${config.baseUrl}/api/v2/add-users`, { + payeeAddresses, uuid + }, { headers: { 'api-key': config.apiKey, 'payer-secret-key': config.payerSecret, 'Content-Type': 'application/json' } - }) + }); return res.status(200).json({ + queueId: queueId, status: AuthStatus.Succeeded, pkpTokenId: tokenIdFromEvent, pkpEthAddress, diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index 87bd8c0..60600b3 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -1,12 +1,16 @@ import { Request, Response } from 'express'; import { deriveWallet } from './register'; import { addPaymentDelegationPayee } from '../../lit'; +import { getVersionStrategy, VersionStrategy } from '../VersionStrategy'; +import redisClient from '../../lib/redisClient'; export async function addPayeeHandler(req: Request, res: Response) { - const payeeAddresses = req.body as string[]; + const {payeeAddresses, uuid} = req.body; const apiKey = req.header('api-key'); const payerSecret = req.header('payer-secret-key'); + const versionStrategy = getVersionStrategy(req.url); + if (!apiKey || !payerSecret) { res.status(400).json({ success: false, @@ -24,18 +28,45 @@ export async function addPayeeHandler(req: Request, res: Response) { return; } + // version strategy is required + if (!versionStrategy) { + throw new Error("versionStrategy is required"); + } + + // must contain the value in the VersionStrategy enum + if (!Object.values(VersionStrategy).includes(versionStrategy)) { + throw new Error(`Invalid version strategy. Must be one of: ${Object.values(VersionStrategy).join(", ")}`); + } + const wallet = await deriveWallet(apiKey, payerSecret); let error: string | boolean = false; try { - const tx = await addPaymentDelegationPayee({ + const res = await addPaymentDelegationPayee({ wallet, - payeeAddresses + payeeAddresses, + versionStrategy }); - if (!tx) { + if (!res.tx) { throw new Error('Failed to add payee: delegation transaction failed'); } + if (res.tx) { + const source = 'lit-relayer'; + console.info("Minted PKP", { + requestId: res.tx, + source, + }); + } + + if (res.queueId) { + const queueId = res.queueId; + // mapping queueId => uuid for webhook + await redisClient.hSet("userQueueIdMapping", queueId, uuid); + return res.status(200).send({ + queueId + }); + } } catch (err) { console.error('Failed to add payee', err); error = (err as Error).toString(); diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts new file mode 100644 index 0000000..2967059 --- /dev/null +++ b/routes/thirdweb/transaction.ts @@ -0,0 +1,17 @@ +import { ThirdWebLib } from "../../lib/thirdweb/ThirdWebLib"; +import { Request } from "express"; +import { Response } from "express-serve-static-core"; + +export async function getTxStatusByQueueId( + req: Request, + res: Response, +) { + const { queueId } = req.params || req.query; + try { + const data = await ThirdWebLib.Action.getTxStatusByQueueId(queueId); + res.status(200).send({data}); + }catch(err: any){ + console.log(err) + res.status(500).send({success: false, error: err.message}); + } +} \ No newline at end of file From 52ff9251ac2ef39200cfe9ad7573d6b9d25138a9 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Fri, 26 Jul 2024 17:51:16 +0530 Subject: [PATCH 16/72] added sockets in delegate api --- routes/delegate/user.ts | 53 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index 60600b3..a0002d7 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -5,7 +5,7 @@ import { getVersionStrategy, VersionStrategy } from '../VersionStrategy'; import redisClient from '../../lib/redisClient'; export async function addPayeeHandler(req: Request, res: Response) { - const {payeeAddresses, uuid} = req.body; + const { payeeAddresses, uuid } = req.body; const apiKey = req.header('api-key'); const payerSecret = req.header('payer-secret-key'); @@ -29,44 +29,43 @@ export async function addPayeeHandler(req: Request, res: Response) { } // version strategy is required - if (!versionStrategy) { - throw new Error("versionStrategy is required"); - } + if (!versionStrategy) { + throw new Error("versionStrategy is required"); + } - // must contain the value in the VersionStrategy enum - if (!Object.values(VersionStrategy).includes(versionStrategy)) { - throw new Error(`Invalid version strategy. Must be one of: ${Object.values(VersionStrategy).join(", ")}`); - } + // must contain the value in the VersionStrategy enum + if (!Object.values(VersionStrategy).includes(versionStrategy)) { + throw new Error(`Invalid version strategy. Must be one of: ${Object.values(VersionStrategy).join(", ")}`); + } const wallet = await deriveWallet(apiKey, payerSecret); let error: string | boolean = false; try { - const res = await addPaymentDelegationPayee({ + const data = await addPaymentDelegationPayee({ wallet, payeeAddresses, versionStrategy }); + if (data.tx) { + const source = 'lit-relayer'; + console.info("Minted PKP", { + requestId: data.tx, + source, + }); + } - if (!res.tx) { - throw new Error('Failed to add payee: delegation transaction failed'); + if (data.queueId) { + const queueId = data.queueId; + // mapping queueId => uuid for webhook + await redisClient.hSet("userQueueIdMapping", queueId, uuid); + return res.status(200).send({ + queueId + }); } - if (res.tx) { - const source = 'lit-relayer'; - console.info("Minted PKP", { - requestId: res.tx, - source, - }); - } - - if (res.queueId) { - const queueId = res.queueId; - // mapping queueId => uuid for webhook - await redisClient.hSet("userQueueIdMapping", queueId, uuid); - return res.status(200).send({ - queueId - }); - } + + throw new Error('Failed to add payee: delegation transaction failed'); + } catch (err) { console.error('Failed to add payee', err); error = (err as Error).toString(); From 7af53b86423c08f685de5985a9a519baad24c863 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Fri, 26 Jul 2024 18:42:54 +0530 Subject: [PATCH 17/72] fix: delegate user --- routes/auth/status.ts | 5 +++-- routes/delegate/user.ts | 14 +++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/routes/auth/status.ts b/routes/auth/status.ts index b45b473..cf634b8 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -75,8 +75,8 @@ export async function getAuthStatusHandler( try { const pkpEthAddress = await getPkpEthAddress(tokenIdFromEvent); const pkpPublicKey = await getPkpPublicKey(tokenIdFromEvent); - const payeeAddresses = JSON.stringify([pkpEthAddress]); + console.log("tooooo...."); const {data: {queueId}} = await axios.post(`${config.baseUrl}/api/v2/add-users`, { payeeAddresses, uuid }, { @@ -93,11 +93,12 @@ export async function getAuthStatusHandler( pkpEthAddress, pkpPublicKey, }); - } catch (err) { + } catch (err:any) { console.error("Error fetching PKP information", { tokenIdFromEvent, err, }); + console.log(err.response.data) return res.status(500).json({ error: "Unable to fetch PKP information", }); diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index a0002d7..32e4ebf 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -5,11 +5,13 @@ import { getVersionStrategy, VersionStrategy } from '../VersionStrategy'; import redisClient from '../../lib/redisClient'; export async function addPayeeHandler(req: Request, res: Response) { - const { payeeAddresses, uuid } = req.body; + console.log("helopooo") + let { payeeAddresses, uuid } = req.body; const apiKey = req.header('api-key'); const payerSecret = req.header('payer-secret-key'); const versionStrategy = getVersionStrategy(req.url); + console.log("addPaymentDelegationPayee...0"); if (!apiKey || !payerSecret) { res.status(400).json({ @@ -19,11 +21,16 @@ export async function addPayeeHandler(req: Request, res: Response) { return; } - + payeeAddresses = JSON.parse(payeeAddresses); + console.log("addPaymentDelegationPayee...1"); + console.log(payeeAddresses); + console.log(!payeeAddresses); + console.log(!Array.isArray(payeeAddresses)); + console.log(payeeAddresses.length < 1); if (!payeeAddresses || !Array.isArray(payeeAddresses) || payeeAddresses.length < 1) { res.status(400).json({ success: false, - error: 'Missing or invalid payee addresses' + error: 'Missing or invalid payee addresses!' }); return; } @@ -42,6 +49,7 @@ export async function addPayeeHandler(req: Request, res: Response) { let error: string | boolean = false; try { + console.log("addPaymentDelegationPayee..."); const data = await addPaymentDelegationPayee({ wallet, payeeAddresses, From 43aee62cef8d738e20982f7ada68448878a29a28 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Fri, 26 Jul 2024 21:28:40 +0530 Subject: [PATCH 18/72] remove delete redis data logic for debug --- index.ts | 2 +- routes/webhook/thirdweb.ts | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/index.ts b/index.ts index 58b9712..a55d922 100644 --- a/index.ts +++ b/index.ts @@ -107,7 +107,7 @@ io.on('connection', (socket) => { for (const key of keys) { const socketId = await redisClient.hGet("userSocketMapping", key); if (socketId === socket.id) { - await redisClient.hDel("userSocketMapping", key); + // await redisClient.hDel("userSocketMapping", key); console.log(`🔴 User ${key} disconnected`); break; } diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index 35f831f..4a1435b 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -32,13 +32,15 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { // Assuming expiration time is 5 minutes (300 seconds) throw new Error("Request has expired"); } - console.log(req.body.id); + console.log("queueId", req.body.id); const uuid = await redisClient.hGet("userQueueIdMapping",req.body.id); + console.log("uuid", uuid); if(!uuid) { throw new Error("Queue ID not found in redis"); } - await redisClient.hDel("userQueueIdMapping", req.body.id); + //await redisClient.hDel("userQueueIdMapping", req.body.id); const socketId = await redisClient.hGet("userSocketMapping",uuid); + console.log("socketId", socketId); if(!socketId) { throw new Error("socketId not found in redis"); } From 50e487a0febc562a97fdc6661560d710e8b1187d Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Fri, 26 Jul 2024 23:07:49 +0530 Subject: [PATCH 19/72] remove delete redis data logic for debug --- routes/auth/status.ts | 2 +- routes/delegate/user.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/routes/auth/status.ts b/routes/auth/status.ts index cf634b8..6c1c8ce 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -29,7 +29,7 @@ export async function getAuthStatusHandler( // get requestId from params const { requestId } = req.params; const {uuid} = req.query; - + console.log("uuid", uuid); // query the chain using requestId as the txHash. const provider = getProvider(); diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index 32e4ebf..4ce1754 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -66,6 +66,8 @@ export async function addPayeeHandler(req: Request, res: Response) { if (data.queueId) { const queueId = data.queueId; // mapping queueId => uuid for webhook + console.log("in delegate uuid", uuid); + console.log("queueId in delegate uuid", queueId); await redisClient.hSet("userQueueIdMapping", queueId, uuid); return res.status(200).send({ queueId From 4c9929135baa1b3741d43061831482fef4e476f9 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Fri, 26 Jul 2024 23:52:19 +0530 Subject: [PATCH 20/72] update rate limit --- routes/middlewares/limiter.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/routes/middlewares/limiter.ts b/routes/middlewares/limiter.ts index b90e25d..0421ad2 100644 --- a/routes/middlewares/limiter.ts +++ b/routes/middlewares/limiter.ts @@ -7,8 +7,10 @@ const limiter = rateLimit({ store: new RedisStore({ sendCommand: (...args: string[]) => redisClient.sendCommand(args), }), - max: 10, // Limit each IP to 10 requests per `window` - windowMs: 10 * 1000, // 10s + max: 1000, // Limit each IP to 1000 requests per `window` + windowMs: 1000, // 1 second + standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers + legacyHeaders: false, // Disable the `X-RateLimit-*` headers }); export default limiter; From 4920d8a5ea1fc22c398fbebc9bb0c85adb0e64c4 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Mon, 29 Jul 2024 03:16:42 +0530 Subject: [PATCH 21/72] feat: get transaction data by queueId --- routes/thirdweb/transaction.ts | 25 +++++++++++++++++++------ routes/webhook/thirdweb.ts | 4 ++-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index 2967059..97961cf 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -8,10 +8,23 @@ export async function getTxStatusByQueueId( ) { const { queueId } = req.params || req.query; try { - const data = await ThirdWebLib.Action.getTxStatusByQueueId(queueId); - res.status(200).send({data}); - }catch(err: any){ - console.log(err) - res.status(500).send({success: false, error: err.message}); - } + let data; + for (let i = 0; i < 100; i++) { + data = await ThirdWebLib.Action.getTxStatusByQueueId(queueId); + if (data.status === 'sent') { + console.log("transactionHash", data.transactionHash); + console.log('i', i); + break; + } + } + + if (data.status !== 'sent') { + return res.status(408).send({ success: false, error: 'Transaction not sent within expected time' }); + } + + res.status(200).send({ ...data }); + } catch (err:any) { + console.log(err); + res.status(500).send({ success: false, error: err.message }); + } } \ No newline at end of file diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index 4a1435b..f6f1852 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -44,8 +44,8 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { if(!socketId) { throw new Error("socketId not found in redis"); } - io.to(socketId).emit('transactionComplete', {requestId: req.body.transactionHash, queueId: req.body.id}); - res.status(200).send({requestId: req.body.transactionHash, queueId: req.body.id}); + io.to(socketId).emit('transactionComplete', {txHash: req.body.transactionHash, queueId: req.body.id}); + res.status(200).send({txHash: req.body.transactionHash, queueId: req.body.id}); } catch (err) { console.log(err); From 321d4a620e47a8b54cac3bc716e3b3a4d0a2d871 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Mon, 5 Aug 2024 00:48:32 +0530 Subject: [PATCH 22/72] added logic for minting capacity credit to thirdweb wallets --- eventEmitter.ts | 24 +++++++++ index.ts | 6 +++ lib/thirdweb/ThirdWebLib.ts | 4 +- lit.ts | 97 +++++++++++++++++++++++++++---------- routes/delegate/user.ts | 6 ++- routes/webhook/thirdweb.ts | 4 ++ 6 files changed, 111 insertions(+), 30 deletions(-) create mode 100644 eventEmitter.ts diff --git a/eventEmitter.ts b/eventEmitter.ts new file mode 100644 index 0000000..1c56652 --- /dev/null +++ b/eventEmitter.ts @@ -0,0 +1,24 @@ +// eventEmitter.js +import EventEmitter from 'events'; + +export const eventEmitter = new EventEmitter(); + + +// waitForEvent.js +export const waitForEvent = (emitter: EventEmitter, eventName: string, timeout: number, queueId: string) => { + return new Promise((resolve, reject) => { + const timer = setTimeout(() => { + emitter.removeListener(eventName, onEvent); + reject(new Error(`Timeout: Did not receive ${eventName} within ${timeout}ms`)); + }, timeout); + + const onEvent = (data: any) => { + clearTimeout(timer); + if (data.queueId === queueId) { + resolve(data); + } + }; + + emitter.once(eventName, onEvent); + }); +}; diff --git a/index.ts b/index.ts index a55d922..35de7db 100644 --- a/index.ts +++ b/index.ts @@ -13,6 +13,7 @@ import base64url from "base64url"; import dotenv from "dotenv"; import express from "express"; import { Server as SocketIOServer } from 'socket.io'; +// import {eventEmitter} from './eventEmitter'; dotenv.config(); @@ -73,9 +74,14 @@ import redisClient from "./lib/redisClient"; import { thirdwebWebHookHandler } from "./routes/webhook/thirdweb"; import { getTxStatusByQueueId } from "./routes/thirdweb/transaction"; + + const app = express(); let server = http.createServer(app); +// Store eventEmitter in app.locals +// app.locals.eventEmitter = eventEmitter; + const { ENABLE_CONFORMANCE, ENABLE_HTTPS, RP_ID = "localhost" } = process.env; app.use(express.static("./public/")); diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index f369eb3..e34a5af 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -308,8 +308,8 @@ export namespace ThirdWebLib { functionName: string; args: any[]; txOverrides?:{ - value: number, - gasLimit: string | BigNumber + value?: number, + gasLimit?: string | BigNumber } backendWalletAddress: string; options?: { diff --git a/lit.ts b/lit.ts index 5e9ae05..86996d1 100644 --- a/lit.ts +++ b/lit.ts @@ -32,6 +32,8 @@ import { manzano, } from "@lit-protocol/contracts"; import { VersionStrategy } from "./routes/VersionStrategy"; +import { EventEmitter } from "stream"; +// import { waitForEvent } from "./eventEmitter"; function getContractFromWorker( network: LIT_NETWORK_VALUES, @@ -732,8 +734,14 @@ export async function sendLitTokens( export async function mintCapacityCredits({ signer, + versionStrategy, + backendWalletAddress, + eventEmitter }: { signer: ethers.Wallet; + versionStrategy?: VersionStrategy, + backendWalletAddress?:string, + eventEmitter?: EventEmitter }) { if (config.network === "serrano" || config.network === "cayenne") { throw new Error( @@ -752,7 +760,7 @@ export async function mintCapacityCredits({ } // set the expiration to midnight, 15 days from now - const timestamp = Date.now() + 15 * 24 * 60 * 60 * 1000; + const timestamp = Date.now() + 28 * 24 * 60 * 60 * 1000; const futureDate = new Date(timestamp); futureDate.setUTCHours(0, 0, 0, 0); @@ -776,15 +784,39 @@ export async function mintCapacityCredits({ return; } - const tx = await contract.functions.mint(expires, { - value: cost.toString(), - }); - console.log("mint tx hash: ", tx.hash); - const res = await tx.wait(); - const tokenIdFromEvent = res.events[0].topics[3]; - - return { tx, capacityTokenId: tokenIdFromEvent }; + if(versionStrategy === VersionStrategy.FORWARD_TO_THIRDWEB) { + console.log("mintCapacityCredits: FORWARD_TO_THIRDWEB"); + if(!backendWalletAddress) { + throw new Error("backendWalletAddress is required for FORWARD_TO_THIRDWEB"); + } + // if(!eventEmitter) { + // throw new Error("eventEmitter is required for FORWARD_TO_THIRDWEB"); + // } + const response = await ThirdWebLib.Contract.write({ + contractAddress: contract.address, + functionName: 'mint', + args: [expires], + txOverrides: { + value: cost.toString() + }, + backendWalletAddress: backendWalletAddress + }); + const {queueId} = response.result; + // const data = await waitForEvent(eventEmitter, 'thirdwebTxSent', 5000, queueId); + // console.log("data from EVENT", data); + return response; + }else { + const tx = await contract.functions.mint(expires, { + value: cost.toString(), + }); + console.log("mint tx hash: ", tx.hash); + const res = await tx.wait(); + + const tokenIdFromEvent = res.events[0].topics[3]; + + return { tx, capacityTokenId: tokenIdFromEvent }; + } } function normalizeTokenURI(tokenURI: string) { @@ -809,8 +841,8 @@ function normalizeCapacity(capacity: any) { async function queryCapacityCredit( contract: ethers.Contract, - owner: string, tokenIndexForUser: number, + owner?: string, ) { console.log( `Querying capacity credit for owner ${owner} at index ${tokenIndexForUser}`, @@ -842,7 +874,7 @@ async function queryCapacityCredit( } } -export async function queryCapacityCredits(signer: ethers.Wallet) { +export async function queryCapacityCredits(signer: ethers.Wallet | undefined, address?: string) { if (config.network === "serrano" || config.network === "cayenne") { throw new Error( `Payment delegation is not available on ${config.network}`, @@ -853,11 +885,11 @@ export async function queryCapacityCredits(signer: ethers.Wallet) { config.network, "RateLimitNFT", ); - const count = parseInt(await contract.functions.balanceOf(signer.address)); + const count = parseInt(await contract.functions.balanceOf(signer?.address || address)); return Promise.all( [...new Array(count)].map((_, i) => - queryCapacityCredit(contract, signer.address, i), + queryCapacityCredit(contract, i, signer?.address || address,), ), ) as Promise; } @@ -865,20 +897,28 @@ export async function queryCapacityCredits(signer: ethers.Wallet) { export async function addPaymentDelegationPayee({ wallet, payeeAddresses, - versionStrategy + versionStrategy, + eventEmitter }: { wallet: ethers.Wallet; payeeAddresses: string[]; - versionStrategy: VersionStrategy + versionStrategy: VersionStrategy, + eventEmitter?: EventEmitter }) { + const backendWalletAddress = await rr.next(); if (config.network === "serrano" || config.network === "cayenne") { throw new Error( `Payment delegation is not available on ${config.network}`, ); } - + let capacityTokens: CapacityToken[] = []; + if(versionStrategy === VersionStrategy.DEFAULT) { + capacityTokens = await queryCapacityCredits(wallet); + } else { + console.log("queryCapacityCredits", backendWalletAddress); + capacityTokens = await queryCapacityCredits(undefined, backendWalletAddress); + } // get the first token that is not expired - const capacityTokens: CapacityToken[] = await queryCapacityCredits(wallet); console.log("Got capacity tokens", JSON.stringify(capacityTokens, null, 2)); const capacityToken = capacityTokens.find((token) => !token.isExpired); @@ -886,7 +926,7 @@ export async function addPaymentDelegationPayee({ if (!capacityToken) { // mint a new token - const minted = await mintCapacityCredits({ signer: wallet }); + const minted = await mintCapacityCredits({ signer: wallet, versionStrategy,backendWalletAddress: backendWalletAddress,eventEmitter }); if (!minted) { throw new Error("Failed to mint capacity credits"); @@ -895,15 +935,16 @@ export async function addPaymentDelegationPayee({ console.log( "No capacity token found, minted a new one:", minted.capacityTokenId, + minted ); tokenId = minted.capacityTokenId; } else { tokenId = capacityToken.tokenId; } - if (!tokenId) { - throw new Error("Failed to get ID for capacity token"); - } + // if (!tokenId) { + // throw new Error("Failed to get ID for capacity token"); + // } // add payer in contract const provider = getProvider(); @@ -921,12 +962,14 @@ export async function addPaymentDelegationPayee({ return {tx}; } if (versionStrategy === VersionStrategy.FORWARD_TO_THIRDWEB) { - const address = await rr.next(); // const mintCost = await ThirdWebLib.Contract.read({ // contractAddress: pkpNft.address, // functionName: pkpNftFunctions.mintCost, // }); - + // if(!eventEmitter){ + // throw new Error("Event emitter is required for forward to thirdweb strategy"); + // } + console.log("FORWARD_TO_THIRDWEB", backendWalletAddress); const res = await ThirdWebLib.Contract.write({ contractAddress: paymentDelegationContract.address, functionName: 'delegatePaymentsBatch', @@ -938,10 +981,12 @@ export async function addPaymentDelegationPayee({ // gasLimit: gasLimit // }, // this we have to dynamic using round robin - backendWalletAddress: address, + backendWalletAddress: backendWalletAddress, }); - - console.log("res:", res); + // const {queueId} = res.result; + // const data = await waitForEvent(eventEmitter, 'thirdwebTxSent', 5000, queueId); + + // console.log("res:", res); return res.result; } diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index 4ce1754..2299e0a 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -8,6 +8,7 @@ export async function addPayeeHandler(req: Request, res: Response) { console.log("helopooo") let { payeeAddresses, uuid } = req.body; const apiKey = req.header('api-key'); + // const eventEmitter = req.app.locals.eventEmitter; const payerSecret = req.header('payer-secret-key'); const versionStrategy = getVersionStrategy(req.url); @@ -21,7 +22,7 @@ export async function addPayeeHandler(req: Request, res: Response) { return; } - payeeAddresses = JSON.parse(payeeAddresses); + // payeeAddresses = JSON.parse(payeeAddresses); console.log("addPaymentDelegationPayee...1"); console.log(payeeAddresses); console.log(!payeeAddresses); @@ -53,7 +54,8 @@ export async function addPayeeHandler(req: Request, res: Response) { const data = await addPaymentDelegationPayee({ wallet, payeeAddresses, - versionStrategy + versionStrategy, + // eventEmitter }); if (data.tx) { const source = 'lit-relayer'; diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index f6f1852..ef4bdd3 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -6,6 +6,7 @@ import { io } from '../..'; const { WEBHOOK_SECRET } = process.env; export async function thirdwebWebHookHandler(req: Request, res: Response) { try { + // const eventEmitter = req.app.locals.eventEmitter; console.log("webhook"); if (!WEBHOOK_SECRET) { throw new Error("WEBHOOK_SECRET Required"); @@ -32,6 +33,9 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { // Assuming expiration time is 5 minutes (300 seconds) throw new Error("Request has expired"); } + + // eventEmitter.emit('thirdwebTxSent', { txHash: req.body.transactionHash, queueId: req.body.id }); + console.log("queueId", req.body.id); const uuid = await redisClient.hGet("userQueueIdMapping",req.body.id); console.log("uuid", uuid); From 78baf0ff41d767ce0069c4ea33fa83e1b3756f45 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Mon, 5 Aug 2024 00:58:55 +0530 Subject: [PATCH 23/72] added logic for minting capacity credit to thirdweb wallets --- routes/delegate/user.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index 2299e0a..4d39940 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -28,6 +28,9 @@ export async function addPayeeHandler(req: Request, res: Response) { console.log(!payeeAddresses); console.log(!Array.isArray(payeeAddresses)); console.log(payeeAddresses.length < 1); + if(typeof payeeAddresses === 'string') { + payeeAddresses = JSON.parse(payeeAddresses); + } if (!payeeAddresses || !Array.isArray(payeeAddresses) || payeeAddresses.length < 1) { res.status(400).json({ success: false, From f8c32eccc17a44448b9c194dfb2f9a591408d447 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Mon, 5 Aug 2024 02:01:22 +0530 Subject: [PATCH 24/72] update thirdweb wallet list --- lib/thirdweb/ThirdWebLib.spec.ts | 145 +++++---- lib/thirdweb/ThirdWebLib.ts | 11 +- utils/thirdweb/constants.ts | 513 ++++++++++++++++++++++++++++++- 3 files changed, 589 insertions(+), 80 deletions(-) diff --git a/lib/thirdweb/ThirdWebLib.spec.ts b/lib/thirdweb/ThirdWebLib.spec.ts index face900..76c6959 100644 --- a/lib/thirdweb/ThirdWebLib.spec.ts +++ b/lib/thirdweb/ThirdWebLib.spec.ts @@ -1,40 +1,50 @@ import { expect, test } from "bun:test"; import { ThirdWebLib } from "./ThirdWebLib"; import { ethers } from "ethers"; +import fs from "fs"; // bun test --test-name-pattern 'getAllWallets' -test("getAllWallets", async () => { - const wallets = await ThirdWebLib.Action.getAllWallets({ limit: 500 }); - console.log("total wallets:", wallets.length); +// test("getAllWallets", async () => { +// const wallets = await ThirdWebLib.Action.getAllWallets({ limit: 500 }); +// console.log("total wallets:", wallets.length); - expect(wallets.length).toBeGreaterThan(0); -}); +// expect(wallets.length).toBeGreaterThan(0); +// }); // bun test --test-name-pattern 'createWallet' -test("createWallet", async () => { - const res = await ThirdWebLib.Action.createWallet("test-wallet"); - console.log(res); +// test("createWallet", async () => { +// const res = await ThirdWebLib.Action.createWallet("test-wallet"); +// console.log(res); - expect(res).toHaveProperty("walletAddress"); - expect(res.status).toBe("success"); -}); +// expect(res).toHaveProperty("walletAddress"); +// expect(res.status).toBe("success"); +// }); // bun test --test-name-pattern 'create 500 wallets' --timeout 300000 test("create 500 wallets", async () => { const totalWallets = 500; const currentTotalWallets = await ThirdWebLib.Action.getAllWallets(); - - const neededWallets = totalWallets - currentTotalWallets.length; - console.log("neededWallets:", neededWallets); - - for (let i = 0; i < neededWallets; i++) { - const label = `wallet-${neededWallets - i}`; - const res = await ThirdWebLib.Action.createWallet(label); - console.log(`${label}:`, res); - - expect(res).toHaveProperty("walletAddress"); - expect(res.status).toBe("success"); - } + console.log("currentTotalWallets",currentTotalWallets.length); + const addresses = currentTotalWallets.map(currentTotalWallet => currentTotalWallet.address); + fs.writeFile('wallet_addresses.json', JSON.stringify(addresses, null, 2), (err) => { + if (err) { + console.error('Error writing file:', err); + } else { + console.log('Addresses saved to wallet_addresses.json'); + } + }); + // const neededWallets = totalWallets - currentTotalWallets.length; + // console.log("neededWallets:", neededWallets); + + + // for (let i = currentTotalWallets.length + 1; i <= neededWallets; i++) { + // const label = `testing-wallet-${i}`; + // const res = await ThirdWebLib.Action.createWallet(label); + // console.log(`${label}:`, res); + + // expect(res).toHaveProperty("walletAddress"); + // expect(res.status).toBe("success"); + // } }); // Used this to create a master wallet address @@ -71,7 +81,8 @@ test("maintainBalances", async () => { const queueIds = await ThirdWebLib.Action.maintainBalances({ minimumBalance: "0.001", - funderAddress: masterAddress, + funderAddress: '0xbF678cB0898856da855796C700107d75Efe5f534', + // maxWallets: 1 }); const funded = queueIds.filter((q) => q.queueId === ""); @@ -80,56 +91,56 @@ test("maintainBalances", async () => { console.log("funding:", funding); }); -// bun test --test-name-pattern 'get all transactions' -test("get all transactions", async () => { - const queuedTxs = await ThirdWebLib.Action.getAllTransactions(); - const totalTxs = queuedTxs.length; - const totalQueueingTxs = queuedTxs.filter( - (tx: any) => tx.status === "queued", - ).length; - console.log("totalTxs:", totalTxs); - console.log("totalQueueingTxs:", totalQueueingTxs); -}); +// // bun test --test-name-pattern 'get all transactions' +// test("get all transactions", async () => { +// const queuedTxs = await ThirdWebLib.Action.getAllTransactions(); +// const totalTxs = queuedTxs.length; +// const totalQueueingTxs = queuedTxs.filter( +// (tx: any) => tx.status === "queued", +// ).length; +// console.log("totalTxs:", totalTxs); +// console.log("totalQueueingTxs:", totalQueueingTxs); +// }); -// bun test --test-name-pattern 'get balances' --timeout 300000 -test("get balances", async () => { - const wallets = await ThirdWebLib.Action.getAllWallets({ - limit: 500, - }); +// // bun test --test-name-pattern 'get balances' --timeout 300000 +// test("get balances", async () => { +// const wallets = await ThirdWebLib.Action.getAllWallets({ +// limit: 500, +// }); - const balancePromises = wallets.map((wallet) => { - return ThirdWebLib.Action.getBalance(wallet.address); - }); +// const balancePromises = wallets.map((wallet) => { +// return ThirdWebLib.Action.getBalance(wallet.address); +// }); - const balances = await Promise.all(balancePromises); +// const balances = await Promise.all(balancePromises); - // check how many wallets have a balance of 0 - const zeroBalances = balances.filter((balance) => { - return parseInt(balance.value) <= 0; - }).length; +// // check how many wallets have a balance of 0 +// const zeroBalances = balances.filter((balance) => { +// return parseInt(balance.value) <= 0; +// }).length; - const greaterThanZeroBalances = balances.filter((balance) => { - return parseInt(balance.value) > 0; - }); +// const greaterThanZeroBalances = balances.filter((balance) => { +// return parseInt(balance.value) > 0; +// }); - console.log("zeroBalances:", zeroBalances); - console.log("greaterThanZeroBalances:", greaterThanZeroBalances.length); -}); +// console.log("zeroBalances:", zeroBalances); +// console.log("greaterThanZeroBalances:", greaterThanZeroBalances.length); +// }); -// bun test --test-name-pattern 'read contract' --timeout 300000 -test("read contract", async () => { - const read = await ThirdWebLib.Fetch.get( - "/contract/lit-protocol/0x3c3ad2d238757Ea4AF87A8624c716B11455c1F9A/read?functionName=mintCost", - ); +// // bun test --test-name-pattern 'read contract' --timeout 300000 +// test("read contract", async () => { +// const read = await ThirdWebLib.Fetch.get( +// "/contract/lit-protocol/0x3c3ad2d238757Ea4AF87A8624c716B11455c1F9A/read?functionName=mintCost", +// ); - console.log("read:", read); -}); +// console.log("read:", read); +// }); -// bun test --test-name-pattern 'read lit' --timeout 300000 -test("read lit", async () => { - const read = await ThirdWebLib.Fetch.get( - "/contract/lit-protocol", - ); +// // bun test --test-name-pattern 'read lit' --timeout 300000 +// test("read lit", async () => { +// const read = await ThirdWebLib.Fetch.get( +// "/contract/lit-protocol", +// ); - console.log("read:", read); -}); +// console.log("read:", read); +// }); diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index e34a5af..6743502 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -139,6 +139,7 @@ export namespace ThirdWebLib { ); return balance; } catch (e: any) { + console.log(e); throw new Error("[ThirdWebLib] Error getting balance:", e); } } @@ -161,6 +162,11 @@ export namespace ThirdWebLib { amount: string; }): Promise<{ queueId: string }> { try { + console.log({ + funder, + fundee, + amount, + }); const res = await ThirdWebLib.Fetch.post( `/backend-wallet/${LIT_CHAIN_ID}/send-transaction`, { @@ -172,11 +178,12 @@ export namespace ThirdWebLib { "x-backend-wallet-address": funder, }, ); - + console.log("res",res); return { queueId: res.result.queueId, }; } catch (e: any) { + console.log(e); throw new Error("[ThirdWebLib] Error funding wallet:", e); } } @@ -199,7 +206,7 @@ export namespace ThirdWebLib { maxWallets?: number; }): Promise<{ queueId: string }[]> { const wallets = await ThirdWebLib.Action.getAllWallets({ - limit: maxWallets || 500, + limit: maxWallets || 510, }); // -- get all balances diff --git a/utils/thirdweb/constants.ts b/utils/thirdweb/constants.ts index 17ae56e..aaef3e0 100644 --- a/utils/thirdweb/constants.ts +++ b/utils/thirdweb/constants.ts @@ -1,12 +1,503 @@ export const backendWallets = [ - '0xbF678cB0898856da855796C700107d75Efe5f534', - '0xf402335076Cbd5c58d5dfa61052EC4fD3CeBC1bD', - '0xC5d2EC86a80a4F3A62B7882858FBfe106b891DE0', - '0x6d2a662589947D397b863FbF1b505eFEFB3A37A7', - '0xFBE619E87ca4889540137E0265D69DD2aD886c03', - '0xca28dd602B46c1338aF3889C75FeBa883687E937', - '0x6315646A615F46C6d6B3802D809a6A61A6bF88fa', - '0x0b0a3fd675238C41170f6A7fe5ad04aD3bb20FD8', - '0x827c3b1e5bd37907b65e8687204540ec06bFe95a', - '0x32ecEaE262EB188a6FfA252144D90C4d8D42C001' -] \ No newline at end of file + "0x0012f2df354a8676a68e5f4587bfa80b67948a7a", + "0x00cbf74201f02b3511fd02f81862900e61c525a6", + "0x012c2bce50d6086bf6347cd5b61989be1caf3bdc", + "0x0169106698aa1127dec37d68c23c73284d8b48ae", + "0x01a8b394eb6dd968cf1ce94abbe8473c230e9a00", + "0x02127690a0493c00e35d630f4569ff79350052c8", + "0x029c015702d0252df59905b5348e5b003fcedf8e", + "0x03850f48a8fdaefc626c9225223b4daa0255e76e", + "0x045a076f6513ca141f62503ff709ddcb1a57b114", + "0x046fbd3bf9b965ce5f44e5a87ec7a9ab5ed8e480", + "0x05236739150dbc046891b13e265ff2f4d24ea635", + "0x0546e205b538b906b098440744874cb6881d83b2", + "0x05b6ec5200d2eec6d896f5a1fb6d1e2753ccca7e", + "0x05f30d55ab1e34d74575d0cbf766e36b4e8dd9b5", + "0x06101124d32f92f078ff1d2eda4e8ef97bd1d669", + "0x06a47001da60da83d14d903e0cc30a545516062d", + "0x070c4435eb9afa546a788b531b1c4d1ed3db05e8", + "0x0734fe79a324503d203e6c75970b9e6bc30cae90", + "0x075c55fa60b804e6b2a117f9000690f6ce6fbbea", + "0x07c2b67460c07db63458550964ebca2dee4b92db", + "0x08ff07fd360f70532cd367ec3e2c663f7d63bcd1", + "0x0998a2e09783abc8eabfa3ee9d3bd44a597738e0", + "0x09c657d59f0a69cbf3aaa9079b574b55cd5d19ae", + "0x0aa1bb82c933cc6e0c9c2131b52ee5c23c88fd31", + "0x0acefa81afba562d97e5c66edd4596dcb7a180ab", + "0x0b0a3fd675238c41170f6a7fe5ad04ad3bb20fd8", + "0x0b1453c27dc9602fd17e2b187ff10288ea78bef2", + "0x0b8fc5ebd3a221c058cd84d3f635ff63696642b1", + "0x0bc1afa1933dd178531dd985e989c5626b650b06", + "0x0c1dd41e9e76f78d486d1616240507a891f548cc", + "0x0c77f105c7fcf42abb832f450b40744b34e17a34", + "0x0c850f4a6ab80748f790155757d1abae4371b408", + "0x0d222268c82d5490277a18697a1f52cc6674d3f4", + "0x0d346985e16349bd13f496b397cfb280b0bc4d94", + "0x0edba5a90a7d2c7d1ba314fcea5262fb4f6d81bb", + "0x0f003e327b91e4dceac101d89bb238c3ed38be85", + "0x0f75a3be357a275086a5123d533ea70d65e63eae", + "0x10b753f3244a0276508bd69e3a9bff4fdaa2c5ee", + "0x115e77388024b06af27fa56cce7782bb3c0b1425", + "0x13154c8b02bdc32e06dbe282cc6beced0cdeb978", + "0x13dcab8f57fdbe5241ac09c330c2213976d85ddf", + "0x1440ffb43850c6c6928e9482d1e8342f6eede212", + "0x1479442c5c888a71d9c92d51074775576473e8e5", + "0x14c78a8145d3df87a8b3855c4596e2f8f95970c1", + "0x158687ce1db2bae9a49cb3348a3826504136d123", + "0x159a5a0d08bf97aafb5316ae6dca8459d2799c29", + "0x15b2bcab312c421a6cb6fd4c3f15c990867202aa", + "0x1689b3d047a414fecf8ae98ccf674eed348b298b", + "0x169ac62cab6f7d8afd0ba64ff9620294885a07a8", + "0x16d88dbe5762116d6229547f97eaa85278c12b19", + "0x1792ffdbd12f6e770ff543acb988a6dc386bb6f2", + "0x1864c057b6a72445cdb2efa6e17e1389f9b1d073", + "0x190edcbece40a5fe53a600d8e73491c02f52f5c0", + "0x19c83255df8c29f867d1d1e5b2735bca5b2f9db4", + "0x19df0780d73a4bf37e6826cd8a0184ed92db09fe", + "0x1a120663f2ab24a753fbb70def177d5492e4058b", + "0x1aa9ea375f7320d27aa6328b2a850ad8cada96d5", + "0x1aea0ca93107d00ef53b5d68010c9fde8ab0dcb0", + "0x1bdcc766643fb7e355f823bccc74e8d7ff187ef6", + "0x1bf2daf7d7395154e60d23233d09a7336e7b3aba", + "0x1d0caa6c55d7293e2fe085f0f3a55544446a0ebb", + "0x1d77a87c7cc7fbc605b1a5b00b0c4ba469382d4c", + "0x1e373308548d5e094a8efe8b7043f831f81dd7ce", + "0x1eaa1e6d4209dc8deb8c79ddc894bdd7a0132a42", + "0x1ec27afb1444e647672990fd029d68edee662656", + "0x1f1a83bfbd48766d81da8fac53152c20dfd6458b", + "0x1fc8ff614b3a0965ab863a24613079230e0fb26b", + "0x1fed9c6bd241d09fcdbdb0c61eaa563e5c9a8109", + "0x1ff4ed74399b8330cd5a1d1e33d3de7e19669bb9", + "0x20b2bef23eb455b57af3d9da9d8f85fddc6d591b", + "0x21805f51e1f248fd598d930385afe64437427054", + "0x2217c59c17db3cc61990e47fff2f911f68ce43c5", + "0x22649b953c972f0739733fb2c13f2db1cb52b739", + "0x2292267c8ea09de8b40d736157314e099b76c9b6", + "0x2364d773dc3d761b60f26b961764a4d9d88b0b25", + "0x23bdb889379278db240515fbaaceb664ffd76703", + "0x25c96c47ed08176e2fb72afc2919fc8cbe115dc7", + "0x269850d594ccf03cf1f7db58ff6882e872fbc0be", + "0x26b09ee008b4dc7ecb7435ff33f1c6c563db88af", + "0x2800b895df0437e87278f988b363f606cd88401c", + "0x287d4ff86c036b7712f92cc6f47649ebcfccb11b", + "0x2887a0b67b6063baaa32b57ac9d59d1c050fe2b7", + "0x29450bc740be08833074e24ac4ba5cf56b29e3a2", + "0x2951d560fda1ea00560a161faf2c183fae338448", + "0x2adf74c95313de00238710417ba3761d9c04ba06", + "0x2bafc5c5657c2b90928a685af4fbfb498caea5b1", + "0x2bf533183251abe50ceda3a3c4c171e3c6470406", + "0x2bffa8518ff9a9b5f4163ac53107eb315ec2cca6", + "0x2c735f62a124c98ba85b36707ad77eb7cd287cda", + "0x2e4c508a04b4556399ee9b98fab2bcc0e19c4168", + "0x2e87a7f37f820da8286393f6d3767280103d95b9", + "0x2ec1374702cdb0501d97c9bbc215c3b2815d4fac", + "0x2f163dd164137b0c5364cd2b9c23dcb621bdeb9d", + "0x310ff865859d45fe6b1596ab0322b785b705a203", + "0x312a5746f27a77eb9fee7dbb627b7fe4fa532a89", + "0x320be76a31a1eeb90eb81f3aaf226859297776b1", + "0x322cd101cb4df4904a90176bab57dda6e751aca1", + "0x327403f5d61d8096e378b15d44692d94f4d63d77", + "0x327b4b2fb7537ffae5a6e6c1a51b2ded202e83ad", + "0x32eceae262eb188a6ffa252144d90c4d8d42c001", + "0x3304393cb40a0be44bc7203c68758589c55c7d3e", + "0x331e655c2f0ca63e8f6da266c3217355e8d305d9", + "0x333dcd23b665dc0b45f715bb9c6ddb6ab82ce380", + "0x336ff1f10690be18ead0eda0bcf813e8be919ab0", + "0x33b820ea2b4ed872f3e3e57c97078498ad1f4565", + "0x33f7c5f9cbf3598007a20a5ffae0152e3443adb0", + "0x348bb7779b02821d4f1abb5a86c1615aa427d22e", + "0x34ed0e5d64c84e0fb4b6bd11694d47731c3a9aa7", + "0x3500173b793e7632ea7be156eba05c14d4de5ebb", + "0x35bb928ad826be31eae6a6b076b53d7b2b36f8a3", + "0x35c6f93023cc27068dbee8e0c92bb638b6f96178", + "0x362c1a09ff1dd12c57148333a27e1298be76b3b7", + "0x3712e29efa4f3bd5b5cc53c1c70a845194b9fda8", + "0x3734d23382746e8db45bbf792cafd1c8bcd107ec", + "0x3756ed6a7dc8a7786c86b8853aecbb770004d8ff", + "0x38d8d63320eb2c7752e045a945a73077abaacff6", + "0x391765d6d8d4a3c1b1664406f4c7ec007cd0cea5", + "0x3a355550bfa6a221704c84fb349e02f24f2a5593", + "0x3a47d959587ec724c4f10793f556496d21225eda", + "0x3b9b2f1c12c468bcc00e108bd26801dcff471eba", + "0x3be8c0533a44067a8117601c723f67a845745df8", + "0x3bf45213198956ae5655ce377c3bae0d9d9b8623", + "0x3bf6c4c445e2699eed24cf22b675fca034e7c552", + "0x3c3e119853e3c1e81790a007a2c1e91c00d78174", + "0x3c95d8591303c3af9c7d51c6d1968968d9a99ef4", + "0x3cae68248f81999aa3db5a227eadb609502200ca", + "0x3d41a6097a054be94a816e91362e7a9181afd950", + "0x3d58ba8a3e6e20fc48841f028857217e13144274", + "0x3e780db3c104c0ce65cbf142a53cdad9019d8a57", + "0x3e910132cda01ab8e73113f0e58d3e114174c636", + "0x3e9ed3366fbca13d547885931e83ada76e0016ec", + "0x3eb515f3094a0cf1350a19ea0f6d6a4d908103cf", + "0x3ebe91b80dfe4db91f925c58803cfef2e98715cd", + "0x3ebeb9d83c0f62dd03028e3a6e3b070617ed3e5f", + "0x3f9687c386c05083359d408de501d9c73a46477c", + "0x402adfcfbf77a0460eb5ce60e4939c93d7ce506f", + "0x403b3c6216b15d6697c12d7d5db7e9092808590d", + "0x4050782213123b2f17b5277e2e1a198eb08b7c9b", + "0x4186074eaf99d6c2d77821f96677ae96701e727e", + "0x41fdd5c13c7d8303e6a541a83199cb5f1913515b", + "0x4279b449f3856f58361b6898e8a4896b5cd9f08d", + "0x430b309c8d82cf9895ab72fd006ed445784e47af", + "0x43a4e31e622798d9d83786d4131250b25654b711", + "0x43e80bd71e872910853f78d58b24e221270f650a", + "0x44222d92682c119fb6cb67c3603ad4fb0ba3a672", + "0x455320c618cf9148d4427730fda1f6520e6911d0", + "0x45fa04a1541c129de4e9ddd50272d50c863c87fa", + "0x45fb0d906294c9b7e66e8cabce00a0dbf707190a", + "0x46b42515bdaaa4f4cfdddd871962712d6249ce89", + "0x46f4aff8c8b54a73eeb45b6d69f26c8eb8e5ca07", + "0x46f92b34f9997e7a7bbedbcbf27d9c8c6f870807", + "0x474538dc1f26a6be5f6571fdca2409c3a34e47ad", + "0x482d1b7cbd7fc85b5bce69acf4783fe05e543807", + "0x4838712c2f4241b9aab4652badefc00c0c7d993f", + "0x4a0b2c0841f985490f7a8d53b9a0a0ab16fef850", + "0x4a26832501fc2909e6675699d44a88179120cf42", + "0x4ae2337c8d4f04545c53ffc04e119f3c222b97c8", + "0x4b3e30c43f3b89605b9927ad1b1b319f8a3fed98", + "0x4b870776ccef5b75c4407a062b3b37e79625e3bc", + "0x4be8f15ace8c717cf1282febd730162390dd9627", + "0x4bfe9a161f5faea716d0d2e0df947848e1b21d2d", + "0x4c8060c9a5886c94cb9377e9cb4881c2f6731f42", + "0x4c93bb0204f25ca09ee3e5d7b7c92ca5168a25a8", + "0x4d5a04f1220d479d843dee8a0b6c459c5446a713", + "0x4dddeb22b41546e09f497fccc25b49e2b4fb0444", + "0x4e3bcaf42dcbaaec61e365c415c3c7caf88c6ebb", + "0x4e60a6a33ec26a29862f8fb458926f5b0c6b0042", + "0x4f1786858ffb38549fe6208a13887503ca3659f4", + "0x4f6c8eb51dbb18ecc916242134ee251530c6602e", + "0x4fd7b01659b23752e4a23133c248bd15995d7a8c", + "0x50acd799d999b74dd0c9abe5ca7a7d89f1a1e0e6", + "0x50b3a06d50b553faa898f015b79ca5f9f4bfad0e", + "0x50ff201fdff4381b0ebb3585fa3f657b79d987d4", + "0x514338cc6e28ce6468a23c2fec897a0b79d57c5d", + "0x515e3178ae446197233960d4444ff4396922da03", + "0x51a8e279d136978a0b6a056189ca1dbfc61e743a", + "0x51d8dafea0edcf158180d8c5ab8d906c1e4f1e9a", + "0x55cea8e77a16dcbffa3ad4a660da3ede2b933cf3", + "0x562e502b07e7fb7bee85a91fe3b576fca6c61ab9", + "0x563b642ef0599572105dd080009e173bfdbea1ed", + "0x569534990f0b084552a94fb7a5138a6f248f19b9", + "0x56b7a5bcb27fe8220fa22ae3753b0338d02dc3ae", + "0x56ed484a6ef01101352c75d16ad7c2332f0d4d3e", + "0x57d00f42d8020a758d8717d357a8cedde8958700", + "0x582bd9c2553890820c7e68948fb77f2013940a51", + "0x594863c3ffd6543f174aaca59213340fb93678d2", + "0x59fb8cbc8a053f735821b03a58c2fe99fd6f6bc5", + "0x5a9f21388be3a2da23238b4ea0860be46bbc992b", + "0x5b27de733515448349e20d89845483753f65d6b5", + "0x5b41d777d0aa1c926c14a918f28413b1245b9cdb", + "0x5b9dfe1a97ec57b2b8228608c5dce2edd50bb512", + "0x5ba107b05113c49a455a5e39216fb796c60e5271", + "0x5c04d529dce7e724a3fd5571e6ec73fd993e526f", + "0x5c3dcfd8d95c0bd334529f9c23e50ae1c2fe459d", + "0x5c4da7d2287061c707570ca43858f00bcbdc22ff", + "0x5c8de18e55c75745888d661462bf52f0234f1cfb", + "0x5d856dfe69086b32791a867653d2a2dfbe7bbcfd", + "0x5e63bb70e0441366c491115a9f6e1c8bf612173d", + "0x5eb5158ff8a6737e92879326fdeb6b570486abcd", + "0x608094b5fcb7dac1826a233f078638e1c87542a7", + "0x621e92d04896786b0f52ec1d4ac84a40da1fe94e", + "0x622e238245e7bdd14a93021c3ca6a09173517de4", + "0x62ee75b0072275dc1ce46ab04f9dd7db116fa757", + "0x6315646a615f46c6d6b3802d809a6a61a6bf88fa", + "0x636fc0ee2c48022b4c66ed4173cdc515a5378a6c", + "0x63d35426a50f11ba1f0d89ad6e540aa3e03c3b43", + "0x643eeb8f4628996b02507dbbe86beaa356a27fb6", + "0x653ce8c23e4a3cb9fd5188e1d616af2bb874bf27", + "0x66020b06fd7b8f2cb40eb58c672d821192381d74", + "0x660caba6aaeea4654dcd76e34dff33f8074d49a9", + "0x6617a5efa8bf1463a0909659a995451f8b09f950", + "0x6654e23a1fccd3a3e463a5fa9d435d30e65c6860", + "0x67467ce27cdbe4845a09977d4d815670a6d4447a", + "0x67bd2e15e69e0d3e694960cb4cd0498048fc14d5", + "0x68190f57f3603288dcdf4212da09de8bfbe72d83", + "0x68a4da8a141147b23bd1d48efe3325e463c3bbda", + "0x697d4d5d6990290f77a1cb7819bd07fe3666790a", + "0x69a9529df246fa1eac6604c47ba5b43b0e13b364", + "0x69c971e57f6fb62c96a2b4c4b20927d5afa63f85", + "0x69f76c72d2ad9c3733b80a207be2d1ab4c5e7c00", + "0x6a3727ffc861fed7d53fc9751ee51c1d53e6864c", + "0x6a3e9d87b6639bb013cdcd4a60ac3e097e0fc68d", + "0x6afe686cbf7e28d346fd975f1f99ac2867ba25fb", + "0x6b0ecb8acd6fd929d2c06756ac3f70e4ef6ce880", + "0x6b1a5eaec62ff9043479e8c40f20ea21e42ba7f6", + "0x6b61059e5fcb98790eb221737fe44be445b78506", + "0x6bc4c44c21cb70a132b238f598d027728ca2137b", + "0x6bef6d78c48d839f0f61f9e505cb3a26daf62a6d", + "0x6bfad1afc7499a04f1cc46188724457df785b585", + "0x6d2a662589947d397b863fbf1b505efefb3a37a7", + "0x6dfc7eb0a4d538cbe611428b6379047176534f6d", + "0x6f9cad4cfeae77acea36b64d97285a5430c21761", + "0x6fb458cbf65e1af4821d7dfff26a7dde148d7134", + "0x6fecc68c4ffa0681d5f91b12778e5a2c97e700e1", + "0x70290716cc09336d4eaa772c192b992691c113b3", + "0x703d2dd921da44e12502dc6ae8030a3044130e54", + "0x703ef1b03f4abfe0cb37a309295b737af6ccbbac", + "0x70497b0330bf7c128822ef8053c625a1cb66ec11", + "0x70594e5e61c7bb8c423428aeb8dfaed513aceb62", + "0x707ef1a7d33ae64691c40d9517790cc52c344426", + "0x70a81b4b97f7ea80b758b0c7cf1b8cc52a747d7e", + "0x71a42076587399fcce6d3bafb9a06b98a9055280", + "0x72cbd84aa2d4b6b4f927716f2ca0a95d6cdfc99a", + "0x73abacfa94d8ac9f37dd148f93d8e19dfddc31c5", + "0x74a51292bf31f46875a7f1c371deb1840ddb7578", + "0x759a7337dda540a5becfcdf1bfd523a828e72393", + "0x75b5a31b432aa0bc42d03c3232dd2fc510e1d674", + "0x76390ddc8c801fe6e40e69c3c2a430ca3531aef6", + "0x766bce115924e81da1a97dcddba7af4cb8a00bc3", + "0x771dda6e6a911560fe862edcbc95af16032cd0e3", + "0x773cb4bcc654b438a2324d1f0fca1ca1a1b2bee8", + "0x78dd1947c2f4d27032bcc5e1895a71bec40d1dde", + "0x7977f7e2b4e3bd9dc5ddecc3ae941c3e47d7597c", + "0x79c07f224b51d4644a6b01901edb855146a3c8a9", + "0x79cedaf7b21b5e6ba1eaceb9c02f3b0844424763", + "0x7a837297776b6a5c3d5f97a4ff5043771b426c57", + "0x7ad7487a1efb8915b0de5b610cec143f48b2c375", + "0x7d96fb0db654dc8b36e5eb43d73f42fc0382a38d", + "0x7dad3a4377664490d643286628cd90ea75dcecfb", + "0x7dddedd801bdb2ae1379aa0ea6310d1626de1b68", + "0x7e0b65a1089646364781d3fccbee426d691b6d6b", + "0x7f02eca6c77941c1222f5c2a4678ee377dd7d493", + "0x7fa76563e1e71d0200a0168ede41d8791ca3ee4f", + "0x7fa9147e30d0d86f6de3b932f0595249f0a450e5", + "0x8108801af9e5b5cae9a704e3fc712c31192597a5", + "0x8174c36bd0e941ecf4cfb2159944d693a51650c2", + "0x817ca359a9e67743f49dc619bad22d4bdaa65991", + "0x8203f494317d65111702bd0522497fe4e8a3c247", + "0x822572dfb2e5fcd385486ca9100d175db4a11f8d", + "0x824b5b747e0b102a47ae0da76a4e3a7bef27d6ab", + "0x827c3b1e5bd37907b65e8687204540ec06bfe95a", + "0x82b9c9ac40b63e23d74a3d151d3d2bbe2727a4a7", + "0x834fca98bd9157e7d3b8af6925414b077d2d3857", + "0x837e4390350d183661b956d16befd933a53665a4", + "0x853ab795d49fe8fd380155f06d708032f4439584", + "0x86a0c14b9f2d8d8078c5b392ad895c6d73a41e00", + "0x86ae0babf68a869fb4076189c2f068ae90d4f810", + "0x87dbbf3541fc3fda614b3b86c0c42e78b4c8b1cb", + "0x88a7cb9a9e73d5aac0a139580e3fe9f2918ebf60", + "0x88c1eec1acc212458f4de2b0254e780c5ab17538", + "0x88d776e193778d5eb3c27c040398849828a68776", + "0x88f374c0440efcf6a19137ab6b94243522af14dc", + "0x89c98da89d83cdd59191f71dfd5e1d783f4f4b71", + "0x8a258b7d90c69c798a2992f8f4957435883db8f4", + "0x8a73f74b3a579d7be6a7e3f8d5eccf2be0516d16", + "0x8ae213fce18f644de77c35a66c2e3ddf6f5eec91", + "0x8c0dea9b750f8ea91844672e4f43938f205d380b", + "0x8d3fe11a83afcda18ff0aed25dc68febcc73e883", + "0x8d4686e96c5eedf871ac58b54ce061ddccdaa1a1", + "0x8dd1a7ec46391201798a40fafce59c4c47aeb611", + "0x8e153aa8d770334d2d532122c52476dc43a96616", + "0x8e1ca3262971a6db9439922beb36768a186a5269", + "0x8e3f0e3728a05967539a3e40aefaed02913f11e9", + "0x8e5cb169c68554bdc4965bce5e4f4e17c12a64a1", + "0x8ee8da9580901ff0302495182f40aa20f49d17ea", + "0x8f1ff201bfbf1d221eded5f2cd09f79aea681326", + "0x8f31f50a904ba8d4943aa16b12076713e760c414", + "0x8fd50a3488bcded29cff2815d0a3b093a63655d7", + "0x8ff43d2bdbd7fe0bb086a196d3c623661baf529e", + "0x91d8e1dd54308fe29786725ec4a9a707c16a9d31", + "0x92ee07c0c04fa4ce801e9cc22bbc4d812f3a3968", + "0x93d34b5d356dce6b752506364d0889870e163619", + "0x940830be01dded6c91c111c823df20bd35ecda9a", + "0x945fdf583521e64508c51a0f73267e67ed1ac355", + "0x9547029282aa64870ce12315666680fbcd839dbe", + "0x9576336e424988dd18d119de744a87ee2f5e4c4b", + "0x95e62d3e9ce6447c10c4c9203f77e5b5fe487609", + "0x962152704b1f63bf0213dfb58d03ae6f99112ea8", + "0x96af72858296ce97a14fa976898689b3a7c45b1c", + "0x96c5979d71c9cb6d521312e1048169942d8ea3eb", + "0x976c150330953844e9336f39c45944586d464642", + "0x977e45b0aab8e36f3a9a3d0084bdb54a3b05cdd6", + "0x977e8c45168579e43dfed5034e59dd8342bf2170", + "0x97cf20f117d9801a4262f04f0481afbbf50ab920", + "0x97d361a30a5ad28dafa1eaebd8c38851932b63c0", + "0x995c933c58ee5e4e585e199c9703185320a42cec", + "0x996543f87e29379dc9afbdeaa0f5d9fe349753d3", + "0x9a00da21f46def02b9bd2a385b0540f778a8ee93", + "0x9a8449b15ffffb3f670fe3a6767e1b1bdc764499", + "0x9ae90a4a68091f0926a864ea89897054f6bfa7b2", + "0x9af3fdce076db54b8c44164655b86ae4975539a0", + "0x9af9199474ed0b7138ec542a401b8ad4f4570d1c", + "0x9b0d4b1f1e4a6f42ca8fbc7d5ed4fef9a4fb3a83", + "0x9b138fd7dd8fdde9503b9d416b8e869805f23ac9", + "0x9cf301816fdceffec7a37ce149329c03e7bc0ac6", + "0x9d8bfd19628735a2fb5dbfbd9fbef69b92de4cd3", + "0x9da7d71b0412287efd9c386579702ab4185daa97", + "0xa00d795ab4d79b7995641424bbd91ea761b19e45", + "0xa03ae39022a0cf7b32f9b8a2c82da784de47f75e", + "0xa05720747fdc7c90fc898493802c0a3375448f66", + "0xa05a47d2ac059ec101db32cfc277611b06b20e0d", + "0xa0f8a29218d035c2f1c58dd5cdc29238d9bda34a", + "0xa1073d52329943a4a9bfe80b3652647546e86981", + "0xa16ea06279f500360a9bf44f8d62b7c072900784", + "0xa18b311cc231af38d51ea874dd25f0124250d298", + "0xa2066d19e0c682b3e2381118109aae78475bb7a6", + "0xa207cdf1e1a644403caf3ee18d8a56a250657f06", + "0xa2266ece69a2300d5a1176b3f02b6bbff0742e6f", + "0xa2a3e82a3b03c8454b6499dedb6f1c4f61badea3", + "0xa2bb3a542b938c87c6753b5ed3439bdd172e663c", + "0xa2d19efffa625c3b1294c507d6e950bcc09e1028", + "0xa31c4a11b0b030f6032c21d92d10fd24bb891cd3", + "0xa4eede96787f188bb8c02fadc8998c758db25823", + "0xa56e0126639d657d7c745e555541a794a032c189", + "0xa5d2694921b91c7a8fe82499cbd601d6fa5a6459", + "0xa5e8a3af0501f0b1a59876ca989f38f82a802af0", + "0xa96f4bfb95a33e64dc11500b5fef141484d6ffab", + "0xaa99cb692a12e0f5335b7fa88204b6de3c4b3165", + "0xaac85f0ef8edd3d7a574d1dd88c13bdcfe0a1a03", + "0xaac8e646fd42f13908cfbf726e6ce8765de712a7", + "0xab9c7062ee11a70e17449b1295e5f2c7fbdb6555", + "0xaba259d872607abaa9fa49b7fee5281331bc2f17", + "0xadad96aec15d94ac56310b4fb046453dbedf1155", + "0xadeb5382b5922f491ea1459ecc14efd8ab3fa385", + "0xae2585a4fa59cbba9c338a83fa5f3a6c2bd9342b", + "0xae76d75f0bba8d96c6422edad8042d338a029ddb", + "0xaf373af84a255b307a8a0e480c30deef3c7238bf", + "0xaf89af4421b2c1e912ffb6a3a6e3b3343ce2ecbb", + "0xafa97544bf1778991008a68c2ec13c2a212febdf", + "0xafe8d6def3e3aaed8d3fb7dadb75269861b45c58", + "0xaff269a5257dcbda41a1e21793ea7034a0d20239", + "0xb0c89a9461353f991e0589c74c8b144149789978", + "0xb229da258d483a1a73f28692e89f15085fc2abb3", + "0xb245472d82f1bf1e968f71b0af9f7d6732181478", + "0xb272afd91ac2291f6ba6f5afa0c594524ef9cda2", + "0xb3c987bf21a3e2dac8b7b1195ac1939ea39de09c", + "0xb4252367619c3f4b508cda8a4c9e89dd5908ad51", + "0xb52d59b6d90825dbc8619f31abc275baca5d7965", + "0xb76fc8f3039ac17417b9a36d1a5a00be81e036b0", + "0xb8106490fb131bb246125ace9eaeaeb820b5c6ec", + "0xb8f94bbe97988c36941e9ac0c69fa5c67f93e35b", + "0xb92f0e24f02af9eddae6f6cbbc2ec5192cdc42fc", + "0xb94a36f087aada4137abc2d9a5dcb27775a18b54", + "0xb9a26d1b93546df223c6eb66ffa994190fac65bf", + "0xb9ca0d4199aa6cef7f1da1e5ad23ca6c58b34cab", + "0xb9e35722f46c38bb2dff6ce73fcd4a3569773fa2", + "0xba152d0d66fa142a6a88b49a159d23bd2a06a10b", + "0xba3ab995a229d7e474ac4890ea41b29a36cd2cf0", + "0xba725112ea46050499eb03407466068532d4b493", + "0xba7514f3503add9fc50f8b5cc6aec4e11f040b52", + "0xbae2260300c4ee6ee9cdf200e6911e41d18abecb", + "0xbb105427110983d52b41ab7d5112367a1efef212", + "0xbb541b84a3e5ff883f71f37caeb767b7695340ca", + "0xbd2320168733ac45c4ab6197536d8f3fcef5b38a", + "0xbda5ed78b5e3bc88c2c69bc8e6a36f68cb701213", + "0xbf19e4516d6615192c1c9b91c7d2c9c3ddb77602", + "0xbf21a8825354de9a3af98116ed8dfe0786e251c3", + "0xbf2c78f49a0cee6f56853801834d215de493d87e", + "0xbf9ac7f5a1ee69d15986d6a9331f2fa40ba591d0", + "0xc0e66d85ac71a3a1b8a1ac6d8ce091006393dece", + "0xc1862b87e011d4fdc8630320266d98cc6040a7f6", + "0xc1cb562562bf10fb95ed761bf09ca1cfaaf54c9c", + "0xc2409aa02e7df1a419c6f0f843d9b912a7277050", + "0xc27f9037acc553d06c6ee7194b21855f98462279", + "0xc33538553c5d9b693e84076873a1bbb915f235ac", + "0xc36d134690fc81e8024e7c3545fea29be148815f", + "0xc383c833888f9e90af68c6c5030a31782d5cfc31", + "0xc3b9b78b5992e8627b504069c5550fc809ad13cc", + "0xc3cacffa663544c6452ec43f9d8a5e93d0f308ad", + "0xc43ad9dc0decc1f745d9f28df64146d3fc27e4e2", + "0xc52768a112a9a1ad5a41f73a1a05fbcfe95704b7", + "0xc5d2ec86a80a4f3a62b7882858fbfe106b891de0", + "0xc689f7afec8f9adc8a9eabbec0366592e4597e5b", + "0xc71137a7fe2225bd5886d66018c573572ab3b111", + "0xc728ef07c0cb18a425137ab2c75dc2f5dada0261", + "0xc78e0b6fc399365fdbf48f451c71c83f411678dc", + "0xc7ad546d2487b5fa828edc6f5f8a218b4aa29fb6", + "0xc807a1be25f22a7a0d6d7c3c323d351bac0a3d8b", + "0xc929e2a694f6bdae13ca8fbee6b8bec004e25eee", + "0xc944e1859488c233529890b9f6d4151cceb46b10", + "0xc95899b17337034bf170e9b19c596a9e57dcae97", + "0xc9b63faa54e9ee8920a428518f94855abe59f5c0", + "0xc9e15ed7a4f1db101f8848ec90dbabd099de189d", + "0xca28dd602b46c1338af3889c75feba883687e937", + "0xca9b843498a8068da4222fad572630d53c7c28a6", + "0xcb05f700f619ec3ad872fdb928ff16a51471da68", + "0xcbc1ded4b63a42b9575ab51899b246084f88679d", + "0xcbefb26528102f9ca92839066e593244a90a8800", + "0xcc724d58790ed709f95f0358a63ad65a7f4ff58d", + "0xcc9ffdf9b503cf3df655e470089b701796293849", + "0xcd1b8b6d7dcea49cc4e7792ee6763cc297b43a9b", + "0xcd97433568203860240ad8448cf69cfae6889507", + "0xce8079bf9f2141cd3ee1d30bfd6ae6a1b8337309", + "0xd0f3aa5f6d298e9e3a1ca2f92b3f75598d12aa31", + "0xd14a4d8184f210f1c024f22f99118fa4dca9346c", + "0xd1a868a178f2aac858cc5e0a72478a4ffe7e361f", + "0xd239b4a49d2e3c3a5425854ecb1f0b6a63298708", + "0xd24c06e94e60dc9c3c71c7b7641950da1e881dd2", + "0xd2821726d9753a3f2dda890496874a3bc5335563", + "0xd3efbf2176868a9bf1bd29355ab4b3c18d376a67", + "0xd3fd81cddb8f09e8917e53efbb2f54dc83b6632f", + "0xd4277caf1bedab207f0fe53fc6c22beefe7b8ed7", + "0xd7615a94cdb393effc45d38a8129f8b84ac64d4a", + "0xd78c9922d6cce194f649b303609146b2fa74d7f0", + "0xd885c943090b0a7ea54ad12b5a0d390bda0f3275", + "0xd88720cbf01aabfedab777df3d1aa2b63867084b", + "0xd8a83a1d2b9188ce3cd6b002112baa12250db237", + "0xd8fab8e11da1c0aa35be17d9644fec30a57815df", + "0xd922bf300b6ac1fce65212b98f64757b6b22b57d", + "0xd9762131fa7fa3699ca0e63cb7bb81c7cb8916fc", + "0xd9a38d473898bc48b86e51eb9a08bc0e403bb5eb", + "0xda880c85cca656e65ce1ea1ee09197f589e26a4b", + "0xdc8e70d614eb13fdbe8f10d6a7c6a14e52ced703", + "0xdc9f177e3fa5631f099972ad90894809bb171c99", + "0xdcdc425e504839d74ce7731995e0a34b9dbc95f1", + "0xdd3b89def19a9144088d38bf6532f2b018a478ea", + "0xddee89fff5196ade6fdffd9cc7cf50fe585f7ee9", + "0xde2f849d8680a6b4067c9eed07ae63e89da948c0", + "0xdfc1aad2a496a35bfac234de4f4336dc8577faf6", + "0xe01cc4103b035c33adbe82b0acb927d86dba77de", + "0xe0ef45040088a6d75d40aaa81332a41d09f552f2", + "0xe17ae336710be802905ec2cb1e3d3be24ff25b76", + "0xe2537a94ed874aa80430ab87530e76a11b4ef0c8", + "0xe34c5434f56fc26f5aabe8450797871e241b7582", + "0xe3a2696f430cb5a1a0f4569f0d11c1707c717335", + "0xe4b2174a298c05b4e8f960627cd4da33de96298e", + "0xe4c65b924c09f4f0a9f644acf528d4f4bb5e7065", + "0xe5d19b068f5802842adcd4d92e7061f61b781ce1", + "0xe674d099fe170715706fba53902a9c0bdac987f6", + "0xe698af793d1e9d2693e82feddbc41fd696ec52ac", + "0xe69de9998a53e5446561252fcb0daccd08f5257b", + "0xe71402a55449736dd2f016287245924ee214a6f0", + "0xe9ac67aa08dbc1af256edceb67efbb47ebd8413d", + "0xea2eadc24b3e41ad41799404e6b0e9376341d0ba", + "0xeac64c5d9437a9ec535dc9e1d04506852b520914", + "0xeb6ae1e6d4b9491a59d0a29fe1f4098cdde9a5f3", + "0xeb6be60be4309a56f48f91f682156feb881b0957", + "0xebbb49deab19658a4736380a2d8aa8d1a83df895", + "0xec8bea91910d3b294928c8378b4abc45ebe641f2", + "0xed026c2775b2c40d524d890d0b5efd09c3b46576", + "0xedf6ef3854a90f42f6d8c19cfcdc8361dca68d67", + "0xeefdb96d06c5f4616ebef3bf2cf33451e58450a2", + "0xf0e25528e8d6f5b213345797ac5e1137f2a64bba", + "0xf127183bd96d6273805aaf09f1e4dda7e1ec3f73", + "0xf1e664ea77c78f8fc86399e854908ef519092f95", + "0xf264937ab0a30444745a0d6f3963881f0fd85b4a", + "0xf2a73b45ec03e11292808f1565a5e0bfe7fc6d62", + "0xf380b8e273e362763c4672a9cad5adae7d4b82b2", + "0xf402335076cbd5c58d5dfa61052ec4fd3cebc1bd", + "0xf472a8cec24591edb6778a06a438dc55d7240007", + "0xf552112de86982a07ff794a5fa6340e4d009a95e", + "0xf5bdb279506be6224f8f55f2c31af8acfda0ab90", + "0xf857f28f81a80fbfa8aed674c3c1f52ffe5c981f", + "0xf8d978b6f10d70b31ac7a336c70099d23c019114", + "0xf9514e4c3f4e55d0d635c36ad35070a9a1ffdc56", + "0xfa287476bd793039bbe589829ea089c17f151a62", + "0xfa441678de2ee764d40897ebda60e18f5e8292b6", + "0xfa51502eb318223ac6b56f0988587793b409cbb8", + "0xfaa7243b14c68c1c7594107d4c9a7e31d6e98b34", + "0xfb09f7ebbeae506a38c0b98893fe4433afdd5340", + "0xfb141c08df37c048be1cfa1d5cca5be76f2f9e74", + "0xfba18d85da0a37f7d19b8f87da6ef3f7a3feb72a", + "0xfbcbbdb9dfece7a829ff7c89afd28defc440de98", + "0xfbe619e87ca4889540137e0265d69dd2ad886c03", + "0xfc1b9cb0c3498c5bc456a4cd379da66dc288002f", + "0xfeb09165a5ba3427913ab2b4800b79e8f69f938e", + "0xff22b75e221124164453c5f558bc17b253dcb056", + "0xff4cfafd280902797fcf1c316604b0ff267ccfa8", + "0xff536587affb209fb361eecf5d7b0046134381f6", + "0xff560b656c0a59e9a6d9fd6d01cf2a14daddcb96", + "0xffa2536a631d9a7107183fc157014bfa08b306cd" + ] \ No newline at end of file From f75f8a218197e22118eb7d1c6e9c6423f9b4f5f8 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Mon, 5 Aug 2024 02:29:14 +0530 Subject: [PATCH 25/72] add delay in fallback request --- routes/thirdweb/transaction.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index 97961cf..d1f076c 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -2,6 +2,10 @@ import { ThirdWebLib } from "../../lib/thirdweb/ThirdWebLib"; import { Request } from "express"; import { Response } from "express-serve-static-core"; +function delay(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + export async function getTxStatusByQueueId( req: Request, res: Response, @@ -14,15 +18,15 @@ export async function getTxStatusByQueueId( if (data.status === 'sent') { console.log("transactionHash", data.transactionHash); console.log('i', i); - break; + return res.status(200).send({ ...data }); } + await delay(500); } if (data.status !== 'sent') { return res.status(408).send({ success: false, error: 'Transaction not sent within expected time' }); } - res.status(200).send({ ...data }); } catch (err:any) { console.log(err); res.status(500).send({ success: false, error: err.message }); From dce347d6941d8d3b046f33d0f51609e37592bedc Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Mon, 5 Aug 2024 02:53:37 +0530 Subject: [PATCH 26/72] update fallback function --- routes/thirdweb/transaction.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index d1f076c..09436ec 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -14,8 +14,10 @@ export async function getTxStatusByQueueId( try { let data; for (let i = 0; i < 100; i++) { + console.log('i', i); data = await ThirdWebLib.Action.getTxStatusByQueueId(queueId); - if (data.status === 'sent') { + console.log(data); + if (data.status === 'sent' || data.status === 'mined') { console.log("transactionHash", data.transactionHash); console.log('i', i); return res.status(200).send({ ...data }); From a6b6574b49bdf47330bfb2abf742723b5f72a537 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Mon, 5 Aug 2024 03:47:38 +0530 Subject: [PATCH 27/72] errored stated added --- routes/thirdweb/transaction.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index 09436ec..642e783 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -21,9 +21,12 @@ export async function getTxStatusByQueueId( console.log("transactionHash", data.transactionHash); console.log('i', i); return res.status(200).send({ ...data }); + }else if(data.status === 'errored') { + console.log('i', i); + return res.status(200).send({ success: false, error: 'Transaction Failed'}); + } } await delay(500); - } if (data.status !== 'sent') { return res.status(408).send({ success: false, error: 'Transaction not sent within expected time' }); From c0261afbe888c7793c15acd9cf24f2f69d9a2688 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Tue, 6 Aug 2024 16:41:14 +0530 Subject: [PATCH 28/72] added sentry --- index.ts | 4 +- instrument.ts | 6 + package.json | 1 + routes/webhook/thirdweb.ts | 13 +- yarn.lock | 551 ++++++++++++++++++++++++++++++++++++- 5 files changed, 570 insertions(+), 5 deletions(-) create mode 100644 instrument.ts diff --git a/index.ts b/index.ts index 35de7db..b318d9e 100644 --- a/index.ts +++ b/index.ts @@ -5,6 +5,7 @@ * The webpages served from ./public use @simplewebauthn/browser. */ +import './instrument'; import fs from "fs"; import http from "http"; import https from "https"; @@ -71,7 +72,7 @@ import { mintClaimedKeyId } from "./routes/auth/claim"; import { registerPayerHandler } from "./routes/delegate/register"; import { addPayeeHandler } from "./routes/delegate/user"; import redisClient from "./lib/redisClient"; -import { thirdwebWebHookHandler } from "./routes/webhook/thirdweb"; +import { failedTxWebHookHandler, thirdwebWebHookHandler } from "./routes/webhook/thirdweb"; import { getTxStatusByQueueId } from "./routes/thirdweb/transaction"; @@ -128,6 +129,7 @@ app.use(limiter); // --- thirdweb webhook app.post("/webhook", thirdwebWebHookHandler); +app.post("/failedTx-webhook", failedTxWebHookHandler); app.use(apiKeyGateAndTracking); diff --git a/instrument.ts b/instrument.ts new file mode 100644 index 0000000..d9f2442 --- /dev/null +++ b/instrument.ts @@ -0,0 +1,6 @@ +// Import with `import * as Sentry from "@sentry/node"` if you are using ESM +const Sentry = require("@sentry/node"); + +Sentry.init({ + dsn: "https://ccf59999fa8b1604370e21a60e6b0565@o4505837187366912.ingest.us.sentry.io/4507728950722560", +}); \ No newline at end of file diff --git a/package.json b/package.json index 3cd7bc6..e08a27d 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@lit-protocol/constants": "^6.2.4", "@lit-protocol/contracts": "^0.0.39", "@lit-protocol/lit-node-client-nodejs": "^6.2.4", + "@sentry/node": "^8.23.0", "@simplewebauthn/server": "6.2.1", "@types/bun": "^1.1.6", "async-mutex": "^0.5.0", diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index ef4bdd3..a48e098 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -2,7 +2,7 @@ import { Request, Response } from 'express'; import { isExpired, isValidSignature } from '../../utils/thirdweb/webhook'; import redisClient from '../../lib/redisClient'; import { io } from '../..'; - +import Sentry from "@sentry/node"; const { WEBHOOK_SECRET } = process.env; export async function thirdwebWebHookHandler(req: Request, res: Response) { try { @@ -35,7 +35,7 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { } // eventEmitter.emit('thirdwebTxSent', { txHash: req.body.transactionHash, queueId: req.body.id }); - + console.log("req.body", req.body); console.log("queueId", req.body.id); const uuid = await redisClient.hGet("userQueueIdMapping",req.body.id); console.log("uuid", uuid); @@ -54,4 +54,13 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { console.log(err); } +} + +export async function failedTxWebHookHandler(req: Request, res: Response) { + const err = new Error("Transaction Failed"); + Sentry.captureException(err, { + data: { + ...req.body + } + }); } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 591e109..15c8d3e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -800,6 +800,232 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== +"@opentelemetry/api-logs@0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz#52906375da4d64c206b0c4cb8ffa209214654ecc" + integrity sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A== + dependencies: + "@opentelemetry/api" "^1.0.0" + +"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.8", "@opentelemetry/api@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== + +"@opentelemetry/context-async-hooks@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.1.tgz#810bff2fcab84ec51f4684aff2d21f6c057d9e73" + integrity sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ== + +"@opentelemetry/core@1.25.1", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.25.1", "@opentelemetry/core@^1.8.0": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.25.1.tgz#ff667d939d128adfc7c793edae2f6bca177f829d" + integrity sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.25.1" + +"@opentelemetry/instrumentation-connect@0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.38.0.tgz#1f4aa27894eac2538fb3c8fce7b1be92cae0217e" + integrity sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + "@types/connect" "3.4.36" + +"@opentelemetry/instrumentation-express@0.41.1": + version "0.41.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.41.1.tgz#658561df6ffbae86f5ad33e8d7ef2abb7b4967fc" + integrity sha512-uRx0V3LPGzjn2bxAnV8eUsDT82vT7NTwI0ezEuPMBOTOsnPpGhWdhcdNdhH80sM4TrWrOfXm9HGEdfWE3TRIww== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + +"@opentelemetry/instrumentation-fastify@0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.38.0.tgz#0cb02ee1156197075e8a90e4fd18a6b6c94221ba" + integrity sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + +"@opentelemetry/instrumentation-graphql@0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.42.0.tgz#588a18c39e3b3f655bc09243566172ab0b638d35" + integrity sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q== + dependencies: + "@opentelemetry/instrumentation" "^0.52.0" + +"@opentelemetry/instrumentation-hapi@0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.40.0.tgz#ae11190f0f57cdb4dc8d792cb8bca61e5343684c" + integrity sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + +"@opentelemetry/instrumentation-http@0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.52.1.tgz#12061501601838d1c912f9c29bdd40a13a7e44cf" + integrity sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q== + dependencies: + "@opentelemetry/core" "1.25.1" + "@opentelemetry/instrumentation" "0.52.1" + "@opentelemetry/semantic-conventions" "1.25.1" + semver "^7.5.2" + +"@opentelemetry/instrumentation-ioredis@0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.42.0.tgz#0f488ffc68af3caa474e2f67861759075170729c" + integrity sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw== + dependencies: + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/redis-common" "^0.36.2" + "@opentelemetry/semantic-conventions" "^1.23.0" + +"@opentelemetry/instrumentation-koa@0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.42.0.tgz#1c180f3605448c2e57a4ba073b69ffba7b2970b3" + integrity sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + +"@opentelemetry/instrumentation-mongodb@0.46.0": + version "0.46.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.46.0.tgz#e3720e8ca3ca9f228fbf02f0812f7518c030b05e" + integrity sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA== + dependencies: + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/sdk-metrics" "^1.9.1" + "@opentelemetry/semantic-conventions" "^1.22.0" + +"@opentelemetry/instrumentation-mongoose@0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.40.0.tgz#9c888312e524c381bfdf56a094c799150332dd51" + integrity sha512-niRi5ZUnkgzRhIGMOozTyoZIvJKNJyhijQI4nF4iFSb+FUx2v5fngfR+8XLmdQAO7xmsD8E5vEGdDVYVtKbZew== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + +"@opentelemetry/instrumentation-mysql2@0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.40.0.tgz#fa2992c36d54427dccea68e5c69fff01103dabe6" + integrity sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg== + dependencies: + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + "@opentelemetry/sql-common" "^0.40.1" + +"@opentelemetry/instrumentation-mysql@0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.40.0.tgz#bde5894c8eb447a4b8e940b030b2b73898da03fa" + integrity sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA== + dependencies: + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + "@types/mysql" "2.15.22" + +"@opentelemetry/instrumentation-nestjs-core@0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.39.0.tgz#733fef4306c796951d7ea1951b45f9df0aed234d" + integrity sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA== + dependencies: + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.23.0" + +"@opentelemetry/instrumentation-pg@0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.43.0.tgz#3cd94ad5144e1fd326a921280fa8bb7b49005eb5" + integrity sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw== + dependencies: + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/semantic-conventions" "^1.22.0" + "@opentelemetry/sql-common" "^0.40.1" + "@types/pg" "8.6.1" + "@types/pg-pool" "2.0.4" + +"@opentelemetry/instrumentation-redis-4@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.41.0.tgz#6c1b1a37c18478887f346a3bc7ef309ee9f726c0" + integrity sha512-H7IfGTqW2reLXqput4yzAe8YpDC0fmVNal95GHMLOrS89W+qWUKIqxolSh63hJyfmwPSFwXASzj7wpSk8Az+Dg== + dependencies: + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/redis-common" "^0.36.2" + "@opentelemetry/semantic-conventions" "^1.22.0" + +"@opentelemetry/instrumentation@0.52.1", "@opentelemetry/instrumentation@^0.49 || ^0.50 || ^0.51 || ^0.52.0", "@opentelemetry/instrumentation@^0.52.0", "@opentelemetry/instrumentation@^0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz#2e7e46a38bd7afbf03cf688c862b0b43418b7f48" + integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== + dependencies: + "@opentelemetry/api-logs" "0.52.1" + "@types/shimmer" "^1.0.2" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" + shimmer "^1.2.1" + +"@opentelemetry/instrumentation@^0.46.0": + version "0.46.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.46.0.tgz#a8a252306f82e2eace489312798592a14eb9830e" + integrity sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw== + dependencies: + "@types/shimmer" "^1.0.2" + import-in-the-middle "1.7.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" + shimmer "^1.2.1" + +"@opentelemetry/redis-common@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" + integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== + +"@opentelemetry/resources@1.25.1", "@opentelemetry/resources@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.25.1.tgz#bb9a674af25a1a6c30840b755bc69da2796fefbb" + integrity sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ== + dependencies: + "@opentelemetry/core" "1.25.1" + "@opentelemetry/semantic-conventions" "1.25.1" + +"@opentelemetry/sdk-metrics@^1.9.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz#50c985ec15557a9654334e7fa1018dc47a8a56b7" + integrity sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q== + dependencies: + "@opentelemetry/core" "1.25.1" + "@opentelemetry/resources" "1.25.1" + lodash.merge "^4.6.2" + +"@opentelemetry/sdk-trace-base@^1.22", "@opentelemetry/sdk-trace-base@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.1.tgz#cbc1e60af255655d2020aa14cde17b37bd13df37" + integrity sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw== + dependencies: + "@opentelemetry/core" "1.25.1" + "@opentelemetry/resources" "1.25.1" + "@opentelemetry/semantic-conventions" "1.25.1" + +"@opentelemetry/semantic-conventions@1.25.1", "@opentelemetry/semantic-conventions@^1.17.0", "@opentelemetry/semantic-conventions@^1.22.0", "@opentelemetry/semantic-conventions@^1.23.0", "@opentelemetry/semantic-conventions@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz#0deecb386197c5e9c2c28f2f89f51fb8ae9f145e" + integrity sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ== + +"@opentelemetry/sql-common@^0.40.1": + version "0.40.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz#93fbc48d8017449f5b3c3274f2268a08af2b83b6" + integrity sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg== + dependencies: + "@opentelemetry/core" "^1.1.0" + "@peculiar/asn1-android@^2.1.7": version "2.3.10" resolved "https://registry.yarnpkg.com/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz#a2dde6227fa1ddea33d8ae7835768674e7a0baa6" @@ -829,6 +1055,15 @@ pvtsutils "^1.3.5" tslib "^2.6.2" +"@prisma/instrumentation@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@prisma/instrumentation/-/instrumentation-5.17.0.tgz#f741ff517f54b1a896fb8605e0d702f29855c6cb" + integrity sha512-c1Sle4ji8aasMcYfBBHFM56We4ljfenVtRmS8aY06BllS7SoU6SmJBwG7vil+GHiR0Yrh+t9iBwt4AY0Jr4KNQ== + dependencies: + "@opentelemetry/api" "^1.8" + "@opentelemetry/instrumentation" "^0.49 || ^0.50 || ^0.51 || ^0.52.0" + "@opentelemetry/sdk-trace-base" "^1.22" + "@redis/bloom@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.2.0.tgz#d3fd6d3c0af3ef92f26767b56414a370c7b63b71" @@ -885,6 +1120,71 @@ "@noble/hashes" "~1.4.0" "@scure/base" "~1.1.6" +"@sentry/core@8.23.0": + version "8.23.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.23.0.tgz#76a46f5295857eebd8ec7d9be9341df31e0b66e3" + integrity sha512-o0tHpxwi5WxjaQPtY+BPkG8FliM4QB91QKoi2QclWvR9t9jUgMWZ4ikziybNiKICZRXtN9B6wSBWlPVWfsiN6A== + dependencies: + "@sentry/types" "8.23.0" + "@sentry/utils" "8.23.0" + +"@sentry/node@^8.23.0": + version "8.23.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-8.23.0.tgz#d3e62a19a755b3dc32bf02d5363b5fd3e703eeb5" + integrity sha512-Ys1A5XII74TWG07q/Y2K+fQoatX2sEiTPHLzLyKjsr1nOL6ANnyz+xnWAuYpF5RNa5R39vgJSwvJTR3S0+DnKw== + dependencies: + "@opentelemetry/api" "^1.9.0" + "@opentelemetry/context-async-hooks" "^1.25.1" + "@opentelemetry/core" "^1.25.1" + "@opentelemetry/instrumentation" "^0.52.1" + "@opentelemetry/instrumentation-connect" "0.38.0" + "@opentelemetry/instrumentation-express" "0.41.1" + "@opentelemetry/instrumentation-fastify" "0.38.0" + "@opentelemetry/instrumentation-graphql" "0.42.0" + "@opentelemetry/instrumentation-hapi" "0.40.0" + "@opentelemetry/instrumentation-http" "0.52.1" + "@opentelemetry/instrumentation-ioredis" "0.42.0" + "@opentelemetry/instrumentation-koa" "0.42.0" + "@opentelemetry/instrumentation-mongodb" "0.46.0" + "@opentelemetry/instrumentation-mongoose" "0.40.0" + "@opentelemetry/instrumentation-mysql" "0.40.0" + "@opentelemetry/instrumentation-mysql2" "0.40.0" + "@opentelemetry/instrumentation-nestjs-core" "0.39.0" + "@opentelemetry/instrumentation-pg" "0.43.0" + "@opentelemetry/instrumentation-redis-4" "0.41.0" + "@opentelemetry/resources" "^1.25.1" + "@opentelemetry/sdk-trace-base" "^1.25.1" + "@opentelemetry/semantic-conventions" "^1.25.1" + "@prisma/instrumentation" "5.17.0" + "@sentry/core" "8.23.0" + "@sentry/opentelemetry" "8.23.0" + "@sentry/types" "8.23.0" + "@sentry/utils" "8.23.0" + import-in-the-middle "^1.11.0" + optionalDependencies: + opentelemetry-instrumentation-fetch-node "1.2.3" + +"@sentry/opentelemetry@8.23.0": + version "8.23.0" + resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-8.23.0.tgz#75dd763ae70e749573f775efb1307f1cdce6190d" + integrity sha512-qBDCVHpFAhyV7iZDz4cLpx7U1SBb/MynCwEuLWfK4yojpIihPcxhbJENxjJvsoc/I9img4wx8nJ34G9xpBlOag== + dependencies: + "@sentry/core" "8.23.0" + "@sentry/types" "8.23.0" + "@sentry/utils" "8.23.0" + +"@sentry/types@8.23.0": + version "8.23.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.23.0.tgz#02912ee3be3bc79a40d2d5313d035b524de27d7e" + integrity sha512-oJbZ04chsz3Gqro3GJuAAcEsJ7RVjk3k4TvAMxmhN5tQUqwvKFtvWjfskcF75ECzY+8Qge6PI7eXoibkhjx8sg== + +"@sentry/utils@8.23.0": + version "8.23.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.23.0.tgz#532fb96a645345e2492eb1338b823b95f1078ac7" + integrity sha512-g+rkk+vFQnAz7xHGUTHXybA9qFdp1mtv3JGXtFKlLxPm8bKpzbBlJA3FiX4E7ai/Ksbv0N+K7c5fDth3LX3wAA== + dependencies: + "@sentry/types" "8.23.0" + "@simplewebauthn/server@6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@simplewebauthn/server/-/server-6.2.1.tgz#64a9793e5e4ed33d1fd9b53a6a80f33e916fe44e" @@ -1003,6 +1303,13 @@ dependencies: "@types/node" "*" +"@types/connect@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + dependencies: + "@types/node" "*" + "@types/cookie@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" @@ -1057,6 +1364,13 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== +"@types/mysql@2.15.22": + version "2.15.22" + resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.22.tgz#8705edb9872bf4aa9dbc004cd494e00334e5cdb4" + integrity sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ== + dependencies: + "@types/node" "*" + "@types/node-fetch@^2.5.12": version "2.6.11" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" @@ -1084,6 +1398,31 @@ dependencies: undici-types "~5.26.4" +"@types/pg-pool@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.4.tgz#b5c60f678094ff3acf3442628a7f708928fcf263" + integrity sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ== + dependencies: + "@types/pg" "*" + +"@types/pg@*": + version "8.11.6" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.11.6.tgz#a2d0fb0a14b53951a17df5197401569fb9c0c54b" + integrity sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^4.0.1" + +"@types/pg@8.6.1": + version "8.6.1" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.1.tgz#099450b8dc977e8197a44f5229cedef95c8747f9" + integrity sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^2.2.0" + "@types/qs@*": version "6.9.15" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" @@ -1111,6 +1450,11 @@ "@types/node" "*" "@types/send" "*" +"@types/shimmer@^1.0.2": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/shimmer/-/shimmer-1.2.0.tgz#9b706af96fa06416828842397a70dfbbf1c14ded" + integrity sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg== + "@types/ws@~8.5.10": version "8.5.11" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.11.tgz#90ad17b3df7719ce3e6bc32f83ff954d38656508" @@ -1126,6 +1470,16 @@ accepts@~1.3.4, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + acorn-walk@^8.1.1: version "8.3.3" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" @@ -1133,7 +1487,7 @@ acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^8.11.0, acorn@^8.4.1: +acorn@^8.11.0, acorn@^8.4.1, acorn@^8.8.2: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -1431,6 +1785,11 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" +cjs-module-lexer@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" + integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== + cluster-key-slot@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" @@ -1526,6 +1885,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.5: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" @@ -1931,7 +2297,7 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasown@^2.0.0: +hasown@^2.0.0, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -1983,6 +2349,26 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== +import-in-the-middle@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.7.1.tgz#3e111ff79c639d0bde459bd7ba29dd9fdf357364" + integrity sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg== + dependencies: + acorn "^8.8.2" + acorn-import-assertions "^1.9.0" + cjs-module-lexer "^1.2.2" + module-details-from-path "^1.0.3" + +import-in-the-middle@^1.11.0, import-in-the-middle@^1.8.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.0.tgz#a94c4925b8da18256cde3b3b7b38253e6ca5e708" + integrity sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q== + dependencies: + acorn "^8.8.2" + acorn-import-attributes "^1.9.5" + cjs-module-lexer "^1.2.2" + module-details-from-path "^1.0.3" + inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" @@ -2018,6 +2404,13 @@ is-callable@^1.1.3: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== +is-core-module@^2.13.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== + dependencies: + hasown "^2.0.2" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2146,6 +2539,11 @@ lie@~3.3.0: dependencies: immediate "~3.0.5" +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -2207,6 +2605,11 @@ minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +module-details-from-path@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" + integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -2300,6 +2703,11 @@ object-inspect@^1.13.1: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== +obuf@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -2307,6 +2715,14 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" +opentelemetry-instrumentation-fetch-node@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/opentelemetry-instrumentation-fetch-node/-/opentelemetry-instrumentation-fetch-node-1.2.3.tgz#beb24048bdccb1943ba2a5bbadca68020e448ea7" + integrity sha512-Qb11T7KvoCevMaSeuamcLsAD+pZnavkhDnlVL0kRozfhl42dKG5Q3anUklAFKJZjY3twLR+BnRa6DlwwkIE/+A== + dependencies: + "@opentelemetry/instrumentation" "^0.46.0" + "@opentelemetry/semantic-conventions" "^1.17.0" + pako@1.0.11, pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -2317,11 +2733,55 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-numeric@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" + integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== + +pg-protocol@*: + version "1.6.1" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.1.tgz#21333e6d83b01faaebfe7a33a7ad6bfd9ed38cb3" + integrity sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg== + +pg-types@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + +pg-types@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.2.tgz#399209a57c326f162461faa870145bb0f918b76d" + integrity sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng== + dependencies: + pg-int8 "1.0.1" + pg-numeric "1.0.2" + postgres-array "~3.0.1" + postgres-bytea "~3.0.0" + postgres-date "~2.1.0" + postgres-interval "^3.0.0" + postgres-range "^1.1.1" + picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -2332,6 +2792,55 @@ possible-typed-array-names@^1.0.0: resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-array@~3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98" + integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-bytea@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089" + integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== + dependencies: + obuf "~1.1.2" + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-date@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.1.0.tgz#b85d3c1fb6fb3c6c8db1e9942a13a3bf625189d0" + integrity sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + +postgres-interval@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a" + integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== + +postgres-range@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863" + integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -2446,6 +2955,24 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-in-the-middle@^7.1.1: + version "7.4.0" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz#606977820d4b5f9be75e5a108ce34cfed25b3bb4" + integrity sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ== + dependencies: + debug "^4.3.5" + module-details-from-path "^1.0.3" + resolve "^1.22.8" + +resolve@^1.22.8: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -2471,6 +2998,11 @@ semver@^5.7.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== +semver@^7.5.2: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -2527,6 +3059,11 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +shimmer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + side-channel@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" @@ -2611,6 +3148,11 @@ supports-color@^5.5.0: dependencies: has-flag "^3.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -2808,6 +3350,11 @@ ws@~8.17.1: resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + yallist@4.0.0, yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" From 6c1a877c06acf6c986e40ce5fc64f9a4b740729a Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Tue, 6 Aug 2024 16:56:23 +0530 Subject: [PATCH 29/72] failedTx webhook added --- routes/webhook/thirdweb.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index a48e098..b73baa8 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -57,9 +57,9 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { } export async function failedTxWebHookHandler(req: Request, res: Response) { - const err = new Error("Transaction Failed"); + const err = new Error(`Transaction Failed: ${req.body.functionName}`); Sentry.captureException(err, { - data: { + extra: { ...req.body } }); From 79e8ab08e600bd16c4b1bf63a134e9b02962d9dc Mon Sep 17 00:00:00 2001 From: steven007 Date: Wed, 7 Aug 2024 17:00:33 +0800 Subject: [PATCH 30/72] upgrade docker --- .gitignore copy | 7 +++++++ Dockerfile | 10 ++++++++++ 2 files changed, 17 insertions(+) create mode 100644 .gitignore copy create mode 100644 Dockerfile diff --git a/.gitignore copy b/.gitignore copy new file mode 100644 index 0000000..09259be --- /dev/null +++ b/.gitignore copy @@ -0,0 +1,7 @@ +node_modules +.env* +dist +.DS_Store +*.pem +.npmrc +.sentryclirc \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0174b83 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM node:16.7-alpine3.14 as builder + +WORKDIR /app + +COPY . . + +RUN env NODE_ENV=development yarn install +RUN env NODE_ENV=production yarn build + +CMD yarn start \ No newline at end of file From 681a027f8e3edb8fc638946379d733f34e79beb9 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Thu, 8 Aug 2024 02:41:55 +0530 Subject: [PATCH 31/72] feat: sentry --- lit.ts | 143 ++++++++++++++++----------------- routes/auth/mintAndFetch.ts | 10 +++ routes/auth/status.ts | 21 +++++ routes/delegate/user.ts | 14 +++- routes/thirdweb/transaction.ts | 20 ++++- 5 files changed, 130 insertions(+), 78 deletions(-) diff --git a/lit.ts b/lit.ts index 86996d1..daad69b 100644 --- a/lit.ts +++ b/lit.ts @@ -402,30 +402,29 @@ export async function mintPKPV2({ if (!Object.values(VersionStrategy).includes(versionStrategy)) { throw new Error(`Invalid version strategy. Must be one of: ${Object.values(VersionStrategy).join(", ")}`); } - - - // first get mint cost - const mintCost = await pkpNft[pkpNftFunctions.mintCost](); - - const mintTxData = - await pkpHelper.populateTransaction.mintNextAndAddAuthMethods( - keyType, - permittedAuthMethodTypes, - permittedAuthMethodIds, - permittedAuthMethodPubkeys, - permittedAuthMethodScopes, - addPkpEthAddressAsPermittedAddress, - sendPkpToItself, - { value: mintCost }, - ); + let mintTxData; + let mintCost; + try { + // first get mint cost + mintCost = await pkpNft[pkpNftFunctions.mintCost](); + + mintTxData = + await pkpHelper.populateTransaction.mintNextAndAddAuthMethods( + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + { value: mintCost }, + ); + }catch(err) { + throw err; + } // on our new arb l3, the stylus gas estimation can be too low when interacting with stylus contracts. manually estimate gas and add 5%. let gasLimit; - - - - - try { gasLimit = await pkpNft.provider.estimateGas(mintTxData); // since the gas limit is a BigNumber we have to use integer math and multiply by 200 then divide by 100 instead of just multiplying by 1.05 @@ -444,60 +443,60 @@ export async function mintPKPV2({ gasLimit = ethers.utils.hexlify(5000000); } if (versionStrategy === VersionStrategy.DEFAULT) { - - const tx = await pkpHelper.mintNextAndAddAuthMethods( - keyType, - permittedAuthMethodTypes, - permittedAuthMethodIds, - permittedAuthMethodPubkeys, - permittedAuthMethodScopes, - addPkpEthAddressAsPermittedAddress, - sendPkpToItself, - - { value: mintCost, gasLimit: gasLimit }, - ); - await tx.wait(); - console.log("tx", tx); - return tx; - } -if (versionStrategy === VersionStrategy.FORWARD_TO_THIRDWEB) { - const address = await rr.next(); - // const mintCost = await ThirdWebLib.Contract.read({ - // contractAddress: pkpNft.address, - // functionName: pkpNftFunctions.mintCost, - // }); - - const res = await ThirdWebLib.Contract.write({ - contractAddress: pkpHelper.address, - functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, - args: [ - keyType, - permittedAuthMethodTypes, - permittedAuthMethodIds, - permittedAuthMethodPubkeys, - permittedAuthMethodScopes, - addPkpEthAddressAsPermittedAddress, - sendPkpToItself, - ], - txOverrides: { - value: mintCost.toString(), - gasLimit: gasLimit - }, - // this we have to dynamic using round robin - backendWalletAddress: address, - }); - - console.log("res:", res); - - return res.result; -} - + try { + const tx = await pkpHelper.mintNextAndAddAuthMethods( + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + { value: mintCost, gasLimit: gasLimit }, + ); + await tx.wait(); + console.log("tx", tx); + return tx; + }catch(err) { + throw err; + } + } + if (versionStrategy === VersionStrategy.FORWARD_TO_THIRDWEB) { + try { + const address = await rr.next(); + // const mintCost = await ThirdWebLib.Contract.read({ + // contractAddress: pkpNft.address, + // functionName: pkpNftFunctions.mintCost, + // }); + + const res = await ThirdWebLib.Contract.write({ + contractAddress: pkpHelper.address, + functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, + args: [ + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + ], + txOverrides: { + value: mintCost.toString(), + gasLimit: gasLimit + }, + // this we have to dynamic using round robin + backendWalletAddress: address, + }); + console.log("res:", res); + return res.result; + }catch(err) { + throw err; + } + } throw new Error("Invalid version strategy"); - - - } export async function mintPKP({ diff --git a/routes/auth/mintAndFetch.ts b/routes/auth/mintAndFetch.ts index 9764ff8..bc2620e 100644 --- a/routes/auth/mintAndFetch.ts +++ b/routes/auth/mintAndFetch.ts @@ -10,6 +10,8 @@ import { } from "../../models"; import { getVersionStrategy } from "../VersionStrategy"; import redisClient from "../../lib/redisClient"; +import Sentry from "@sentry/node"; + export async function mintNextAndAddAuthMethodsHandler( req: Request< @@ -60,6 +62,14 @@ export async function mintNextAndAddAuthMethodsHandler( console.error("[mintNextAndAddAuthMethodsHandler] Unable to mint PKP", { err, }); + Sentry.captureException(err, { + contexts: { + request: { + versionStrategy, + ...req.body + }, + } + }); return res.status(500).json({ error: `[mintNextAndAddAuthMethodsHandler] Unable to mint PKP ${JSON.stringify( err, diff --git a/routes/auth/status.ts b/routes/auth/status.ts index 6c1c8ce..1e008a9 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -42,6 +42,13 @@ export async function getAuthStatusHandler( ); // 30000ms is the max we will wait for. console.log("mint PKP receipt", { mintReceipt }); } catch (err: any) { + Sentry.captureException(err, { + contexts: { + request: { + ...req.body + }, + } + }); console.error("Error waiting for transaction hash", { txHash: requestId, err, @@ -64,6 +71,13 @@ export async function getAuthStatusHandler( try { tokenIdFromEvent = await getTokenIdFromTransferEvent(mintReceipt); } catch (err) { + Sentry.captureException(err, { + contexts: { + request: { + ...req.body + }, + } + }); console.error("Error fetching tokenId from receipt", { err, }); @@ -94,6 +108,13 @@ export async function getAuthStatusHandler( pkpPublicKey, }); } catch (err:any) { + Sentry.captureException(err, { + contexts: { + request: { + ...req.body + }, + } + }); console.error("Error fetching PKP information", { tokenIdFromEvent, err, diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index 4d39940..52ca6f5 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -51,7 +51,7 @@ export async function addPayeeHandler(req: Request, res: Response) { const wallet = await deriveWallet(apiKey, payerSecret); let error: string | boolean = false; - + let queueId; try { console.log("addPaymentDelegationPayee..."); const data = await addPaymentDelegationPayee({ @@ -69,7 +69,7 @@ export async function addPayeeHandler(req: Request, res: Response) { } if (data.queueId) { - const queueId = data.queueId; + queueId = data.queueId; // mapping queueId => uuid for webhook console.log("in delegate uuid", uuid); console.log("queueId in delegate uuid", queueId); @@ -82,6 +82,13 @@ export async function addPayeeHandler(req: Request, res: Response) { throw new Error('Failed to add payee: delegation transaction failed'); } catch (err) { + Sentry.captureException(err, { + contexts: { + request: { + ...req.body + }, + } + }); console.error('Failed to add payee', err); error = (err as Error).toString(); } @@ -93,7 +100,8 @@ export async function addPayeeHandler(req: Request, res: Response) { }); } else { res.status(200).json({ - success: true + success: true, + queueId: queueId }); } } \ No newline at end of file diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index 642e783..f5962d9 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -13,7 +13,7 @@ export async function getTxStatusByQueueId( const { queueId } = req.params || req.query; try { let data; - for (let i = 0; i < 100; i++) { + for (let i = 0; i < 50; i++) { console.log('i', i); data = await ThirdWebLib.Action.getTxStatusByQueueId(queueId); console.log(data); @@ -25,15 +25,29 @@ export async function getTxStatusByQueueId( console.log('i', i); return res.status(200).send({ success: false, error: 'Transaction Failed'}); } - } await delay(500); + } if (data.status !== 'sent') { + const err = new Error("Timeout, didn't get any Tx data by queueID within 25 seconds"); + Sentry.captureException(err, { + contexts: { + request: { + ...req.body + }, + } + }); return res.status(408).send({ success: false, error: 'Transaction not sent within expected time' }); } } catch (err:any) { - console.log(err); + Sentry.captureException(err, { + contexts: { + request: { + ...req.body + }, + } + }); res.status(500).send({ success: false, error: err.message }); } } \ No newline at end of file From 1862c0750b2866bef7343b30c73d7b733dc5ce13 Mon Sep 17 00:00:00 2001 From: steven007 Date: Thu, 8 Aug 2024 15:17:31 +0800 Subject: [PATCH 32/72] add command to start docker --- .gitignore | 4 +++- Dockerfile | 2 +- start.sh | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 start.sh diff --git a/.gitignore b/.gitignore index 5260e7f..dc7a15b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ node_modules .env* dist .DS_Store -*.pem \ No newline at end of file +*.pem +.sentryclirc +.npmrc \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 0174b83..71385ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,4 +7,4 @@ COPY . . RUN env NODE_ENV=development yarn install RUN env NODE_ENV=production yarn build -CMD yarn start \ No newline at end of file +CMD ["ash", "start.sh"] \ No newline at end of file diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..b6baa9b --- /dev/null +++ b/start.sh @@ -0,0 +1,8 @@ +#!/bin/ash + +if [ -f /mnt/secrets/default ]; then + # this fill export key values into env + export $(cat /mnt/secrets/default | xargs) +fi + +yarn start \ No newline at end of file From 0b78b9cf9084bd5c1544d2f1d16a7153d22cffb4 Mon Sep 17 00:00:00 2001 From: steven007 Date: Thu, 8 Aug 2024 19:21:56 +0800 Subject: [PATCH 33/72] release to dev env --- Makefile | 26 ++++++++++++++++++++++++++ dev-release.md | 23 +++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 Makefile create mode 100644 dev-release.md diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cdbc0e7 --- /dev/null +++ b/Makefile @@ -0,0 +1,26 @@ +service := relay-server +tag := latest +region := ap-south-1 +namespace := tria-dev +account_id := $(shell aws sts get-caller-identity --output text --query 'Account' --region ${region}) +OSFLAG := env DOCKER_DEFAULT_PLATFORM=linux/amd64 OSFLAG=linux/amd64 + +build: + $(OSFLAG) docker build -t ${service}:${tag} . + +release: + aws --region ${region} ecr get-login-password | docker login -u AWS --password-stdin ${account_id}.dkr.ecr.${region}.amazonaws.com + $(OSFLAG) docker tag ${service}:${tag} ${account_id}.dkr.ecr.${region}.amazonaws.com/${service}:${tag} + $(OSFLAG) docker push ${account_id}.dkr.ecr.${region}.amazonaws.com/${service}:${tag} + + for digest in $$(aws ecr describe-images --repository-name ${service} --filter tagStatus=UNTAGGED --query 'imageDetails[*].imageDigest' --output text --region ${region}); \ + do \ + aws ecr batch-delete-image --repository-name ${service} --image-ids imageDigest=$${digest} --region ${region}; \ + done + +deploy-k8s-dev: + kubectl rollout restart deployment/${service} -n ${namespace} + +reset: + $(OSFLAG) docker rm -f $$($(OSFLAG) docker ps -a -q) + $(OSFLAG) docker system prune -f \ No newline at end of file diff --git a/dev-release.md b/dev-release.md new file mode 100644 index 0000000..5681f64 --- /dev/null +++ b/dev-release.md @@ -0,0 +1,23 @@ +# Deploy Relay Server + +This document show an end to end pipeline on how we can build, release & deploy an `relay-server` into AWS Dev env + +## Prerequisite +- Install [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) +- Install [Kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/) +- Run `xcode-select --install` to install latest command line tools in your MacOS +- Install [Docker Desktop](https://docs.docker.com/desktop/install/mac-install/). After installation, you should set resources limit to `8 CPU` & `12GB` memory +- You should be granted `Administrator` access into [tria-dev aws account](https://d-9067e355bc.awsapps.com/start/#/?tab=accounts). If not, ask Steven or Avi + +## Setup +- Open a new shell console terminal, cd to this `current directoty` & paste your AWS credentials. Then, run below command +``` +# build sample service docker image +make build + +# push docker image into AWS dev ecr +make release + +# deploy sample service into DEV env +make deploy-k8s-dev +``` From 918e2c3f2a2779492b56b83faf8edad4ed50bed7 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Fri, 9 Aug 2024 13:52:46 +0530 Subject: [PATCH 34/72] fix: sentry issue --- routes/auth/status.ts | 1 + routes/delegate/user.ts | 2 ++ routes/thirdweb/transaction.ts | 1 + 3 files changed, 4 insertions(+) diff --git a/routes/auth/status.ts b/routes/auth/status.ts index 1e008a9..396eaf6 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -11,6 +11,7 @@ import { import { getTokenIdFromTransferEvent } from "../../utils/receipt"; import axios from "axios"; import config from "../../config"; +const Sentry = require("@sentry/node"); const safeBlockConfirmations = parseInt( process.env.SAFE_BLOCK_CONFIRMATIONS || "1", diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index 52ca6f5..fd6bce9 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -3,6 +3,8 @@ import { deriveWallet } from './register'; import { addPaymentDelegationPayee } from '../../lit'; import { getVersionStrategy, VersionStrategy } from '../VersionStrategy'; import redisClient from '../../lib/redisClient'; +import Sentry from "@sentry/node"; + export async function addPayeeHandler(req: Request, res: Response) { console.log("helopooo") diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index f5962d9..db030c1 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -1,6 +1,7 @@ import { ThirdWebLib } from "../../lib/thirdweb/ThirdWebLib"; import { Request } from "express"; import { Response } from "express-serve-static-core"; +import Sentry from "@sentry/node"; function delay(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); From cef7b74c687bdd95ca21d1df91e9c6457dd55d16 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Sun, 11 Aug 2024 02:07:32 +0530 Subject: [PATCH 35/72] update failedTx webhook --- routes/webhook/thirdweb.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index b73baa8..23cea61 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -58,9 +58,11 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { export async function failedTxWebHookHandler(req: Request, res: Response) { const err = new Error(`Transaction Failed: ${req.body.functionName}`); + console.log(Sentry.isInitialized()); Sentry.captureException(err, { extra: { ...req.body } }); + res.send({status: 'ok'}); } \ No newline at end of file From 0f9982383955a88f04c31a35b14e11893ee3247b Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Sun, 11 Aug 2024 02:15:02 +0530 Subject: [PATCH 36/72] update failedTx webhook --- routes/auth/mintAndFetch.ts | 2 +- routes/delegate/user.ts | 2 +- routes/thirdweb/transaction.ts | 2 +- routes/webhook/thirdweb.ts | 22 +++++++++++++--------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/routes/auth/mintAndFetch.ts b/routes/auth/mintAndFetch.ts index bc2620e..57477af 100644 --- a/routes/auth/mintAndFetch.ts +++ b/routes/auth/mintAndFetch.ts @@ -10,7 +10,7 @@ import { } from "../../models"; import { getVersionStrategy } from "../VersionStrategy"; import redisClient from "../../lib/redisClient"; -import Sentry from "@sentry/node"; +import * as Sentry from "@sentry/node"; export async function mintNextAndAddAuthMethodsHandler( diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index fd6bce9..ea05ff9 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -3,7 +3,7 @@ import { deriveWallet } from './register'; import { addPaymentDelegationPayee } from '../../lit'; import { getVersionStrategy, VersionStrategy } from '../VersionStrategy'; import redisClient from '../../lib/redisClient'; -import Sentry from "@sentry/node"; +import * as Sentry from "@sentry/node"; export async function addPayeeHandler(req: Request, res: Response) { diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index db030c1..633dfb4 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -1,7 +1,7 @@ import { ThirdWebLib } from "../../lib/thirdweb/ThirdWebLib"; import { Request } from "express"; import { Response } from "express-serve-static-core"; -import Sentry from "@sentry/node"; +import * as Sentry from "@sentry/node"; function delay(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index 23cea61..eefe9ca 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -2,7 +2,8 @@ import { Request, Response } from 'express'; import { isExpired, isValidSignature } from '../../utils/thirdweb/webhook'; import redisClient from '../../lib/redisClient'; import { io } from '../..'; -import Sentry from "@sentry/node"; +import * as Sentry from "@sentry/node"; + const { WEBHOOK_SECRET } = process.env; export async function thirdwebWebHookHandler(req: Request, res: Response) { try { @@ -57,12 +58,15 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { } export async function failedTxWebHookHandler(req: Request, res: Response) { - const err = new Error(`Transaction Failed: ${req.body.functionName}`); - console.log(Sentry.isInitialized()); - Sentry.captureException(err, { - extra: { - ...req.body - } - }); - res.send({status: 'ok'}); + try { + throw new Error(`Transaction Failed: ${req.body.functionName}`); + }catch(err) { + console.log(Sentry.isInitialized()); + Sentry.captureException(err, { + extra: { + ...req.body + } + }); + res.send({status: 'ok'}); + } } \ No newline at end of file From da9f3de536a2e41ead6e843fb75aae23feca3cc3 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Sun, 11 Aug 2024 02:26:20 +0530 Subject: [PATCH 37/72] update failedTx webhook --- routes/webhook/thirdweb.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index eefe9ca..7995306 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -62,10 +62,9 @@ export async function failedTxWebHookHandler(req: Request, res: Response) { throw new Error(`Transaction Failed: ${req.body.functionName}`); }catch(err) { console.log(Sentry.isInitialized()); - Sentry.captureException(err, { - extra: { - ...req.body - } + Sentry.withScope(scope => { + scope.setExtra("request_body", req.body); + Sentry.captureException(err); }); res.send({status: 'ok'}); } From 7c8c0e4f17031a548d162d5c36de5a2fb3a9922c Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Sun, 11 Aug 2024 02:29:34 +0530 Subject: [PATCH 38/72] update failedTx webhook --- routes/auth/status.ts | 6 +++--- routes/delegate/user.ts | 2 +- routes/thirdweb/transaction.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/routes/auth/status.ts b/routes/auth/status.ts index 396eaf6..637d24d 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -45,7 +45,7 @@ export async function getAuthStatusHandler( } catch (err: any) { Sentry.captureException(err, { contexts: { - request: { + request_body: { ...req.body }, } @@ -74,7 +74,7 @@ export async function getAuthStatusHandler( } catch (err) { Sentry.captureException(err, { contexts: { - request: { + request_body: { ...req.body }, } @@ -111,7 +111,7 @@ export async function getAuthStatusHandler( } catch (err:any) { Sentry.captureException(err, { contexts: { - request: { + request_body: { ...req.body }, } diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index ea05ff9..1ac134b 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -86,7 +86,7 @@ export async function addPayeeHandler(req: Request, res: Response) { } catch (err) { Sentry.captureException(err, { contexts: { - request: { + request_body: { ...req.body }, } diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index 633dfb4..ef29267 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -33,7 +33,7 @@ export async function getTxStatusByQueueId( const err = new Error("Timeout, didn't get any Tx data by queueID within 25 seconds"); Sentry.captureException(err, { contexts: { - request: { + request_body: { ...req.body }, } @@ -44,7 +44,7 @@ export async function getTxStatusByQueueId( } catch (err:any) { Sentry.captureException(err, { contexts: { - request: { + request_body: { ...req.body }, } From 7ab7949cb34670f208a73ad214d5ea8821ed5eea Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Wed, 14 Aug 2024 11:57:02 +0530 Subject: [PATCH 39/72] update relayer --- instrument.ts | 6 +++--- routes/auth/status.ts | 2 +- routes/thirdweb/transaction.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/instrument.ts b/instrument.ts index d9f2442..6b3293d 100644 --- a/instrument.ts +++ b/instrument.ts @@ -1,6 +1,6 @@ // Import with `import * as Sentry from "@sentry/node"` if you are using ESM const Sentry = require("@sentry/node"); -Sentry.init({ - dsn: "https://ccf59999fa8b1604370e21a60e6b0565@o4505837187366912.ingest.us.sentry.io/4507728950722560", -}); \ No newline at end of file +// Sentry.init({ +// dsn: "https://ccf59999fa8b1604370e21a60e6b0565@o4505837187366912.ingest.us.sentry.io/4507728950722560", +// }); \ No newline at end of file diff --git a/routes/auth/status.ts b/routes/auth/status.ts index 637d24d..f4379dd 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -92,7 +92,7 @@ export async function getAuthStatusHandler( const pkpPublicKey = await getPkpPublicKey(tokenIdFromEvent); const payeeAddresses = JSON.stringify([pkpEthAddress]); console.log("tooooo...."); - const {data: {queueId}} = await axios.post(`${config.baseUrl}/api/v2/add-users`, { + const {data: {queueId}} = await axios.post(`http://localhost:${config.port}/api/v2/add-users`, { payeeAddresses, uuid }, { headers: { diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index ef29267..6c12ae3 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -21,10 +21,10 @@ export async function getTxStatusByQueueId( if (data.status === 'sent' || data.status === 'mined') { console.log("transactionHash", data.transactionHash); console.log('i', i); - return res.status(200).send({ ...data }); + return res.status(200).send({success: true, ...data }); }else if(data.status === 'errored') { console.log('i', i); - return res.status(200).send({ success: false, error: 'Transaction Failed'}); + return res.status(200).send({data, success: false, error: 'Transaction Failed'}); } await delay(500); } From 08566a1ec483987b3780d759d1ce1b6d00c6030d Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Wed, 14 Aug 2024 13:46:35 +0530 Subject: [PATCH 40/72] update relayer --- instrument.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/instrument.ts b/instrument.ts index 6b3293d..d9f2442 100644 --- a/instrument.ts +++ b/instrument.ts @@ -1,6 +1,6 @@ // Import with `import * as Sentry from "@sentry/node"` if you are using ESM const Sentry = require("@sentry/node"); -// Sentry.init({ -// dsn: "https://ccf59999fa8b1604370e21a60e6b0565@o4505837187366912.ingest.us.sentry.io/4507728950722560", -// }); \ No newline at end of file +Sentry.init({ + dsn: "https://ccf59999fa8b1604370e21a60e6b0565@o4505837187366912.ingest.us.sentry.io/4507728950722560", +}); \ No newline at end of file From d74e5f9db74ec49225aed5cbb8d86ce232fe3f86 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Thu, 15 Aug 2024 15:59:48 +0530 Subject: [PATCH 41/72] env added in sentry --- instrument.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/instrument.ts b/instrument.ts index d9f2442..714baaf 100644 --- a/instrument.ts +++ b/instrument.ts @@ -3,4 +3,5 @@ const Sentry = require("@sentry/node"); Sentry.init({ dsn: "https://ccf59999fa8b1604370e21a60e6b0565@o4505837187366912.ingest.us.sentry.io/4507728950722560", + environment: process.env.NODE_ENV || 'production' }); \ No newline at end of file From b57269dad60f6f3b0f2793246f1352750c04388e Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Thu, 15 Aug 2024 17:43:11 +0530 Subject: [PATCH 42/72] redis added --- index.ts | 81 +++++++++++++++++++----------------- lib/thirdweb/ThirdWebLib.ts | 2 +- lit.ts | 6 +-- routes/auth/mintAndFetch.ts | 2 +- routes/delegate/user.ts | 2 +- routes/webhook/thirdweb.ts | 32 +++++++------- utils/thirdweb/roundRobin.ts | 10 ++++- 7 files changed, 72 insertions(+), 63 deletions(-) diff --git a/index.ts b/index.ts index b318d9e..f86b4dd 100644 --- a/index.ts +++ b/index.ts @@ -71,15 +71,18 @@ import { import { mintClaimedKeyId } from "./routes/auth/claim"; import { registerPayerHandler } from "./routes/delegate/register"; import { addPayeeHandler } from "./routes/delegate/user"; -import redisClient from "./lib/redisClient"; +// import redisClient from "./lib/redisClient"; import { failedTxWebHookHandler, thirdwebWebHookHandler } from "./routes/webhook/thirdweb"; import { getTxStatusByQueueId } from "./routes/thirdweb/transaction"; +import { RoundRobin } from './utils/thirdweb/roundRobin'; +import { backendWallets } from './utils/thirdweb/constants'; const app = express(); let server = http.createServer(app); +export const rr = new RoundRobin(backendWallets); // Store eventEmitter in app.locals // app.locals.eventEmitter = eventEmitter; @@ -89,41 +92,41 @@ app.use(express.static("./public/")); app.use(express.json()); app.use(cors()); -export const io = new SocketIOServer(server, { - cors: { - origin: "*", // Allow all origins, you can restrict this to your client's URL - methods: ["GET", "POST"] - } - }); -io.on('connection', (socket) => { - console.log('New client connected'); - - // Store user identifier with the socket ID in Redis - socket.on('register', async (userId) => { - try { - await redisClient.hSet("userSocketMapping", userId, socket.id); - console.log(`✅ User ${userId} connected with socket ID ${socket.id}`); - }catch(err){ - console.error('❌ Error storing user ID in Redis:', err); - } - }); - - socket.on('disconnect', async () => { - try { - const keys = await redisClient.hKeys('userSocketMapping'); - for (const key of keys) { - const socketId = await redisClient.hGet("userSocketMapping", key); - if (socketId === socket.id) { - // await redisClient.hDel("userSocketMapping", key); - console.log(`🔴 User ${key} disconnected`); - break; - } - } - } catch (err) { - console.error('❌ Error handling disconnection:', err); - } - }); -}); +// export const io = new SocketIOServer(server, { +// cors: { +// origin: "*", // Allow all origins, you can restrict this to your client's URL +// methods: ["GET", "POST"] +// } +// }); +// io.on('connection', (socket) => { +// console.log('New client connected'); + +// // Store user identifier with the socket ID in Redis +// socket.on('register', async (userId) => { +// try { +// await redisClient.hSet("userSocketMapping", userId, socket.id); +// console.log(`✅ User ${userId} connected with socket ID ${socket.id}`); +// }catch(err){ +// console.error('❌ Error storing user ID in Redis:', err); +// } +// }); + +// socket.on('disconnect', async () => { +// try { +// const keys = await redisClient.hKeys('userSocketMapping'); +// for (const key of keys) { +// const socketId = await redisClient.hGet("userSocketMapping", key); +// if (socketId === socket.id) { +// // await redisClient.hDel("userSocketMapping", key); +// console.log(`🔴 User ${key} disconnected`); +// break; +// } +// } +// } catch (err) { +// console.error('❌ Error handling disconnection:', err); +// } +// }); +// }); app.use(limiter); @@ -327,14 +330,16 @@ if (ENABLE_HTTPS) { }, app, ); - server.listen(port, host, () => { + server.listen(port, host, async () => { + await rr.init(); console.log(`🚀 1: Server ready at ${host}:${port}`); }); } else { const host = "127.0.0.1"; const port = config.port; - server.listen(port, () => { + server.listen(port, async () => { + await rr.init(); console.log(`🚀 2: Server ready at ${host}:${port} 🌶️ NETWORK: ${process.env.NETWORK} | RPC: ${process.env.LIT_TXSENDER_RPC_URL} |`); }); } diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index 6743502..acc969a 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -8,7 +8,7 @@ const AUTH_HEADERS = { }; // -- chain config -const LIT_CHAIN_ID = process.env.LIT_CHAIN_ID; +const LIT_CHAIN_ID = process.env.LIT_CHAIN_ID || '175188'; // const LIT_SLUG = "lit-protocol"; // const LIT_SLUG = "2311"; diff --git a/lit.ts b/lit.ts index daad69b..19c5757 100644 --- a/lit.ts +++ b/lit.ts @@ -19,11 +19,6 @@ import { LIT_NETWORK_VALUES } from "@lit-protocol/constants"; import { ThirdWebLib } from "./lib/thirdweb/ThirdWebLib"; import { MintPKPV2 } from "./types/lit"; -import { backendWallets } from "./utils/thirdweb/constants"; -import { RoundRobin } from "./utils/thirdweb/roundRobin"; - -const rr = new RoundRobin(backendWallets); - import { datil, datilDev, @@ -33,6 +28,7 @@ import { } from "@lit-protocol/contracts"; import { VersionStrategy } from "./routes/VersionStrategy"; import { EventEmitter } from "stream"; +import { rr } from "."; // import { waitForEvent } from "./eventEmitter"; function getContractFromWorker( diff --git a/routes/auth/mintAndFetch.ts b/routes/auth/mintAndFetch.ts index 57477af..198a82d 100644 --- a/routes/auth/mintAndFetch.ts +++ b/routes/auth/mintAndFetch.ts @@ -49,7 +49,7 @@ export async function mintNextAndAddAuthMethodsHandler( if (mintTx.queueId) { const queueId = mintTx.queueId; // mapping queueId => uuid for webhook - await redisClient.hSet("userQueueIdMapping", queueId, uuid); + // await redisClient.hSet("userQueueIdMapping", queueId, uuid); return res.status(200).json({ queueId }); diff --git a/routes/delegate/user.ts b/routes/delegate/user.ts index 1ac134b..8c02ab9 100644 --- a/routes/delegate/user.ts +++ b/routes/delegate/user.ts @@ -75,7 +75,7 @@ export async function addPayeeHandler(req: Request, res: Response) { // mapping queueId => uuid for webhook console.log("in delegate uuid", uuid); console.log("queueId in delegate uuid", queueId); - await redisClient.hSet("userQueueIdMapping", queueId, uuid); + // await redisClient.hSet("userQueueIdMapping", queueId, uuid); return res.status(200).send({ queueId }); diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index 7995306..4748cfb 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -1,7 +1,7 @@ import { Request, Response } from 'express'; import { isExpired, isValidSignature } from '../../utils/thirdweb/webhook'; -import redisClient from '../../lib/redisClient'; -import { io } from '../..'; +// import redisClient from '../../lib/redisClient'; +// import { io } from '../..'; import * as Sentry from "@sentry/node"; const { WEBHOOK_SECRET } = process.env; @@ -36,20 +36,20 @@ export async function thirdwebWebHookHandler(req: Request, res: Response) { } // eventEmitter.emit('thirdwebTxSent', { txHash: req.body.transactionHash, queueId: req.body.id }); - console.log("req.body", req.body); - console.log("queueId", req.body.id); - const uuid = await redisClient.hGet("userQueueIdMapping",req.body.id); - console.log("uuid", uuid); - if(!uuid) { - throw new Error("Queue ID not found in redis"); - } - //await redisClient.hDel("userQueueIdMapping", req.body.id); - const socketId = await redisClient.hGet("userSocketMapping",uuid); - console.log("socketId", socketId); - if(!socketId) { - throw new Error("socketId not found in redis"); - } - io.to(socketId).emit('transactionComplete', {txHash: req.body.transactionHash, queueId: req.body.id}); + // console.log("req.body", req.body); + // console.log("queueId", req.body.id); + // const uuid = await redisClient.hGet("userQueueIdMapping",req.body.id); + // console.log("uuid", uuid); + // if(!uuid) { + // throw new Error("Queue ID not found in redis"); + // } + // //await redisClient.hDel("userQueueIdMapping", req.body.id); + // const socketId = await redisClient.hGet("userSocketMapping",uuid); + // console.log("socketId", socketId); + // if(!socketId) { + // throw new Error("socketId not found in redis"); + // } + // io.to(socketId).emit('transactionComplete', {txHash: req.body.transactionHash, queueId: req.body.id}); res.status(200).send({txHash: req.body.transactionHash, queueId: req.body.id}); } catch (err) { console.log(err); diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index e0ab55a..6e2470f 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -1,4 +1,5 @@ import {Mutex} from "async-mutex"; +import redisClient from "../../lib/redisClient"; export class RoundRobin { addresses: string[]; @@ -9,7 +10,14 @@ export class RoundRobin { this.index = 0; this.mutex = new Mutex(); } - + async init () { + const rr_pointer = await redisClient.get(`${process.env.NODE_ENV}_rr_pointer`); + if (rr_pointer) { + this.index = parseInt(rr_pointer); + }else{ + await redisClient.set(`${process.env.NODE_ENV}_rr_pointer`, this.index.toString()); + } + } async next() { const release = await this.mutex.acquire(); try { From 4827ba5d4804f70acba65e7a787e211f2d81b13b Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Thu, 15 Aug 2024 17:53:56 +0530 Subject: [PATCH 43/72] redis added --- utils/thirdweb/roundRobin.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index 6e2470f..a1e6ab1 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -23,6 +23,7 @@ export class RoundRobin { try { const address = this.addresses[this.index]; this.index = (this.index + 1) % this.addresses.length; + await redisClient.set(`${process.env.NODE_ENV}_rr_pointer`, this.index.toString()); return address; } finally { release(); From 85a857607957f594006cfcf347b71ef279cf4906 Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Thu, 15 Aug 2024 18:01:06 +0530 Subject: [PATCH 44/72] redis added --- utils/thirdweb/roundRobin.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index a1e6ab1..a602634 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -23,6 +23,7 @@ export class RoundRobin { try { const address = this.addresses[this.index]; this.index = (this.index + 1) % this.addresses.length; + console.log("this.index", this.index); await redisClient.set(`${process.env.NODE_ENV}_rr_pointer`, this.index.toString()); return address; } finally { From bf6678da20d4f6e693d9be284e24ea3fc1a0627f Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Thu, 15 Aug 2024 18:03:29 +0530 Subject: [PATCH 45/72] redis added --- routes/webhook/thirdweb.ts | 2 +- utils/thirdweb/roundRobin.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/routes/webhook/thirdweb.ts b/routes/webhook/thirdweb.ts index 4748cfb..da9619d 100644 --- a/routes/webhook/thirdweb.ts +++ b/routes/webhook/thirdweb.ts @@ -8,7 +8,7 @@ const { WEBHOOK_SECRET } = process.env; export async function thirdwebWebHookHandler(req: Request, res: Response) { try { // const eventEmitter = req.app.locals.eventEmitter; - console.log("webhook"); + // console.log("webhook"); if (!WEBHOOK_SECRET) { throw new Error("WEBHOOK_SECRET Required"); } diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index a602634..2cccc36 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -23,7 +23,7 @@ export class RoundRobin { try { const address = this.addresses[this.index]; this.index = (this.index + 1) % this.addresses.length; - console.log("this.index", this.index); + console.log("🛑🛑 this.index", this.index); await redisClient.set(`${process.env.NODE_ENV}_rr_pointer`, this.index.toString()); return address; } finally { From 0ccf79697533daa0c70ada29bec968f2fc16656a Mon Sep 17 00:00:00 2001 From: Jatin Gupta Date: Thu, 15 Aug 2024 20:27:24 +0530 Subject: [PATCH 46/72] making hardcoded redis key --- utils/thirdweb/roundRobin.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index 2cccc36..e67057c 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -11,11 +11,11 @@ export class RoundRobin { this.mutex = new Mutex(); } async init () { - const rr_pointer = await redisClient.get(`${process.env.NODE_ENV}_rr_pointer`); + const rr_pointer = await redisClient.get(`production_rr_pointer`); if (rr_pointer) { this.index = parseInt(rr_pointer); }else{ - await redisClient.set(`${process.env.NODE_ENV}_rr_pointer`, this.index.toString()); + await redisClient.set(`production_rr_pointer`, this.index.toString()); } } async next() { @@ -24,7 +24,7 @@ export class RoundRobin { const address = this.addresses[this.index]; this.index = (this.index + 1) % this.addresses.length; console.log("🛑🛑 this.index", this.index); - await redisClient.set(`${process.env.NODE_ENV}_rr_pointer`, this.index.toString()); + await redisClient.set(`production_rr_pointer`, this.index.toString()); return address; } finally { release(); From 81bd39db45e23d3c494251d6460f678c5efbb261 Mon Sep 17 00:00:00 2001 From: Steven Tran Date: Thu, 22 Aug 2024 10:53:51 +0800 Subject: [PATCH 47/72] add env --- start.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/start.sh b/start.sh index b6baa9b..1ddbfcf 100644 --- a/start.sh +++ b/start.sh @@ -3,6 +3,7 @@ if [ -f /mnt/secrets/default ]; then # this fill export key values into env export $(cat /mnt/secrets/default | xargs) + cp /mnt/secrets/default /app/.env fi yarn start \ No newline at end of file From d327fc2ffec3ec2f69cae3083271d345ccbd2b9a Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Fri, 30 Aug 2024 17:28:58 +0530 Subject: [PATCH 48/72] removed adding to payment db logic --- fido-conformance.ts | 2 +- lib/thirdweb/ThirdWebLib.ts | 15 +++++--- lit.ts | 70 +++++++++++++++++++------------------ package.json | 2 +- routes/auth/otp.ts | 2 +- routes/auth/status.ts | 45 +++++++++++++++--------- routes/delegate/register.ts | 5 +-- yarn.lock | 12 +++---- 8 files changed, 87 insertions(+), 66 deletions(-) diff --git a/fido-conformance.ts b/fido-conformance.ts index 276157d..2cc59c9 100644 --- a/fido-conformance.ts +++ b/fido-conformance.ts @@ -71,7 +71,7 @@ fetch("https://mds3.certinfra.fidoalliance.org/getEndpoints", { headers: { "Content-Type": "application/json" }, }) .then((resp) => resp.json()) - .then((json) => { + .then((json:any) => { const mdsServers: string[] = json.result; return MetadataService.initialize({ diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index acc969a..77a44a5 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -1,4 +1,5 @@ import { BigNumber, ethers } from "ethers"; +const fetch = require('node-fetch'); // -- thirdweb config const THIRDWEB_ENGINE_URL = process.env.THIRDWEB_ENGINE_URL; @@ -20,13 +21,14 @@ export namespace ThirdWebLib { * @returns A Promise that resolves to the fetched data. */ export async function get(path: string) { - const res = await ( + // const fetch = (await import('node-fetch')).default; + const res: any = await ( await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { headers: AUTH_HEADERS, }) ) .json() - .catch((err) => { + .catch((err:any) => { console.error("Error fetching chain:", err); }); @@ -42,6 +44,7 @@ export namespace ThirdWebLib { * @returns A Promise that resolves to the response data from the server. */ export async function post(path: string, body: any, extraHeaders = {}) { + // const fetch = (await import('node-fetch')).default; const res = await ( await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { method: "POST", @@ -54,7 +57,7 @@ export namespace ThirdWebLib { }) ) .json() - .catch((err) => { + .catch((err:any) => { console.error("Error fetching chain:", err); }); @@ -106,7 +109,7 @@ export namespace ThirdWebLib { status: "success" | "error"; }> { try { - const res = await ThirdWebLib.Fetch.post( + const res: any = await ThirdWebLib.Fetch.post( "/backend-wallet/create", { label: name, @@ -167,7 +170,7 @@ export namespace ThirdWebLib { fundee, amount, }); - const res = await ThirdWebLib.Fetch.post( + const res:any = await ThirdWebLib.Fetch.post( `/backend-wallet/${LIT_CHAIN_ID}/send-transaction`, { toAddress: fundee, @@ -338,6 +341,8 @@ export namespace ThirdWebLib { return res; } catch (e: any) { + console.log("error in thirdweb write", e); + console.log("error message in thirdweb write", e.message); throw new Error("[ThirdWebLib] Error writing contract:", e); } } diff --git a/lit.ts b/lit.ts index 19c5757..a14025c 100644 --- a/lit.ts +++ b/lit.ts @@ -466,7 +466,7 @@ export async function mintPKPV2({ // functionName: pkpNftFunctions.mintCost, // }); - const res = await ThirdWebLib.Contract.write({ + const res: any = await ThirdWebLib.Contract.write({ contractAddress: pkpHelper.address, functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, args: [ @@ -788,7 +788,7 @@ export async function mintCapacityCredits({ // if(!eventEmitter) { // throw new Error("eventEmitter is required for FORWARD_TO_THIRDWEB"); // } - const response = await ThirdWebLib.Contract.write({ + const response: any = await ThirdWebLib.Contract.write({ contractAddress: contract.address, functionName: 'mint', args: [expires], @@ -906,43 +906,43 @@ export async function addPaymentDelegationPayee({ `Payment delegation is not available on ${config.network}`, ); } - let capacityTokens: CapacityToken[] = []; - if(versionStrategy === VersionStrategy.DEFAULT) { - capacityTokens = await queryCapacityCredits(wallet); - } else { - console.log("queryCapacityCredits", backendWalletAddress); - capacityTokens = await queryCapacityCredits(undefined, backendWalletAddress); - } - // get the first token that is not expired - console.log("Got capacity tokens", JSON.stringify(capacityTokens, null, 2)); - const capacityToken = capacityTokens.find((token) => !token.isExpired); - - let tokenId: number | null = null; - - if (!capacityToken) { - // mint a new token - const minted = await mintCapacityCredits({ signer: wallet, versionStrategy,backendWalletAddress: backendWalletAddress,eventEmitter }); - - if (!minted) { - throw new Error("Failed to mint capacity credits"); - } - - console.log( - "No capacity token found, minted a new one:", - minted.capacityTokenId, - minted - ); - tokenId = minted.capacityTokenId; - } else { - tokenId = capacityToken.tokenId; - } + // let capacityTokens: CapacityToken[] = []; + // if(versionStrategy === VersionStrategy.DEFAULT) { + // capacityTokens = await queryCapacityCredits(wallet); + // } else { + // console.log("queryCapacityCredits", backendWalletAddress); + // capacityTokens = await queryCapacityCredits(undefined, backendWalletAddress); + // } + // // get the first token that is not expired + // console.log("Got capacity tokens", JSON.stringify(capacityTokens, null, 2)); + // const capacityToken = capacityTokens.find((token) => !token.isExpired); + + // let tokenId: number | null = null; + + // if (!capacityToken) { + // // mint a new token + // const minted = await mintCapacityCredits({ signer: wallet, versionStrategy,backendWalletAddress: backendWalletAddress,eventEmitter }); + + // if (!minted) { + // throw new Error("Failed to mint capacity credits"); + // } + + // console.log( + // "No capacity token found, minted a new one:", + // minted.capacityTokenId, + // minted + // ); + // tokenId = minted.capacityTokenId; + // } else { + // tokenId = capacityToken.tokenId; + // } // if (!tokenId) { // throw new Error("Failed to get ID for capacity token"); // } // add payer in contract - const provider = getProvider(); + //const provider = getProvider(); const paymentDelegationContract = await getContractFromWorker( config.network, "PaymentDelegation", @@ -965,7 +965,8 @@ export async function addPaymentDelegationPayee({ // throw new Error("Event emitter is required for forward to thirdweb strategy"); // } console.log("FORWARD_TO_THIRDWEB", backendWalletAddress); - const res = await ThirdWebLib.Contract.write({ + console.time("😓 😓 ThirdWebCall"); + const res:any = await ThirdWebLib.Contract.write({ contractAddress: paymentDelegationContract.address, functionName: 'delegatePaymentsBatch', args: [ @@ -978,6 +979,7 @@ export async function addPaymentDelegationPayee({ // this we have to dynamic using round robin backendWalletAddress: backendWalletAddress, }); + console.timeEnd("😓 😓 ThirdWebCall"); // const {queueId} = res.result; // const data = await waitForEvent(eventEmitter, 'thirdwebTxSent', 5000, queueId); diff --git a/package.json b/package.json index e08a27d..16aeb11 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "express-rate-limit": "^6.6.0", "google-auth-library": "^8.7.0", "js-base64": "^3.7.2", - "node-fetch": "^2.6.0", + "node-fetch": "2", "rate-limit-redis": "^3.0.1", "redis": "^4.4.0", "siwe": "^2.3.2", diff --git a/routes/auth/otp.ts b/routes/auth/otp.ts index 7eeeb65..de7a19f 100644 --- a/routes/auth/otp.ts +++ b/routes/auth/otp.ts @@ -9,7 +9,7 @@ import { OtpVerificationPayload, } from "../../models"; import { getPKPsForAuthMethod, mintPKP } from "../../lit"; -import fetch from "node-fetch"; +// import fetch from "node-fetch"; import { utils } from "ethers"; import { toUtf8Bytes } from "ethers/lib/utils"; diff --git a/routes/auth/status.ts b/routes/auth/status.ts index f4379dd..fd2d716 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -33,14 +33,16 @@ export async function getAuthStatusHandler( console.log("uuid", uuid); // query the chain using requestId as the txHash. const provider = getProvider(); - + console.time("before calling add-user"); let mintReceipt: providers.TransactionReceipt; try { + console.time("🙂 waitForTransaction"); mintReceipt = await provider.waitForTransaction( requestId, safeBlockConfirmations, 30000, ); // 30000ms is the max we will wait for. + console.timeEnd("🙂 waitForTransaction"); console.log("mint PKP receipt", { mintReceipt }); } catch (err: any) { Sentry.captureException(err, { @@ -65,7 +67,7 @@ export async function getAuthStatusHandler( }); } - console.debug(mintReceipt.logs); + //console.debug(mintReceipt.logs); // Once tx hash received, fetch eth adddress from chain let tokenIdFromEvent: string; @@ -88,21 +90,32 @@ export async function getAuthStatusHandler( } try { - const pkpEthAddress = await getPkpEthAddress(tokenIdFromEvent); - const pkpPublicKey = await getPkpPublicKey(tokenIdFromEvent); - const payeeAddresses = JSON.stringify([pkpEthAddress]); - console.log("tooooo...."); - const {data: {queueId}} = await axios.post(`http://localhost:${config.port}/api/v2/add-users`, { - payeeAddresses, uuid - }, { - headers: { - 'api-key': config.apiKey, - 'payer-secret-key': config.payerSecret, - 'Content-Type': 'application/json' - } - }); + console.time("🙂 PKP ETH and PUBLICKEY"); + const [pkpEthAddress, pkpPublicKey] = await Promise.all([ + getPkpEthAddress(tokenIdFromEvent), + getPkpPublicKey(tokenIdFromEvent), + ]); + console.timeEnd("🙂 PKP ETH and PUBLICKEY"); + + //<---- have to add PKP ethAddress to redis for pushing it to payment DB via cron job -----> + + //const payeeAddresses = JSON.stringify([pkpEthAddress]); + //console.log("tooooo...."); + // console.time("🙂 add-users"); + // console.timeEnd("before calling add-user"); + // const {data: {queueId}} = await axios.post(`http://localhost:${config.port}/api/v2/add-users`, { + // payeeAddresses, uuid + // }, { + // headers: { + // 'api-key': config.apiKey, + // 'payer-secret-key': config.payerSecret, + // 'Content-Type': 'application/json' + // } + // }); + // console.timeEnd("🙂 add-users"); + return res.status(200).json({ - queueId: queueId, + //queueId: "queueId", status: AuthStatus.Succeeded, pkpTokenId: tokenIdFromEvent, pkpEthAddress, diff --git a/routes/delegate/register.ts b/routes/delegate/register.ts index e0be77f..5593f6c 100644 --- a/routes/delegate/register.ts +++ b/routes/delegate/register.ts @@ -23,12 +23,13 @@ export function generatePayerSecret(): string { } export async function deriveWallet(apiKey: string, payerSecret: string) { - const mnemonic = process.env.LIT_DELEGATION_ROOT_MNEMONIC; + const mnemonic = 'wife hard height bubble cluster number bike fortune scene oak smart van'; + // const mnemonic = process.env.LIT_DELEGATION_ROOT_MNEMONIC; if (!mnemonic) { throw new Error("Mnemonic not set"); } - + console.log("mnemonic", mnemonic); const hdWallet = utils.HDNode.fromMnemonic(mnemonic); const userPath = `m/44'/60'/0'/0/${normalizeApiKey(apiKey + payerSecret) % 2147483647}`; diff --git a/yarn.lock b/yarn.lock index 15c8d3e..6ebc181 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2645,18 +2645,18 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-fetch@^2.6.0, node-fetch@^2.6.9: +node-fetch@2, node-fetch@^2.6.0, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" From 604ced1ab6f6dd851b95c6454a2b5bbf6d098789 Mon Sep 17 00:00:00 2001 From: Steven Tran Date: Wed, 4 Sep 2024 09:59:14 +0700 Subject: [PATCH 49/72] release-prod --- Makefile | 16 ++++++++++++++++ prod-release.md | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 prod-release.md diff --git a/Makefile b/Makefile index cdbc0e7..eea3d7f 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,11 @@ service := relay-server tag := latest region := ap-south-1 +region_prod := us-east-1 namespace := tria-dev +namespace_prod := tria-prod account_id := $(shell aws sts get-caller-identity --output text --query 'Account' --region ${region}) +account_id_prod := $(shell aws sts get-caller-identity --output text --query 'Account' --region ${region_prod}) OSFLAG := env DOCKER_DEFAULT_PLATFORM=linux/amd64 OSFLAG=linux/amd64 build: @@ -18,9 +21,22 @@ release: aws ecr batch-delete-image --repository-name ${service} --image-ids imageDigest=$${digest} --region ${region}; \ done +release-prod: + aws --region ${region_prod} ecr get-login-password | docker login -u AWS --password-stdin ${account_id_prod}.dkr.ecr.${region_prod}.amazonaws.com + $(OSFLAG) docker tag ${service}:${tag} ${account_id_prod}.dkr.ecr.${region_prod}.amazonaws.com/${service}:${tag} + $(OSFLAG) docker push ${account_id_prod}.dkr.ecr.${region_prod}.amazonaws.com/${service}:${tag} + + for digest in $$(aws ecr describe-images --repository-name ${service} --filter tagStatus=UNTAGGED --query 'imageDetails[*].imageDigest' --output text --region ${region_prod}); \ + do \ + aws ecr batch-delete-image --repository-name ${service} --image-ids imageDigest=$${digest} --region ${region_prod}; \ + done + deploy-k8s-dev: kubectl rollout restart deployment/${service} -n ${namespace} +deploy-k8s-prod: + kubectl rollout restart deployment/${service} -n ${namespace_prod} + reset: $(OSFLAG) docker rm -f $$($(OSFLAG) docker ps -a -q) $(OSFLAG) docker system prune -f \ No newline at end of file diff --git a/prod-release.md b/prod-release.md new file mode 100644 index 0000000..b8c7a76 --- /dev/null +++ b/prod-release.md @@ -0,0 +1,16 @@ +# Deploy Relay Server + +This document show an end to end pipeline on how we can build, release & deploy an `relay-server` into AWS PROD env + +## Setup +- Open a new shell console terminal, cd to this `current directoty` & paste your AWS credentials. Then, run below command +``` +# build sample service docker image +make build + +# push docker image into AWS prod ecr +make release-prod + +# deploy sample service into PROD env +make deploy-k8s-prod +``` From 2fd0a799d4225e12c53802a9d5bd1ebe1228a49d Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Wed, 4 Sep 2024 13:24:18 +0530 Subject: [PATCH 50/72] added optimizatio --- .gitignore | 4 +++- lit.ts | 40 +++++++++++++++++++--------------- routes/auth/status.ts | 4 ++-- routes/thirdweb/transaction.ts | 15 ++++++++----- 4 files changed, 37 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index dc7a15b..546b1db 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ dist .DS_Store *.pem .sentryclirc -.npmrc \ No newline at end of file +.npmrc + +cron \ No newline at end of file diff --git a/lit.ts b/lit.ts index a14025c..f13fa0f 100644 --- a/lit.ts +++ b/lit.ts @@ -378,8 +378,10 @@ export async function mintPKPV2({ sendPkpToItself, ); - const pkpHelper = await getPkpHelperContract(config.network); - const pkpNft = await getPkpNftContract(config.network); + const [pkpHelper, pkpNft] = await Promise.all([ + getPkpHelperContract(config.network), + getPkpNftContract(config.network) + ]); const pkpNftFunctions = { mintCost: 'mintCost', } @@ -402,19 +404,23 @@ export async function mintPKPV2({ let mintCost; try { // first get mint cost - mintCost = await pkpNft[pkpNftFunctions.mintCost](); - - mintTxData = - await pkpHelper.populateTransaction.mintNextAndAddAuthMethods( - keyType, - permittedAuthMethodTypes, - permittedAuthMethodIds, - permittedAuthMethodPubkeys, - permittedAuthMethodScopes, - addPkpEthAddressAsPermittedAddress, - sendPkpToItself, - { value: mintCost }, - ); + // Start both tasks without awaiting them + console.time("😶‍🌫️ get mint cost"); + const mintCostPromise = pkpNft.mintCost(); + const mintTxDataPromise = pkpHelper.populateTransaction.mintNextAndAddAuthMethods( + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + { value: await mintCostPromise } + ); + + // Await both promises at the same time + [mintCost, mintTxData] = await Promise.all([mintCostPromise, mintTxDataPromise]); + console.timeEnd("😶‍🌫️ get mint cost"); }catch(err) { throw err; } @@ -465,7 +471,7 @@ export async function mintPKPV2({ // contractAddress: pkpNft.address, // functionName: pkpNftFunctions.mintCost, // }); - + console.time("Thirdweb"); const res: any = await ThirdWebLib.Contract.write({ contractAddress: pkpHelper.address, functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, @@ -485,7 +491,7 @@ export async function mintPKPV2({ // this we have to dynamic using round robin backendWalletAddress: address, }); - + console.timeEnd("Thirdweb"); console.log("res:", res); return res.result; }catch(err) { diff --git a/routes/auth/status.ts b/routes/auth/status.ts index fd2d716..322e643 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -43,7 +43,7 @@ export async function getAuthStatusHandler( 30000, ); // 30000ms is the max we will wait for. console.timeEnd("🙂 waitForTransaction"); - console.log("mint PKP receipt", { mintReceipt }); + //console.log("mint PKP receipt", { mintReceipt }); } catch (err: any) { Sentry.captureException(err, { contexts: { @@ -98,7 +98,7 @@ export async function getAuthStatusHandler( console.timeEnd("🙂 PKP ETH and PUBLICKEY"); //<---- have to add PKP ethAddress to redis for pushing it to payment DB via cron job -----> - + //const payeeAddresses = JSON.stringify([pkpEthAddress]); //console.log("tooooo...."); // console.time("🙂 add-users"); diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index 6c12ae3..5636593 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -11,22 +11,25 @@ export async function getTxStatusByQueueId( req: Request, res: Response, ) { + const DELAY = 100; const { queueId } = req.params || req.query; try { let data; - for (let i = 0; i < 50; i++) { - console.log('i', i); + for (let i = 0; i < 100; i++) { + //console.log('i', i); + console.time("Thirdweb"); data = await ThirdWebLib.Action.getTxStatusByQueueId(queueId); - console.log(data); + console.timeEnd("Thirdweb"); + //console.log(data); if (data.status === 'sent' || data.status === 'mined') { - console.log("transactionHash", data.transactionHash); + //console.log("transactionHash", data.transactionHash); console.log('i', i); - return res.status(200).send({success: true, ...data }); + return res.status(200).send({success: true, transactionHash: data.transactionHash, queueId: data.queueId}); }else if(data.status === 'errored') { console.log('i', i); return res.status(200).send({data, success: false, error: 'Transaction Failed'}); } - await delay(500); + await delay(DELAY); } if (data.status !== 'sent') { From fd540883ed62c5fe535a8a1ec5fc4ee7f1e69ca8 Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Fri, 6 Sep 2024 00:38:57 +0530 Subject: [PATCH 51/72] added cron to tsconfig --- tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index e067ebb..440f3f8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,6 +23,7 @@ }, "exclude": [ "node_modules", - "**/dist/*" + "**/dist/*", + "cron" ] } \ No newline at end of file From d9fc759b1022a74b78121ee47eaaaf026185327c Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Sat, 7 Sep 2024 03:28:47 +0530 Subject: [PATCH 52/72] added logs --- lib/thirdweb/ThirdWebLib.spec.ts | 52 ++++++++++++++++---------------- lib/thirdweb/ThirdWebLib.ts | 10 ++++-- lit.ts | 24 +++++++++++++-- 3 files changed, 55 insertions(+), 31 deletions(-) diff --git a/lib/thirdweb/ThirdWebLib.spec.ts b/lib/thirdweb/ThirdWebLib.spec.ts index 76c6959..e822fa1 100644 --- a/lib/thirdweb/ThirdWebLib.spec.ts +++ b/lib/thirdweb/ThirdWebLib.spec.ts @@ -21,31 +21,31 @@ import fs from "fs"; // }); // bun test --test-name-pattern 'create 500 wallets' --timeout 300000 -test("create 500 wallets", async () => { - const totalWallets = 500; - const currentTotalWallets = await ThirdWebLib.Action.getAllWallets(); - console.log("currentTotalWallets",currentTotalWallets.length); - const addresses = currentTotalWallets.map(currentTotalWallet => currentTotalWallet.address); - fs.writeFile('wallet_addresses.json', JSON.stringify(addresses, null, 2), (err) => { - if (err) { - console.error('Error writing file:', err); - } else { - console.log('Addresses saved to wallet_addresses.json'); - } - }); - // const neededWallets = totalWallets - currentTotalWallets.length; - // console.log("neededWallets:", neededWallets); - - - // for (let i = currentTotalWallets.length + 1; i <= neededWallets; i++) { - // const label = `testing-wallet-${i}`; - // const res = await ThirdWebLib.Action.createWallet(label); - // console.log(`${label}:`, res); - - // expect(res).toHaveProperty("walletAddress"); - // expect(res.status).toBe("success"); - // } -}); +// test("create 500 wallets", async () => { +// const totalWallets = 500; +// const currentTotalWallets = await ThirdWebLib.Action.getAllWallets(); +// console.log("currentTotalWallets",currentTotalWallets.length); +// const addresses = currentTotalWallets.map(currentTotalWallet => currentTotalWallet.address); +// fs.writeFile('wallet_addresses.json', JSON.stringify(addresses, null, 2), (err) => { +// if (err) { +// console.error('Error writing file:', err); +// } else { +// console.log('Addresses saved to wallet_addresses.json'); +// } +// }); +// // const neededWallets = totalWallets - currentTotalWallets.length; +// // console.log("neededWallets:", neededWallets); + + +// // for (let i = currentTotalWallets.length + 1; i <= neededWallets; i++) { +// // const label = `testing-wallet-${i}`; +// // const res = await ThirdWebLib.Action.createWallet(label); +// // console.log(`${label}:`, res); + +// // expect(res).toHaveProperty("walletAddress"); +// // expect(res.status).toBe("success"); +// // } +// }); // Used this to create a master wallet address // // bun test --test-name-pattern 'ethers generate private key' @@ -80,7 +80,7 @@ test("maintainBalances", async () => { } const queueIds = await ThirdWebLib.Action.maintainBalances({ - minimumBalance: "0.001", + minimumBalance: "0.01", funderAddress: '0xbF678cB0898856da855796C700107d75Efe5f534', // maxWallets: 1 }); diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index 77a44a5..ad6461a 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -45,6 +45,7 @@ export namespace ThirdWebLib { */ export async function post(path: string, body: any, extraHeaders = {}) { // const fetch = (await import('node-fetch')).default; + console.log("THIRDWEB POST", {path: path, txBody: JSON.stringify(body)}); const res = await ( await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { method: "POST", @@ -209,7 +210,7 @@ export namespace ThirdWebLib { maxWallets?: number; }): Promise<{ queueId: string }[]> { const wallets = await ThirdWebLib.Action.getAllWallets({ - limit: maxWallets || 510, + limit: maxWallets || 502, }); // -- get all balances @@ -218,13 +219,16 @@ export namespace ThirdWebLib { }); const balances = await Promise.all(balancePromises); - + console.log("balances", balances); // -- get all funding promises const fundPromises = balances.map((balance, i) => { - const currentBalance = ethers.utils.parseEther(balance.value); + const currentBalance = ethers.utils.parseEther(balance.displayValue); + console.log(currentBalance.toString()); + console.log(ethers.utils.parseEther(minimumBalance).toString()); const diff = ethers.utils .parseEther(minimumBalance) .sub(currentBalance); + //console.log("diff", diff.toString()); if (diff.gt(0)) { const diffInWei = diff.toString(); diff --git a/lit.ts b/lit.ts index f13fa0f..38b3627 100644 --- a/lit.ts +++ b/lit.ts @@ -471,7 +471,27 @@ export async function mintPKPV2({ // contractAddress: pkpNft.address, // functionName: pkpNftFunctions.mintCost, // }); - console.time("Thirdweb"); + // console.time("Thirdweb"); + console.log("THIRDWEB PARAMS"); + console.log(JSON.stringify({ + contractAddress: pkpHelper.address, + functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, + args: [ + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + ], + txOverrides: { + value: mintCost.toString(), + gasLimit: gasLimit + }, + // this we have to dynamic using round robin + backendWalletAddress: address, + })) const res: any = await ThirdWebLib.Contract.write({ contractAddress: pkpHelper.address, functionName: pkpHelperFunctions.mintNextAndAddAuthMethods, @@ -491,7 +511,7 @@ export async function mintPKPV2({ // this we have to dynamic using round robin backendWalletAddress: address, }); - console.timeEnd("Thirdweb"); + // console.timeEnd("Thirdweb"); console.log("res:", res); return res.result; }catch(err) { From 0a29c854cb0f9e9345762255eff354da4d7f971f Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Sat, 7 Sep 2024 03:35:40 +0530 Subject: [PATCH 53/72] change status code --- lib/thirdweb/ThirdWebLib.spec.ts | 50 ++++++++++++++++---------------- routes/thirdweb/transaction.ts | 4 +-- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/lib/thirdweb/ThirdWebLib.spec.ts b/lib/thirdweb/ThirdWebLib.spec.ts index e822fa1..759fbc4 100644 --- a/lib/thirdweb/ThirdWebLib.spec.ts +++ b/lib/thirdweb/ThirdWebLib.spec.ts @@ -21,31 +21,31 @@ import fs from "fs"; // }); // bun test --test-name-pattern 'create 500 wallets' --timeout 300000 -// test("create 500 wallets", async () => { -// const totalWallets = 500; -// const currentTotalWallets = await ThirdWebLib.Action.getAllWallets(); -// console.log("currentTotalWallets",currentTotalWallets.length); -// const addresses = currentTotalWallets.map(currentTotalWallet => currentTotalWallet.address); -// fs.writeFile('wallet_addresses.json', JSON.stringify(addresses, null, 2), (err) => { -// if (err) { -// console.error('Error writing file:', err); -// } else { -// console.log('Addresses saved to wallet_addresses.json'); -// } -// }); -// // const neededWallets = totalWallets - currentTotalWallets.length; -// // console.log("neededWallets:", neededWallets); - - -// // for (let i = currentTotalWallets.length + 1; i <= neededWallets; i++) { -// // const label = `testing-wallet-${i}`; -// // const res = await ThirdWebLib.Action.createWallet(label); -// // console.log(`${label}:`, res); - -// // expect(res).toHaveProperty("walletAddress"); -// // expect(res.status).toBe("success"); -// // } -// }); +test("create 500 wallets", async () => { + const totalWallets = 500; + const currentTotalWallets = await ThirdWebLib.Action.getAllWallets(); + console.log("currentTotalWallets",currentTotalWallets.length); + const addresses = currentTotalWallets.map(currentTotalWallet => currentTotalWallet.address); + fs.writeFile('wallet_addresses.json', JSON.stringify(addresses, null, 2), (err) => { + if (err) { + console.error('Error writing file:', err); + } else { + console.log('Addresses saved to wallet_addresses.json'); + } + }); + // const neededWallets = totalWallets - currentTotalWallets.length; + // console.log("neededWallets:", neededWallets); + + + // for (let i = currentTotalWallets.length + 1; i <= neededWallets; i++) { + // const label = `testing-wallet-${i}`; + // const res = await ThirdWebLib.Action.createWallet(label); + // console.log(`${label}:`, res); + + // expect(res).toHaveProperty("walletAddress"); + // expect(res.status).toBe("success"); + // } +}); // Used this to create a master wallet address // // bun test --test-name-pattern 'ethers generate private key' diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index 5636593..ad8bd86 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -11,7 +11,7 @@ export async function getTxStatusByQueueId( req: Request, res: Response, ) { - const DELAY = 100; + const DELAY = 200; const { queueId } = req.params || req.query; try { let data; @@ -27,7 +27,7 @@ export async function getTxStatusByQueueId( return res.status(200).send({success: true, transactionHash: data.transactionHash, queueId: data.queueId}); }else if(data.status === 'errored') { console.log('i', i); - return res.status(200).send({data, success: false, error: 'Transaction Failed'}); + return res.status(500).send({data, success: false, error: 'Transaction Failed'}); } await delay(DELAY); } From dfb1efb7062fb61685752b114acc747184ce2f4f Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Sat, 7 Sep 2024 04:38:22 +0530 Subject: [PATCH 54/72] Segregation added --- config/index.ts | 6 +- index.ts | 2 +- lib/thirdweb/ThirdWebLib.spec.ts | 31 +- lib/thirdweb/ThirdWebLib.ts | 14 +- models/index.ts | 1 + utils/thirdweb/constants.ts | 1503 ++++++++++++++++++++---------- utils/thirdweb/roundRobin.ts | 34 +- wallet_addresses.json | 1002 ++++++++++++++++++++ 8 files changed, 2056 insertions(+), 537 deletions(-) create mode 100644 wallet_addresses.json diff --git a/config/index.ts b/config/index.ts index 8381095..16d788b 100644 --- a/config/index.ts +++ b/config/index.ts @@ -19,7 +19,8 @@ const { EXPECTED_ORIGINS, RELAYER_BASE_URL, PAYER_SECRET, - API_KEY + API_KEY, + NODE_ENV } = process.env; const baseConfig = { @@ -59,7 +60,8 @@ const baseConfig = { expectedOrigins: EXPECTED_ORIGINS?.split(",") || ["http://localhost:3000"], baseUrl: RELAYER_BASE_URL, apiKey: API_KEY, - payerSecret: PAYER_SECRET + payerSecret: PAYER_SECRET, + env: NODE_ENV }; export default { diff --git a/index.ts b/index.ts index f86b4dd..4bf64b3 100644 --- a/index.ts +++ b/index.ts @@ -82,7 +82,7 @@ import { backendWallets } from './utils/thirdweb/constants'; const app = express(); let server = http.createServer(app); -export const rr = new RoundRobin(backendWallets); +export const rr = new RoundRobin(backendWallets, config.env); // Store eventEmitter in app.locals // app.locals.eventEmitter = eventEmitter; diff --git a/lib/thirdweb/ThirdWebLib.spec.ts b/lib/thirdweb/ThirdWebLib.spec.ts index 759fbc4..ec1a75a 100644 --- a/lib/thirdweb/ThirdWebLib.spec.ts +++ b/lib/thirdweb/ThirdWebLib.spec.ts @@ -22,31 +22,36 @@ import fs from "fs"; // bun test --test-name-pattern 'create 500 wallets' --timeout 300000 test("create 500 wallets", async () => { - const totalWallets = 500; + const totalWallets = 1001; // Desired total number of wallets const currentTotalWallets = await ThirdWebLib.Action.getAllWallets(); - console.log("currentTotalWallets",currentTotalWallets.length); + console.log("currentTotalWallets:", currentTotalWallets.length); + const addresses = currentTotalWallets.map(currentTotalWallet => currentTotalWallet.address); - fs.writeFile('wallet_addresses.json', JSON.stringify(addresses, null, 2), (err) => { - if (err) { - console.error('Error writing file:', err); - } else { - console.log('Addresses saved to wallet_addresses.json'); - } - }); + // fs.writeFile('wallet_addresses.json', JSON.stringify(addresses, null, 2), (err) => { + // if (err) { + // console.error('Error writing file:', err); + // } else { + // console.log('Addresses saved to wallet_addresses.json'); + // } + // }); + + // Calculate the number of wallets needed to reach the total desired count // const neededWallets = totalWallets - currentTotalWallets.length; // console.log("neededWallets:", neededWallets); - - // for (let i = currentTotalWallets.length + 1; i <= neededWallets; i++) { - // const label = `testing-wallet-${i}`; + // // Correct loop to create the exact number of wallets needed + // for (let i = 0; i < neededWallets; i++) { + // const label = `testing-wallet-${currentTotalWallets.length + i + 1}`; // Properly indexes from current count // const res = await ThirdWebLib.Action.createWallet(label); // console.log(`${label}:`, res); + // // Ensure the wallet creation response is as expected // expect(res).toHaveProperty("walletAddress"); // expect(res.status).toBe("success"); // } }); + // Used this to create a master wallet address // // bun test --test-name-pattern 'ethers generate private key' // // 0x05Dffce4D37ffEeb758b01fE3d1f0468a78fD58D @@ -86,7 +91,7 @@ test("maintainBalances", async () => { }); const funded = queueIds.filter((q) => q.queueId === ""); - const funding = 500 - funded.length; + const funding = 1000 - funded.length; console.log("funded:", funded.length); console.log("funding:", funding); }); diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index ad6461a..3f37771 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -210,7 +210,7 @@ export namespace ThirdWebLib { maxWallets?: number; }): Promise<{ queueId: string }[]> { const wallets = await ThirdWebLib.Action.getAllWallets({ - limit: maxWallets || 502, + limit: maxWallets || 1000, }); // -- get all balances @@ -219,12 +219,12 @@ export namespace ThirdWebLib { }); const balances = await Promise.all(balancePromises); - console.log("balances", balances); + //console.log("balances", balances); // -- get all funding promises const fundPromises = balances.map((balance, i) => { const currentBalance = ethers.utils.parseEther(balance.displayValue); - console.log(currentBalance.toString()); - console.log(ethers.utils.parseEther(minimumBalance).toString()); + //console.log(currentBalance.toString()); + //console.log(ethers.utils.parseEther(minimumBalance).toString()); const diff = ethers.utils .parseEther(minimumBalance) .sub(currentBalance); @@ -239,9 +239,9 @@ export namespace ThirdWebLib { amount: diffInWei, }); } else { - console.log( - `[${i}]: no need to fund ${balance.walletAddress}`, - ); + // console.log( + // `[${i}]: no need to fund ${balance.walletAddress}`, + // ); return Promise.resolve({ queueId: "" }); } }); diff --git a/models/index.ts b/models/index.ts index d974d9e..6c22469 100644 --- a/models/index.ts +++ b/models/index.ts @@ -150,6 +150,7 @@ export interface Config { baseUrl: string; apiKey:string; payerSecret: string; + env: "production" | "staging"; } export enum CapabilityProtocolPrefix { diff --git a/utils/thirdweb/constants.ts b/utils/thirdweb/constants.ts index aaef3e0..a42711f 100644 --- a/utils/thirdweb/constants.ts +++ b/utils/thirdweb/constants.ts @@ -1,503 +1,1002 @@ export const backendWallets = [ - "0x0012f2df354a8676a68e5f4587bfa80b67948a7a", - "0x00cbf74201f02b3511fd02f81862900e61c525a6", - "0x012c2bce50d6086bf6347cd5b61989be1caf3bdc", - "0x0169106698aa1127dec37d68c23c73284d8b48ae", - "0x01a8b394eb6dd968cf1ce94abbe8473c230e9a00", - "0x02127690a0493c00e35d630f4569ff79350052c8", - "0x029c015702d0252df59905b5348e5b003fcedf8e", - "0x03850f48a8fdaefc626c9225223b4daa0255e76e", - "0x045a076f6513ca141f62503ff709ddcb1a57b114", - "0x046fbd3bf9b965ce5f44e5a87ec7a9ab5ed8e480", - "0x05236739150dbc046891b13e265ff2f4d24ea635", - "0x0546e205b538b906b098440744874cb6881d83b2", - "0x05b6ec5200d2eec6d896f5a1fb6d1e2753ccca7e", - "0x05f30d55ab1e34d74575d0cbf766e36b4e8dd9b5", - "0x06101124d32f92f078ff1d2eda4e8ef97bd1d669", - "0x06a47001da60da83d14d903e0cc30a545516062d", - "0x070c4435eb9afa546a788b531b1c4d1ed3db05e8", - "0x0734fe79a324503d203e6c75970b9e6bc30cae90", - "0x075c55fa60b804e6b2a117f9000690f6ce6fbbea", - "0x07c2b67460c07db63458550964ebca2dee4b92db", - "0x08ff07fd360f70532cd367ec3e2c663f7d63bcd1", - "0x0998a2e09783abc8eabfa3ee9d3bd44a597738e0", - "0x09c657d59f0a69cbf3aaa9079b574b55cd5d19ae", - "0x0aa1bb82c933cc6e0c9c2131b52ee5c23c88fd31", - "0x0acefa81afba562d97e5c66edd4596dcb7a180ab", - "0x0b0a3fd675238c41170f6a7fe5ad04ad3bb20fd8", - "0x0b1453c27dc9602fd17e2b187ff10288ea78bef2", - "0x0b8fc5ebd3a221c058cd84d3f635ff63696642b1", - "0x0bc1afa1933dd178531dd985e989c5626b650b06", - "0x0c1dd41e9e76f78d486d1616240507a891f548cc", - "0x0c77f105c7fcf42abb832f450b40744b34e17a34", - "0x0c850f4a6ab80748f790155757d1abae4371b408", - "0x0d222268c82d5490277a18697a1f52cc6674d3f4", - "0x0d346985e16349bd13f496b397cfb280b0bc4d94", - "0x0edba5a90a7d2c7d1ba314fcea5262fb4f6d81bb", - "0x0f003e327b91e4dceac101d89bb238c3ed38be85", - "0x0f75a3be357a275086a5123d533ea70d65e63eae", - "0x10b753f3244a0276508bd69e3a9bff4fdaa2c5ee", - "0x115e77388024b06af27fa56cce7782bb3c0b1425", - "0x13154c8b02bdc32e06dbe282cc6beced0cdeb978", - "0x13dcab8f57fdbe5241ac09c330c2213976d85ddf", - "0x1440ffb43850c6c6928e9482d1e8342f6eede212", - "0x1479442c5c888a71d9c92d51074775576473e8e5", - "0x14c78a8145d3df87a8b3855c4596e2f8f95970c1", - "0x158687ce1db2bae9a49cb3348a3826504136d123", - "0x159a5a0d08bf97aafb5316ae6dca8459d2799c29", - "0x15b2bcab312c421a6cb6fd4c3f15c990867202aa", - "0x1689b3d047a414fecf8ae98ccf674eed348b298b", - "0x169ac62cab6f7d8afd0ba64ff9620294885a07a8", - "0x16d88dbe5762116d6229547f97eaa85278c12b19", - "0x1792ffdbd12f6e770ff543acb988a6dc386bb6f2", - "0x1864c057b6a72445cdb2efa6e17e1389f9b1d073", - "0x190edcbece40a5fe53a600d8e73491c02f52f5c0", - "0x19c83255df8c29f867d1d1e5b2735bca5b2f9db4", - "0x19df0780d73a4bf37e6826cd8a0184ed92db09fe", - "0x1a120663f2ab24a753fbb70def177d5492e4058b", - "0x1aa9ea375f7320d27aa6328b2a850ad8cada96d5", - "0x1aea0ca93107d00ef53b5d68010c9fde8ab0dcb0", - "0x1bdcc766643fb7e355f823bccc74e8d7ff187ef6", - "0x1bf2daf7d7395154e60d23233d09a7336e7b3aba", - "0x1d0caa6c55d7293e2fe085f0f3a55544446a0ebb", - "0x1d77a87c7cc7fbc605b1a5b00b0c4ba469382d4c", - "0x1e373308548d5e094a8efe8b7043f831f81dd7ce", - "0x1eaa1e6d4209dc8deb8c79ddc894bdd7a0132a42", - "0x1ec27afb1444e647672990fd029d68edee662656", - "0x1f1a83bfbd48766d81da8fac53152c20dfd6458b", - "0x1fc8ff614b3a0965ab863a24613079230e0fb26b", - "0x1fed9c6bd241d09fcdbdb0c61eaa563e5c9a8109", - "0x1ff4ed74399b8330cd5a1d1e33d3de7e19669bb9", - "0x20b2bef23eb455b57af3d9da9d8f85fddc6d591b", - "0x21805f51e1f248fd598d930385afe64437427054", - "0x2217c59c17db3cc61990e47fff2f911f68ce43c5", - "0x22649b953c972f0739733fb2c13f2db1cb52b739", - "0x2292267c8ea09de8b40d736157314e099b76c9b6", - "0x2364d773dc3d761b60f26b961764a4d9d88b0b25", - "0x23bdb889379278db240515fbaaceb664ffd76703", - "0x25c96c47ed08176e2fb72afc2919fc8cbe115dc7", - "0x269850d594ccf03cf1f7db58ff6882e872fbc0be", - "0x26b09ee008b4dc7ecb7435ff33f1c6c563db88af", - "0x2800b895df0437e87278f988b363f606cd88401c", - "0x287d4ff86c036b7712f92cc6f47649ebcfccb11b", - "0x2887a0b67b6063baaa32b57ac9d59d1c050fe2b7", - "0x29450bc740be08833074e24ac4ba5cf56b29e3a2", - "0x2951d560fda1ea00560a161faf2c183fae338448", - "0x2adf74c95313de00238710417ba3761d9c04ba06", - "0x2bafc5c5657c2b90928a685af4fbfb498caea5b1", - "0x2bf533183251abe50ceda3a3c4c171e3c6470406", - "0x2bffa8518ff9a9b5f4163ac53107eb315ec2cca6", - "0x2c735f62a124c98ba85b36707ad77eb7cd287cda", - "0x2e4c508a04b4556399ee9b98fab2bcc0e19c4168", - "0x2e87a7f37f820da8286393f6d3767280103d95b9", - "0x2ec1374702cdb0501d97c9bbc215c3b2815d4fac", - "0x2f163dd164137b0c5364cd2b9c23dcb621bdeb9d", - "0x310ff865859d45fe6b1596ab0322b785b705a203", - "0x312a5746f27a77eb9fee7dbb627b7fe4fa532a89", - "0x320be76a31a1eeb90eb81f3aaf226859297776b1", - "0x322cd101cb4df4904a90176bab57dda6e751aca1", - "0x327403f5d61d8096e378b15d44692d94f4d63d77", - "0x327b4b2fb7537ffae5a6e6c1a51b2ded202e83ad", - "0x32eceae262eb188a6ffa252144d90c4d8d42c001", - "0x3304393cb40a0be44bc7203c68758589c55c7d3e", - "0x331e655c2f0ca63e8f6da266c3217355e8d305d9", - "0x333dcd23b665dc0b45f715bb9c6ddb6ab82ce380", - "0x336ff1f10690be18ead0eda0bcf813e8be919ab0", - "0x33b820ea2b4ed872f3e3e57c97078498ad1f4565", - "0x33f7c5f9cbf3598007a20a5ffae0152e3443adb0", - "0x348bb7779b02821d4f1abb5a86c1615aa427d22e", - "0x34ed0e5d64c84e0fb4b6bd11694d47731c3a9aa7", - "0x3500173b793e7632ea7be156eba05c14d4de5ebb", - "0x35bb928ad826be31eae6a6b076b53d7b2b36f8a3", - "0x35c6f93023cc27068dbee8e0c92bb638b6f96178", - "0x362c1a09ff1dd12c57148333a27e1298be76b3b7", - "0x3712e29efa4f3bd5b5cc53c1c70a845194b9fda8", - "0x3734d23382746e8db45bbf792cafd1c8bcd107ec", - "0x3756ed6a7dc8a7786c86b8853aecbb770004d8ff", - "0x38d8d63320eb2c7752e045a945a73077abaacff6", - "0x391765d6d8d4a3c1b1664406f4c7ec007cd0cea5", - "0x3a355550bfa6a221704c84fb349e02f24f2a5593", - "0x3a47d959587ec724c4f10793f556496d21225eda", - "0x3b9b2f1c12c468bcc00e108bd26801dcff471eba", - "0x3be8c0533a44067a8117601c723f67a845745df8", - "0x3bf45213198956ae5655ce377c3bae0d9d9b8623", - "0x3bf6c4c445e2699eed24cf22b675fca034e7c552", - "0x3c3e119853e3c1e81790a007a2c1e91c00d78174", - "0x3c95d8591303c3af9c7d51c6d1968968d9a99ef4", - "0x3cae68248f81999aa3db5a227eadb609502200ca", - "0x3d41a6097a054be94a816e91362e7a9181afd950", - "0x3d58ba8a3e6e20fc48841f028857217e13144274", - "0x3e780db3c104c0ce65cbf142a53cdad9019d8a57", - "0x3e910132cda01ab8e73113f0e58d3e114174c636", - "0x3e9ed3366fbca13d547885931e83ada76e0016ec", - "0x3eb515f3094a0cf1350a19ea0f6d6a4d908103cf", - "0x3ebe91b80dfe4db91f925c58803cfef2e98715cd", - "0x3ebeb9d83c0f62dd03028e3a6e3b070617ed3e5f", - "0x3f9687c386c05083359d408de501d9c73a46477c", - "0x402adfcfbf77a0460eb5ce60e4939c93d7ce506f", - "0x403b3c6216b15d6697c12d7d5db7e9092808590d", - "0x4050782213123b2f17b5277e2e1a198eb08b7c9b", - "0x4186074eaf99d6c2d77821f96677ae96701e727e", - "0x41fdd5c13c7d8303e6a541a83199cb5f1913515b", - "0x4279b449f3856f58361b6898e8a4896b5cd9f08d", - "0x430b309c8d82cf9895ab72fd006ed445784e47af", - "0x43a4e31e622798d9d83786d4131250b25654b711", - "0x43e80bd71e872910853f78d58b24e221270f650a", - "0x44222d92682c119fb6cb67c3603ad4fb0ba3a672", - "0x455320c618cf9148d4427730fda1f6520e6911d0", - "0x45fa04a1541c129de4e9ddd50272d50c863c87fa", - "0x45fb0d906294c9b7e66e8cabce00a0dbf707190a", - "0x46b42515bdaaa4f4cfdddd871962712d6249ce89", - "0x46f4aff8c8b54a73eeb45b6d69f26c8eb8e5ca07", - "0x46f92b34f9997e7a7bbedbcbf27d9c8c6f870807", - "0x474538dc1f26a6be5f6571fdca2409c3a34e47ad", - "0x482d1b7cbd7fc85b5bce69acf4783fe05e543807", - "0x4838712c2f4241b9aab4652badefc00c0c7d993f", - "0x4a0b2c0841f985490f7a8d53b9a0a0ab16fef850", - "0x4a26832501fc2909e6675699d44a88179120cf42", - "0x4ae2337c8d4f04545c53ffc04e119f3c222b97c8", - "0x4b3e30c43f3b89605b9927ad1b1b319f8a3fed98", - "0x4b870776ccef5b75c4407a062b3b37e79625e3bc", - "0x4be8f15ace8c717cf1282febd730162390dd9627", - "0x4bfe9a161f5faea716d0d2e0df947848e1b21d2d", - "0x4c8060c9a5886c94cb9377e9cb4881c2f6731f42", - "0x4c93bb0204f25ca09ee3e5d7b7c92ca5168a25a8", - "0x4d5a04f1220d479d843dee8a0b6c459c5446a713", - "0x4dddeb22b41546e09f497fccc25b49e2b4fb0444", - "0x4e3bcaf42dcbaaec61e365c415c3c7caf88c6ebb", - "0x4e60a6a33ec26a29862f8fb458926f5b0c6b0042", - "0x4f1786858ffb38549fe6208a13887503ca3659f4", - "0x4f6c8eb51dbb18ecc916242134ee251530c6602e", - "0x4fd7b01659b23752e4a23133c248bd15995d7a8c", - "0x50acd799d999b74dd0c9abe5ca7a7d89f1a1e0e6", - "0x50b3a06d50b553faa898f015b79ca5f9f4bfad0e", - "0x50ff201fdff4381b0ebb3585fa3f657b79d987d4", - "0x514338cc6e28ce6468a23c2fec897a0b79d57c5d", - "0x515e3178ae446197233960d4444ff4396922da03", - "0x51a8e279d136978a0b6a056189ca1dbfc61e743a", - "0x51d8dafea0edcf158180d8c5ab8d906c1e4f1e9a", - "0x55cea8e77a16dcbffa3ad4a660da3ede2b933cf3", - "0x562e502b07e7fb7bee85a91fe3b576fca6c61ab9", - "0x563b642ef0599572105dd080009e173bfdbea1ed", - "0x569534990f0b084552a94fb7a5138a6f248f19b9", - "0x56b7a5bcb27fe8220fa22ae3753b0338d02dc3ae", - "0x56ed484a6ef01101352c75d16ad7c2332f0d4d3e", - "0x57d00f42d8020a758d8717d357a8cedde8958700", - "0x582bd9c2553890820c7e68948fb77f2013940a51", - "0x594863c3ffd6543f174aaca59213340fb93678d2", - "0x59fb8cbc8a053f735821b03a58c2fe99fd6f6bc5", - "0x5a9f21388be3a2da23238b4ea0860be46bbc992b", - "0x5b27de733515448349e20d89845483753f65d6b5", - "0x5b41d777d0aa1c926c14a918f28413b1245b9cdb", - "0x5b9dfe1a97ec57b2b8228608c5dce2edd50bb512", - "0x5ba107b05113c49a455a5e39216fb796c60e5271", - "0x5c04d529dce7e724a3fd5571e6ec73fd993e526f", - "0x5c3dcfd8d95c0bd334529f9c23e50ae1c2fe459d", - "0x5c4da7d2287061c707570ca43858f00bcbdc22ff", - "0x5c8de18e55c75745888d661462bf52f0234f1cfb", - "0x5d856dfe69086b32791a867653d2a2dfbe7bbcfd", - "0x5e63bb70e0441366c491115a9f6e1c8bf612173d", - "0x5eb5158ff8a6737e92879326fdeb6b570486abcd", - "0x608094b5fcb7dac1826a233f078638e1c87542a7", - "0x621e92d04896786b0f52ec1d4ac84a40da1fe94e", - "0x622e238245e7bdd14a93021c3ca6a09173517de4", - "0x62ee75b0072275dc1ce46ab04f9dd7db116fa757", - "0x6315646a615f46c6d6b3802d809a6a61a6bf88fa", - "0x636fc0ee2c48022b4c66ed4173cdc515a5378a6c", - "0x63d35426a50f11ba1f0d89ad6e540aa3e03c3b43", - "0x643eeb8f4628996b02507dbbe86beaa356a27fb6", - "0x653ce8c23e4a3cb9fd5188e1d616af2bb874bf27", - "0x66020b06fd7b8f2cb40eb58c672d821192381d74", - "0x660caba6aaeea4654dcd76e34dff33f8074d49a9", - "0x6617a5efa8bf1463a0909659a995451f8b09f950", - "0x6654e23a1fccd3a3e463a5fa9d435d30e65c6860", - "0x67467ce27cdbe4845a09977d4d815670a6d4447a", - "0x67bd2e15e69e0d3e694960cb4cd0498048fc14d5", - "0x68190f57f3603288dcdf4212da09de8bfbe72d83", - "0x68a4da8a141147b23bd1d48efe3325e463c3bbda", - "0x697d4d5d6990290f77a1cb7819bd07fe3666790a", - "0x69a9529df246fa1eac6604c47ba5b43b0e13b364", - "0x69c971e57f6fb62c96a2b4c4b20927d5afa63f85", - "0x69f76c72d2ad9c3733b80a207be2d1ab4c5e7c00", - "0x6a3727ffc861fed7d53fc9751ee51c1d53e6864c", - "0x6a3e9d87b6639bb013cdcd4a60ac3e097e0fc68d", - "0x6afe686cbf7e28d346fd975f1f99ac2867ba25fb", - "0x6b0ecb8acd6fd929d2c06756ac3f70e4ef6ce880", - "0x6b1a5eaec62ff9043479e8c40f20ea21e42ba7f6", - "0x6b61059e5fcb98790eb221737fe44be445b78506", - "0x6bc4c44c21cb70a132b238f598d027728ca2137b", - "0x6bef6d78c48d839f0f61f9e505cb3a26daf62a6d", - "0x6bfad1afc7499a04f1cc46188724457df785b585", - "0x6d2a662589947d397b863fbf1b505efefb3a37a7", - "0x6dfc7eb0a4d538cbe611428b6379047176534f6d", - "0x6f9cad4cfeae77acea36b64d97285a5430c21761", - "0x6fb458cbf65e1af4821d7dfff26a7dde148d7134", - "0x6fecc68c4ffa0681d5f91b12778e5a2c97e700e1", - "0x70290716cc09336d4eaa772c192b992691c113b3", - "0x703d2dd921da44e12502dc6ae8030a3044130e54", - "0x703ef1b03f4abfe0cb37a309295b737af6ccbbac", - "0x70497b0330bf7c128822ef8053c625a1cb66ec11", - "0x70594e5e61c7bb8c423428aeb8dfaed513aceb62", - "0x707ef1a7d33ae64691c40d9517790cc52c344426", - "0x70a81b4b97f7ea80b758b0c7cf1b8cc52a747d7e", - "0x71a42076587399fcce6d3bafb9a06b98a9055280", - "0x72cbd84aa2d4b6b4f927716f2ca0a95d6cdfc99a", - "0x73abacfa94d8ac9f37dd148f93d8e19dfddc31c5", - "0x74a51292bf31f46875a7f1c371deb1840ddb7578", - "0x759a7337dda540a5becfcdf1bfd523a828e72393", - "0x75b5a31b432aa0bc42d03c3232dd2fc510e1d674", - "0x76390ddc8c801fe6e40e69c3c2a430ca3531aef6", - "0x766bce115924e81da1a97dcddba7af4cb8a00bc3", - "0x771dda6e6a911560fe862edcbc95af16032cd0e3", - "0x773cb4bcc654b438a2324d1f0fca1ca1a1b2bee8", - "0x78dd1947c2f4d27032bcc5e1895a71bec40d1dde", - "0x7977f7e2b4e3bd9dc5ddecc3ae941c3e47d7597c", - "0x79c07f224b51d4644a6b01901edb855146a3c8a9", - "0x79cedaf7b21b5e6ba1eaceb9c02f3b0844424763", - "0x7a837297776b6a5c3d5f97a4ff5043771b426c57", - "0x7ad7487a1efb8915b0de5b610cec143f48b2c375", - "0x7d96fb0db654dc8b36e5eb43d73f42fc0382a38d", - "0x7dad3a4377664490d643286628cd90ea75dcecfb", - "0x7dddedd801bdb2ae1379aa0ea6310d1626de1b68", - "0x7e0b65a1089646364781d3fccbee426d691b6d6b", - "0x7f02eca6c77941c1222f5c2a4678ee377dd7d493", - "0x7fa76563e1e71d0200a0168ede41d8791ca3ee4f", - "0x7fa9147e30d0d86f6de3b932f0595249f0a450e5", - "0x8108801af9e5b5cae9a704e3fc712c31192597a5", - "0x8174c36bd0e941ecf4cfb2159944d693a51650c2", - "0x817ca359a9e67743f49dc619bad22d4bdaa65991", - "0x8203f494317d65111702bd0522497fe4e8a3c247", - "0x822572dfb2e5fcd385486ca9100d175db4a11f8d", - "0x824b5b747e0b102a47ae0da76a4e3a7bef27d6ab", - "0x827c3b1e5bd37907b65e8687204540ec06bfe95a", - "0x82b9c9ac40b63e23d74a3d151d3d2bbe2727a4a7", - "0x834fca98bd9157e7d3b8af6925414b077d2d3857", - "0x837e4390350d183661b956d16befd933a53665a4", - "0x853ab795d49fe8fd380155f06d708032f4439584", - "0x86a0c14b9f2d8d8078c5b392ad895c6d73a41e00", - "0x86ae0babf68a869fb4076189c2f068ae90d4f810", - "0x87dbbf3541fc3fda614b3b86c0c42e78b4c8b1cb", - "0x88a7cb9a9e73d5aac0a139580e3fe9f2918ebf60", - "0x88c1eec1acc212458f4de2b0254e780c5ab17538", - "0x88d776e193778d5eb3c27c040398849828a68776", - "0x88f374c0440efcf6a19137ab6b94243522af14dc", - "0x89c98da89d83cdd59191f71dfd5e1d783f4f4b71", - "0x8a258b7d90c69c798a2992f8f4957435883db8f4", - "0x8a73f74b3a579d7be6a7e3f8d5eccf2be0516d16", - "0x8ae213fce18f644de77c35a66c2e3ddf6f5eec91", - "0x8c0dea9b750f8ea91844672e4f43938f205d380b", - "0x8d3fe11a83afcda18ff0aed25dc68febcc73e883", - "0x8d4686e96c5eedf871ac58b54ce061ddccdaa1a1", - "0x8dd1a7ec46391201798a40fafce59c4c47aeb611", - "0x8e153aa8d770334d2d532122c52476dc43a96616", - "0x8e1ca3262971a6db9439922beb36768a186a5269", - "0x8e3f0e3728a05967539a3e40aefaed02913f11e9", - "0x8e5cb169c68554bdc4965bce5e4f4e17c12a64a1", - "0x8ee8da9580901ff0302495182f40aa20f49d17ea", - "0x8f1ff201bfbf1d221eded5f2cd09f79aea681326", - "0x8f31f50a904ba8d4943aa16b12076713e760c414", - "0x8fd50a3488bcded29cff2815d0a3b093a63655d7", - "0x8ff43d2bdbd7fe0bb086a196d3c623661baf529e", - "0x91d8e1dd54308fe29786725ec4a9a707c16a9d31", - "0x92ee07c0c04fa4ce801e9cc22bbc4d812f3a3968", - "0x93d34b5d356dce6b752506364d0889870e163619", - "0x940830be01dded6c91c111c823df20bd35ecda9a", - "0x945fdf583521e64508c51a0f73267e67ed1ac355", - "0x9547029282aa64870ce12315666680fbcd839dbe", - "0x9576336e424988dd18d119de744a87ee2f5e4c4b", - "0x95e62d3e9ce6447c10c4c9203f77e5b5fe487609", - "0x962152704b1f63bf0213dfb58d03ae6f99112ea8", - "0x96af72858296ce97a14fa976898689b3a7c45b1c", - "0x96c5979d71c9cb6d521312e1048169942d8ea3eb", - "0x976c150330953844e9336f39c45944586d464642", - "0x977e45b0aab8e36f3a9a3d0084bdb54a3b05cdd6", - "0x977e8c45168579e43dfed5034e59dd8342bf2170", - "0x97cf20f117d9801a4262f04f0481afbbf50ab920", - "0x97d361a30a5ad28dafa1eaebd8c38851932b63c0", - "0x995c933c58ee5e4e585e199c9703185320a42cec", - "0x996543f87e29379dc9afbdeaa0f5d9fe349753d3", - "0x9a00da21f46def02b9bd2a385b0540f778a8ee93", - "0x9a8449b15ffffb3f670fe3a6767e1b1bdc764499", - "0x9ae90a4a68091f0926a864ea89897054f6bfa7b2", - "0x9af3fdce076db54b8c44164655b86ae4975539a0", - "0x9af9199474ed0b7138ec542a401b8ad4f4570d1c", - "0x9b0d4b1f1e4a6f42ca8fbc7d5ed4fef9a4fb3a83", - "0x9b138fd7dd8fdde9503b9d416b8e869805f23ac9", - "0x9cf301816fdceffec7a37ce149329c03e7bc0ac6", - "0x9d8bfd19628735a2fb5dbfbd9fbef69b92de4cd3", - "0x9da7d71b0412287efd9c386579702ab4185daa97", - "0xa00d795ab4d79b7995641424bbd91ea761b19e45", - "0xa03ae39022a0cf7b32f9b8a2c82da784de47f75e", - "0xa05720747fdc7c90fc898493802c0a3375448f66", - "0xa05a47d2ac059ec101db32cfc277611b06b20e0d", - "0xa0f8a29218d035c2f1c58dd5cdc29238d9bda34a", - "0xa1073d52329943a4a9bfe80b3652647546e86981", - "0xa16ea06279f500360a9bf44f8d62b7c072900784", - "0xa18b311cc231af38d51ea874dd25f0124250d298", - "0xa2066d19e0c682b3e2381118109aae78475bb7a6", - "0xa207cdf1e1a644403caf3ee18d8a56a250657f06", - "0xa2266ece69a2300d5a1176b3f02b6bbff0742e6f", - "0xa2a3e82a3b03c8454b6499dedb6f1c4f61badea3", - "0xa2bb3a542b938c87c6753b5ed3439bdd172e663c", - "0xa2d19efffa625c3b1294c507d6e950bcc09e1028", - "0xa31c4a11b0b030f6032c21d92d10fd24bb891cd3", - "0xa4eede96787f188bb8c02fadc8998c758db25823", - "0xa56e0126639d657d7c745e555541a794a032c189", - "0xa5d2694921b91c7a8fe82499cbd601d6fa5a6459", - "0xa5e8a3af0501f0b1a59876ca989f38f82a802af0", - "0xa96f4bfb95a33e64dc11500b5fef141484d6ffab", - "0xaa99cb692a12e0f5335b7fa88204b6de3c4b3165", - "0xaac85f0ef8edd3d7a574d1dd88c13bdcfe0a1a03", - "0xaac8e646fd42f13908cfbf726e6ce8765de712a7", - "0xab9c7062ee11a70e17449b1295e5f2c7fbdb6555", - "0xaba259d872607abaa9fa49b7fee5281331bc2f17", - "0xadad96aec15d94ac56310b4fb046453dbedf1155", - "0xadeb5382b5922f491ea1459ecc14efd8ab3fa385", - "0xae2585a4fa59cbba9c338a83fa5f3a6c2bd9342b", - "0xae76d75f0bba8d96c6422edad8042d338a029ddb", - "0xaf373af84a255b307a8a0e480c30deef3c7238bf", - "0xaf89af4421b2c1e912ffb6a3a6e3b3343ce2ecbb", - "0xafa97544bf1778991008a68c2ec13c2a212febdf", - "0xafe8d6def3e3aaed8d3fb7dadb75269861b45c58", - "0xaff269a5257dcbda41a1e21793ea7034a0d20239", - "0xb0c89a9461353f991e0589c74c8b144149789978", - "0xb229da258d483a1a73f28692e89f15085fc2abb3", - "0xb245472d82f1bf1e968f71b0af9f7d6732181478", - "0xb272afd91ac2291f6ba6f5afa0c594524ef9cda2", - "0xb3c987bf21a3e2dac8b7b1195ac1939ea39de09c", - "0xb4252367619c3f4b508cda8a4c9e89dd5908ad51", - "0xb52d59b6d90825dbc8619f31abc275baca5d7965", - "0xb76fc8f3039ac17417b9a36d1a5a00be81e036b0", - "0xb8106490fb131bb246125ace9eaeaeb820b5c6ec", - "0xb8f94bbe97988c36941e9ac0c69fa5c67f93e35b", - "0xb92f0e24f02af9eddae6f6cbbc2ec5192cdc42fc", - "0xb94a36f087aada4137abc2d9a5dcb27775a18b54", - "0xb9a26d1b93546df223c6eb66ffa994190fac65bf", - "0xb9ca0d4199aa6cef7f1da1e5ad23ca6c58b34cab", - "0xb9e35722f46c38bb2dff6ce73fcd4a3569773fa2", - "0xba152d0d66fa142a6a88b49a159d23bd2a06a10b", - "0xba3ab995a229d7e474ac4890ea41b29a36cd2cf0", - "0xba725112ea46050499eb03407466068532d4b493", - "0xba7514f3503add9fc50f8b5cc6aec4e11f040b52", - "0xbae2260300c4ee6ee9cdf200e6911e41d18abecb", - "0xbb105427110983d52b41ab7d5112367a1efef212", - "0xbb541b84a3e5ff883f71f37caeb767b7695340ca", - "0xbd2320168733ac45c4ab6197536d8f3fcef5b38a", - "0xbda5ed78b5e3bc88c2c69bc8e6a36f68cb701213", - "0xbf19e4516d6615192c1c9b91c7d2c9c3ddb77602", - "0xbf21a8825354de9a3af98116ed8dfe0786e251c3", - "0xbf2c78f49a0cee6f56853801834d215de493d87e", - "0xbf9ac7f5a1ee69d15986d6a9331f2fa40ba591d0", - "0xc0e66d85ac71a3a1b8a1ac6d8ce091006393dece", - "0xc1862b87e011d4fdc8630320266d98cc6040a7f6", - "0xc1cb562562bf10fb95ed761bf09ca1cfaaf54c9c", - "0xc2409aa02e7df1a419c6f0f843d9b912a7277050", - "0xc27f9037acc553d06c6ee7194b21855f98462279", - "0xc33538553c5d9b693e84076873a1bbb915f235ac", - "0xc36d134690fc81e8024e7c3545fea29be148815f", - "0xc383c833888f9e90af68c6c5030a31782d5cfc31", - "0xc3b9b78b5992e8627b504069c5550fc809ad13cc", - "0xc3cacffa663544c6452ec43f9d8a5e93d0f308ad", - "0xc43ad9dc0decc1f745d9f28df64146d3fc27e4e2", - "0xc52768a112a9a1ad5a41f73a1a05fbcfe95704b7", - "0xc5d2ec86a80a4f3a62b7882858fbfe106b891de0", - "0xc689f7afec8f9adc8a9eabbec0366592e4597e5b", - "0xc71137a7fe2225bd5886d66018c573572ab3b111", - "0xc728ef07c0cb18a425137ab2c75dc2f5dada0261", - "0xc78e0b6fc399365fdbf48f451c71c83f411678dc", - "0xc7ad546d2487b5fa828edc6f5f8a218b4aa29fb6", - "0xc807a1be25f22a7a0d6d7c3c323d351bac0a3d8b", - "0xc929e2a694f6bdae13ca8fbee6b8bec004e25eee", - "0xc944e1859488c233529890b9f6d4151cceb46b10", - "0xc95899b17337034bf170e9b19c596a9e57dcae97", - "0xc9b63faa54e9ee8920a428518f94855abe59f5c0", - "0xc9e15ed7a4f1db101f8848ec90dbabd099de189d", - "0xca28dd602b46c1338af3889c75feba883687e937", - "0xca9b843498a8068da4222fad572630d53c7c28a6", - "0xcb05f700f619ec3ad872fdb928ff16a51471da68", - "0xcbc1ded4b63a42b9575ab51899b246084f88679d", - "0xcbefb26528102f9ca92839066e593244a90a8800", - "0xcc724d58790ed709f95f0358a63ad65a7f4ff58d", - "0xcc9ffdf9b503cf3df655e470089b701796293849", - "0xcd1b8b6d7dcea49cc4e7792ee6763cc297b43a9b", - "0xcd97433568203860240ad8448cf69cfae6889507", - "0xce8079bf9f2141cd3ee1d30bfd6ae6a1b8337309", - "0xd0f3aa5f6d298e9e3a1ca2f92b3f75598d12aa31", - "0xd14a4d8184f210f1c024f22f99118fa4dca9346c", - "0xd1a868a178f2aac858cc5e0a72478a4ffe7e361f", - "0xd239b4a49d2e3c3a5425854ecb1f0b6a63298708", - "0xd24c06e94e60dc9c3c71c7b7641950da1e881dd2", - "0xd2821726d9753a3f2dda890496874a3bc5335563", - "0xd3efbf2176868a9bf1bd29355ab4b3c18d376a67", - "0xd3fd81cddb8f09e8917e53efbb2f54dc83b6632f", - "0xd4277caf1bedab207f0fe53fc6c22beefe7b8ed7", - "0xd7615a94cdb393effc45d38a8129f8b84ac64d4a", - "0xd78c9922d6cce194f649b303609146b2fa74d7f0", - "0xd885c943090b0a7ea54ad12b5a0d390bda0f3275", - "0xd88720cbf01aabfedab777df3d1aa2b63867084b", - "0xd8a83a1d2b9188ce3cd6b002112baa12250db237", - "0xd8fab8e11da1c0aa35be17d9644fec30a57815df", - "0xd922bf300b6ac1fce65212b98f64757b6b22b57d", - "0xd9762131fa7fa3699ca0e63cb7bb81c7cb8916fc", - "0xd9a38d473898bc48b86e51eb9a08bc0e403bb5eb", - "0xda880c85cca656e65ce1ea1ee09197f589e26a4b", - "0xdc8e70d614eb13fdbe8f10d6a7c6a14e52ced703", - "0xdc9f177e3fa5631f099972ad90894809bb171c99", - "0xdcdc425e504839d74ce7731995e0a34b9dbc95f1", - "0xdd3b89def19a9144088d38bf6532f2b018a478ea", - "0xddee89fff5196ade6fdffd9cc7cf50fe585f7ee9", - "0xde2f849d8680a6b4067c9eed07ae63e89da948c0", - "0xdfc1aad2a496a35bfac234de4f4336dc8577faf6", - "0xe01cc4103b035c33adbe82b0acb927d86dba77de", - "0xe0ef45040088a6d75d40aaa81332a41d09f552f2", - "0xe17ae336710be802905ec2cb1e3d3be24ff25b76", - "0xe2537a94ed874aa80430ab87530e76a11b4ef0c8", - "0xe34c5434f56fc26f5aabe8450797871e241b7582", - "0xe3a2696f430cb5a1a0f4569f0d11c1707c717335", - "0xe4b2174a298c05b4e8f960627cd4da33de96298e", - "0xe4c65b924c09f4f0a9f644acf528d4f4bb5e7065", - "0xe5d19b068f5802842adcd4d92e7061f61b781ce1", - "0xe674d099fe170715706fba53902a9c0bdac987f6", - "0xe698af793d1e9d2693e82feddbc41fd696ec52ac", - "0xe69de9998a53e5446561252fcb0daccd08f5257b", - "0xe71402a55449736dd2f016287245924ee214a6f0", - "0xe9ac67aa08dbc1af256edceb67efbb47ebd8413d", - "0xea2eadc24b3e41ad41799404e6b0e9376341d0ba", - "0xeac64c5d9437a9ec535dc9e1d04506852b520914", - "0xeb6ae1e6d4b9491a59d0a29fe1f4098cdde9a5f3", - "0xeb6be60be4309a56f48f91f682156feb881b0957", - "0xebbb49deab19658a4736380a2d8aa8d1a83df895", - "0xec8bea91910d3b294928c8378b4abc45ebe641f2", - "0xed026c2775b2c40d524d890d0b5efd09c3b46576", - "0xedf6ef3854a90f42f6d8c19cfcdc8361dca68d67", - "0xeefdb96d06c5f4616ebef3bf2cf33451e58450a2", - "0xf0e25528e8d6f5b213345797ac5e1137f2a64bba", - "0xf127183bd96d6273805aaf09f1e4dda7e1ec3f73", - "0xf1e664ea77c78f8fc86399e854908ef519092f95", - "0xf264937ab0a30444745a0d6f3963881f0fd85b4a", - "0xf2a73b45ec03e11292808f1565a5e0bfe7fc6d62", - "0xf380b8e273e362763c4672a9cad5adae7d4b82b2", - "0xf402335076cbd5c58d5dfa61052ec4fd3cebc1bd", - "0xf472a8cec24591edb6778a06a438dc55d7240007", - "0xf552112de86982a07ff794a5fa6340e4d009a95e", - "0xf5bdb279506be6224f8f55f2c31af8acfda0ab90", - "0xf857f28f81a80fbfa8aed674c3c1f52ffe5c981f", - "0xf8d978b6f10d70b31ac7a336c70099d23c019114", - "0xf9514e4c3f4e55d0d635c36ad35070a9a1ffdc56", - "0xfa287476bd793039bbe589829ea089c17f151a62", - "0xfa441678de2ee764d40897ebda60e18f5e8292b6", - "0xfa51502eb318223ac6b56f0988587793b409cbb8", - "0xfaa7243b14c68c1c7594107d4c9a7e31d6e98b34", - "0xfb09f7ebbeae506a38c0b98893fe4433afdd5340", - "0xfb141c08df37c048be1cfa1d5cca5be76f2f9e74", - "0xfba18d85da0a37f7d19b8f87da6ef3f7a3feb72a", - "0xfbcbbdb9dfece7a829ff7c89afd28defc440de98", - "0xfbe619e87ca4889540137e0265d69dd2ad886c03", - "0xfc1b9cb0c3498c5bc456a4cd379da66dc288002f", - "0xfeb09165a5ba3427913ab2b4800b79e8f69f938e", - "0xff22b75e221124164453c5f558bc17b253dcb056", - "0xff4cfafd280902797fcf1c316604b0ff267ccfa8", - "0xff536587affb209fb361eecf5d7b0046134381f6", - "0xff560b656c0a59e9a6d9fd6d01cf2a14daddcb96", - "0xffa2536a631d9a7107183fc157014bfa08b306cd" - ] \ No newline at end of file + "0x0012f2df354a8676a68e5f4587bfa80b67948a7a", + "0x004d690b928a8f44f059fbbd30f74e10f1427d39", + "0x00cbf74201f02b3511fd02f81862900e61c525a6", + "0x00eec6061021da2830e094ff4c46bc6df2fd2916", + "0x012c2bce50d6086bf6347cd5b61989be1caf3bdc", + "0x015942428da04fe986dd14337c1025c64baa3de1", + "0x015eaba195c077cb6058d4a982cc34959e7178a6", + "0x0169106698aa1127dec37d68c23c73284d8b48ae", + "0x01a8b394eb6dd968cf1ce94abbe8473c230e9a00", + "0x01c6db34f2e4e7ad5fdae01c344dbf9f8715e59d", + "0x01e3088d53ba13d24d1180ce3818349959da205f", + "0x01e82362d2c1d43c3190949822322d2a3b9ed5ea", + "0x02127690a0493c00e35d630f4569ff79350052c8", + "0x026baee03d4485563028ef5df96336b22d080f29", + "0x0293bc2a5159fbf787e74d1be67a65d9ce8f6e71", + "0x029c015702d0252df59905b5348e5b003fcedf8e", + "0x035459ba71af5466252d50c2af23f30bd8b87ba3", + "0x03850f48a8fdaefc626c9225223b4daa0255e76e", + "0x03dbb6608e40bdb89cb38b37921fe9da44604e34", + "0x04407feb930afbcaccfc9a8960aff9126205fe8c", + "0x045a076f6513ca141f62503ff709ddcb1a57b114", + "0x046fbd3bf9b965ce5f44e5a87ec7a9ab5ed8e480", + "0x047467f353965a891bacfe714143378b1a668c01", + "0x04de4d9020ad05cf10eb854dffa273e2912cb5d6", + "0x05236739150dbc046891b13e265ff2f4d24ea635", + "0x0546e205b538b906b098440744874cb6881d83b2", + "0x057e2a0b75c80c8545cd75bb0a3af428630dd1ed", + "0x05a3a286a07560c2f7da68ed25acd0f698538352", + "0x05b6ec5200d2eec6d896f5a1fb6d1e2753ccca7e", + "0x05f30d55ab1e34d74575d0cbf766e36b4e8dd9b5", + "0x06101124d32f92f078ff1d2eda4e8ef97bd1d669", + "0x0652f0a386f020d41fbe15f268c376850124d064", + "0x067b46f38d79a5bc1ca18dadc9000e0f25f9739d", + "0x06a47001da60da83d14d903e0cc30a545516062d", + "0x06e6e8f0c7ab18ecc8b3ce107d9272ed239b0541", + "0x070c4435eb9afa546a788b531b1c4d1ed3db05e8", + "0x0734fe79a324503d203e6c75970b9e6bc30cae90", + "0x075ba51939afb7b0ebdd2002d9af045d1370a156", + "0x075c55fa60b804e6b2a117f9000690f6ce6fbbea", + "0x0782126bbdbe12aae6479b46c94daf4d8094c1e4", + "0x07c2b67460c07db63458550964ebca2dee4b92db", + "0x080fa4a0013ce1ffb66aa26adea4bba46dc649bb", + "0x08be73781d7176e99c10eb01c53c0b3cfdc43b92", + "0x08d17c4d84207b5c82d98eedc948c8c186761b2c", + "0x08ff07fd360f70532cd367ec3e2c663f7d63bcd1", + "0x092d6c840d02472ca7887b48a4ea98c3e97aef67", + "0x09715f9aec99b5dc00e9166ef356ef4d38be4eb6", + "0x0998a2e09783abc8eabfa3ee9d3bd44a597738e0", + "0x09c657d59f0a69cbf3aaa9079b574b55cd5d19ae", + "0x0aa1bb82c933cc6e0c9c2131b52ee5c23c88fd31", + "0x0ab6b12138792722f6578f21dbfc80e0912a0040", + "0x0acefa81afba562d97e5c66edd4596dcb7a180ab", + "0x0b0a3fd675238c41170f6a7fe5ad04ad3bb20fd8", + "0x0b1453c27dc9602fd17e2b187ff10288ea78bef2", + "0x0b445a38e9349ec2b35bee29f19d80a9279a00d1", + "0x0b71564f5eddd9b711cae4934562eec08078ad54", + "0x0b8fc5ebd3a221c058cd84d3f635ff63696642b1", + "0x0bc1afa1933dd178531dd985e989c5626b650b06", + "0x0c1dd41e9e76f78d486d1616240507a891f548cc", + "0x0c77f105c7fcf42abb832f450b40744b34e17a34", + "0x0c850f4a6ab80748f790155757d1abae4371b408", + "0x0d222268c82d5490277a18697a1f52cc6674d3f4", + "0x0d346985e16349bd13f496b397cfb280b0bc4d94", + "0x0dbe7b739029e5c409ad55f603373fc7d80ec755", + "0x0e4953bf69f9fd76085c88053fc6e96fbd6ea1f2", + "0x0eaeb728fe4968bec77004d03070e6a8624b1424", + "0x0eb5a4c48a806ebc68cafedec2e4f6c7e01b44dc", + "0x0edba5a90a7d2c7d1ba314fcea5262fb4f6d81bb", + "0x0edfa8955df975c8901a022afd96e2c13471170f", + "0x0eeb81a014e573ac83dd616099037986867547cc", + "0x0f003e327b91e4dceac101d89bb238c3ed38be85", + "0x0f75a3be357a275086a5123d533ea70d65e63eae", + "0x0f9542490222a0c7e2f558cc914d581372d3ab8e", + "0x1087b4c1ce76a16f3bc0c3a13ad29d3a8110cd60", + "0x10b753f3244a0276508bd69e3a9bff4fdaa2c5ee", + "0x10d313624a483e33c08e3f1a195ab6fb2438e3dd", + "0x113d3807d884077889cc932603c42dea4f888a7e", + "0x115d9ac806c84ad30a118077769ea6bf2cfa910e", + "0x115e77388024b06af27fa56cce7782bb3c0b1425", + "0x119cbb3e6e251ce68ae1f643351e007832bff520", + "0x1252852d1e6b237ee43e51936498f1486d2eb3f6", + "0x127de8aad486aa6b6726622b380f7272b086bd9a", + "0x129b3166da987428e0d1db90a68a23081246ef90", + "0x131001375b5f68589ca86608175ea06785c59b42", + "0x13154c8b02bdc32e06dbe282cc6beced0cdeb978", + "0x13dcab8f57fdbe5241ac09c330c2213976d85ddf", + "0x1440ffb43850c6c6928e9482d1e8342f6eede212", + "0x14646a1affb7eee94243137847c7408a59085b39", + "0x1479442c5c888a71d9c92d51074775576473e8e5", + "0x14c78a8145d3df87a8b3855c4596e2f8f95970c1", + "0x14c8dd3e6f63616f26e7ee82e9417fb3a3dc5c3d", + "0x158687ce1db2bae9a49cb3348a3826504136d123", + "0x159a5a0d08bf97aafb5316ae6dca8459d2799c29", + "0x15b2bcab312c421a6cb6fd4c3f15c990867202aa", + "0x1618b12d4e19cfabece4b9fe68b7619155482d8e", + "0x167b18e0c11dcc22d5d0fb90150a2e6a002dae55", + "0x1689b3d047a414fecf8ae98ccf674eed348b298b", + "0x169ac62cab6f7d8afd0ba64ff9620294885a07a8", + "0x16d88dbe5762116d6229547f97eaa85278c12b19", + "0x175dc75b5cbe646669403cb3a4253ea6d228f9f4", + "0x1792ffdbd12f6e770ff543acb988a6dc386bb6f2", + "0x1864c057b6a72445cdb2efa6e17e1389f9b1d073", + "0x18a6550e6834005aaf8b7c3b197351fef4b1e55e", + "0x190edcbece40a5fe53a600d8e73491c02f52f5c0", + "0x197e3c9d0f069ebfdf6d642671d971e6377143d1", + "0x19c83255df8c29f867d1d1e5b2735bca5b2f9db4", + "0x19df0780d73a4bf37e6826cd8a0184ed92db09fe", + "0x1a120663f2ab24a753fbb70def177d5492e4058b", + "0x1aa9ea375f7320d27aa6328b2a850ad8cada96d5", + "0x1ab029446e0334a200516fbea0863ee874c470d7", + "0x1ab5e14dbea004eb2f7dafeb74b5a25aed6fd659", + "0x1aea0ca93107d00ef53b5d68010c9fde8ab0dcb0", + "0x1b3cf8ecacc271bc15626b52cf0160dc9bb8f9d9", + "0x1bdcc766643fb7e355f823bccc74e8d7ff187ef6", + "0x1bf2daf7d7395154e60d23233d09a7336e7b3aba", + "0x1c15cb4af02c66d8cf42787e2b351fea3e94a264", + "0x1c8728bd930d0aebc1ef10323188621d2b90bb19", + "0x1d0caa6c55d7293e2fe085f0f3a55544446a0ebb", + "0x1d77a87c7cc7fbc605b1a5b00b0c4ba469382d4c", + "0x1d9f9f3a3a49137e8309e3c30bbadbfb44f54126", + "0x1dc2b7d191ced49448532536dc85a630ecf51d60", + "0x1df757ed297350f3150afe6b5926cdcc36c6b0c9", + "0x1e0fa7e273f7cab04522f5c89b123743d3d04780", + "0x1e373308548d5e094a8efe8b7043f831f81dd7ce", + "0x1eaa1e6d4209dc8deb8c79ddc894bdd7a0132a42", + "0x1ec27afb1444e647672990fd029d68edee662656", + "0x1f1a83bfbd48766d81da8fac53152c20dfd6458b", + "0x1f6fd255a2c372f6846f69d5dbfb8872d8096139", + "0x1fc8ff614b3a0965ab863a24613079230e0fb26b", + "0x1fd8217021468f11840182db91214c0ccd219ff1", + "0x1fed9c6bd241d09fcdbdb0c61eaa563e5c9a8109", + "0x1ff4ed74399b8330cd5a1d1e33d3de7e19669bb9", + "0x2009e37007d3b58bda8f3b91559117e049990420", + "0x2029137e11595dc3b9d386cbed95ab621e83109d", + "0x20b2bef23eb455b57af3d9da9d8f85fddc6d591b", + "0x20b99a5a61602b83a8e2926d6847ce1c5585fd7e", + "0x20d79ff411b8d3352a3e5f1ae6fb91a2f338b63c", + "0x21254836c56cd1b5052dd1a0a7bd5aa75ecc2db5", + "0x215545102ae426be3e9a10d2fa2fb8e954330754", + "0x217f7c25a06773908cae0c4aa7c535d1e5b999f3", + "0x21805f51e1f248fd598d930385afe64437427054", + "0x21a0115ccadd63d38e190b1b37a14b2bc41c5343", + "0x2217c59c17db3cc61990e47fff2f911f68ce43c5", + "0x2260a4ff07d14ba7de39300061798fe56b017ab5", + "0x22649b953c972f0739733fb2c13f2db1cb52b739", + "0x2292267c8ea09de8b40d736157314e099b76c9b6", + "0x22b5535f7b6a474437525d197135b84b1f914fd1", + "0x2364d773dc3d761b60f26b961764a4d9d88b0b25", + "0x238eb24e010d34440c25caa9229e55a490f66312", + "0x23bdb889379278db240515fbaaceb664ffd76703", + "0x24b4507b6047606a0deb4ac0d6aa080d9efbd5a9", + "0x24c8d7c7f9da15c1b39f68ee3f0feffc3cda6b46", + "0x250613ce3d6934ff361f264837048e0c6cba168b", + "0x25c96c47ed08176e2fb72afc2919fc8cbe115dc7", + "0x25d306ff27f38f2d7e76eedc1b508c11d68c5ae3", + "0x26090e01fb2435bb2f6ae02047d7f7e580634b0a", + "0x268f7bf71028e549bca7512b8fc5213147f2fc35", + "0x269850d594ccf03cf1f7db58ff6882e872fbc0be", + "0x26b09ee008b4dc7ecb7435ff33f1c6c563db88af", + "0x26c07978b3b84622b8ee398abb07e3b046f98358", + "0x2800b895df0437e87278f988b363f606cd88401c", + "0x287d4ff86c036b7712f92cc6f47649ebcfccb11b", + "0x2887a0b67b6063baaa32b57ac9d59d1c050fe2b7", + "0x28b3d75b829d18c275cc39cd964925a4273ed1b6", + "0x290aac02ba64b8612f218c36252ca4b1124d75d0", + "0x29450bc740be08833074e24ac4ba5cf56b29e3a2", + "0x2951d560fda1ea00560a161faf2c183fae338448", + "0x29896de7867c7378eb0e2f279c38be1882c8c11c", + "0x2a626a62a7a29b4907100745f06a73da332a96ef", + "0x2a68ea42218df093cb025df0529246b6e21c8e13", + "0x2adf74c95313de00238710417ba3761d9c04ba06", + "0x2b6560477a5a22b9bf247e1ea0b766068e0c61f2", + "0x2b8f5035ba4ae73ea4f100a14359e817a677850f", + "0x2bafc5c5657c2b90928a685af4fbfb498caea5b1", + "0x2bb5866cc318681a62337f9c724dd1987335baf2", + "0x2bf533183251abe50ceda3a3c4c171e3c6470406", + "0x2bffa8518ff9a9b5f4163ac53107eb315ec2cca6", + "0x2c735f62a124c98ba85b36707ad77eb7cd287cda", + "0x2e3c7d89339b2292e09795bdd8bc7ca3fe17261d", + "0x2e4c508a04b4556399ee9b98fab2bcc0e19c4168", + "0x2e83601554bdb905e8068c64b90d9e565214c4af", + "0x2e87a7f37f820da8286393f6d3767280103d95b9", + "0x2ec1374702cdb0501d97c9bbc215c3b2815d4fac", + "0x2f163dd164137b0c5364cd2b9c23dcb621bdeb9d", + "0x2f3267b30966a42ac223803630e0ce8828ada22d", + "0x2fb57ca42cd7eac24d8e839b2786643bda33c9fa", + "0x2fe4138cf2e0a06d27caa2f552de22e082f82f11", + "0x304e5dece1c9420345df03da1647be165f9f6019", + "0x30577a2587149f5247d8d091177f06acaf8e4d32", + "0x305f87e3331778f122e632895d3a153e093605ef", + "0x30aad2425bb16f35d3262fc048636b33fdc15bc0", + "0x30f983d1baae4d08b9b04d225fd7f7a84711e76f", + "0x310ff865859d45fe6b1596ab0322b785b705a203", + "0x312a5746f27a77eb9fee7dbb627b7fe4fa532a89", + "0x320be76a31a1eeb90eb81f3aaf226859297776b1", + "0x322cd101cb4df4904a90176bab57dda6e751aca1", + "0x32421a76d588992afe21f34155387a077c3daa57", + "0x326be51d49a0eacb5ee7fa163e6dd5a06ec4dbb2", + "0x327403f5d61d8096e378b15d44692d94f4d63d77", + "0x327b4b2fb7537ffae5a6e6c1a51b2ded202e83ad", + "0x3293c9a9416e11fc05a2e03ce184741f73504f7a", + "0x32eceae262eb188a6ffa252144d90c4d8d42c001", + "0x3304393cb40a0be44bc7203c68758589c55c7d3e", + "0x331e655c2f0ca63e8f6da266c3217355e8d305d9", + "0x333dcd23b665dc0b45f715bb9c6ddb6ab82ce380", + "0x336ff1f10690be18ead0eda0bcf813e8be919ab0", + "0x3384d205f90bca4d85032d01ed05b5ef3947aca9", + "0x33b820ea2b4ed872f3e3e57c97078498ad1f4565", + "0x33f7c5f9cbf3598007a20a5ffae0152e3443adb0", + "0x340a336467391a0735db594fb0eafca54283edd5", + "0x3468917f142700ce5eb9a4469d798b28cba807cd", + "0x3480db08d5233293ede2a67fb01a62538351daef", + "0x348bb7779b02821d4f1abb5a86c1615aa427d22e", + "0x34b38e8f04ff2f7454373ae75fdb225c51f9bab4", + "0x34ed0e5d64c84e0fb4b6bd11694d47731c3a9aa7", + "0x3500173b793e7632ea7be156eba05c14d4de5ebb", + "0x3524a44b4b0458eeaf234aa7dc9402092e3e2ac0", + "0x354200e16addbd0049d1c0c6d36523f7ba405858", + "0x35611c0927f2617b2b089db8fc27b729d7bed1f0", + "0x359310908e7b0404d22e5224255c5545ae0b1ae9", + "0x35bb928ad826be31eae6a6b076b53d7b2b36f8a3", + "0x35c6f93023cc27068dbee8e0c92bb638b6f96178", + "0x3623c44f9b05b30fa733b057c080ae2fdd0481a3", + "0x362c1a09ff1dd12c57148333a27e1298be76b3b7", + "0x3670c12ad974fc70d2ceecd7da52faf147f20612", + "0x36e24e7676876c5a21fd60f4d168a2f75f3ecfa5", + "0x36fcfb8818db4be24e439fa70d30e332dd3fc2c0", + "0x3712e29efa4f3bd5b5cc53c1c70a845194b9fda8", + "0x3734d23382746e8db45bbf792cafd1c8bcd107ec", + "0x3756ed6a7dc8a7786c86b8853aecbb770004d8ff", + "0x38c1d89da0d65419ad081eaac5b9d0c88f0783c4", + "0x38d8d63320eb2c7752e045a945a73077abaacff6", + "0x391765d6d8d4a3c1b1664406f4c7ec007cd0cea5", + "0x3a355550bfa6a221704c84fb349e02f24f2a5593", + "0x3a47d959587ec724c4f10793f556496d21225eda", + "0x3a5a422a2148d8599ba76ccd833aab3f21a7efd8", + "0x3a9beb0aa2b06af2ef028c02ed32957c2081abc1", + "0x3ae3fda3308ef73bb1ec6586a87b2c60c59f399d", + "0x3af6ec6e7c5b578cf266b1bd3aed0a1b0b9cddf4", + "0x3b9b2f1c12c468bcc00e108bd26801dcff471eba", + "0x3b9dd933654187317543c56416408342e3cba2b6", + "0x3be8c0533a44067a8117601c723f67a845745df8", + "0x3bf45213198956ae5655ce377c3bae0d9d9b8623", + "0x3bf6c4c445e2699eed24cf22b675fca034e7c552", + "0x3c095fd885c9ae3b35054042d172320425452e33", + "0x3c3e119853e3c1e81790a007a2c1e91c00d78174", + "0x3c95d8591303c3af9c7d51c6d1968968d9a99ef4", + "0x3cae68248f81999aa3db5a227eadb609502200ca", + "0x3cf4cc5362bd6789bdbb49e24875799d080e5d2f", + "0x3d3ece121919e35a03dbd7d70b5a188fef97833b", + "0x3d41a6097a054be94a816e91362e7a9181afd950", + "0x3d58ba8a3e6e20fc48841f028857217e13144274", + "0x3e2d971b45f5c0c688205db3e37d93476fce461d", + "0x3e336f9a793f8222437480d65bd522f08f9442f9", + "0x3e780db3c104c0ce65cbf142a53cdad9019d8a57", + "0x3e910132cda01ab8e73113f0e58d3e114174c636", + "0x3e9ed3366fbca13d547885931e83ada76e0016ec", + "0x3ea7e1a9e8c04cfbe8e1206a4db97db506f234ea", + "0x3eb515f3094a0cf1350a19ea0f6d6a4d908103cf", + "0x3ebe91b80dfe4db91f925c58803cfef2e98715cd", + "0x3ebeb9d83c0f62dd03028e3a6e3b070617ed3e5f", + "0x3ee28f19209d213f27dc1dcddf6fa21683e0a805", + "0x3f00298954c4397b2ee31835d23b62ff6688041a", + "0x3f803ef6ee33c8913a668e1b9ec9cdc706d4cb3a", + "0x3f9687c386c05083359d408de501d9c73a46477c", + "0x3fcfc46c0994a9ebb87ac9fdcff48d58ef9bc915", + "0x3fea05bf27a001ecd79c65e3b25b99795d128eec", + "0x40289c8f92f5730625d6235c90a8af5202c7e373", + "0x402adfcfbf77a0460eb5ce60e4939c93d7ce506f", + "0x403b3c6216b15d6697c12d7d5db7e9092808590d", + "0x4050782213123b2f17b5277e2e1a198eb08b7c9b", + "0x405079ee7208ac453791fdd8b29b9e7dcbd07488", + "0x40765f781ce03b8c3b6700b7d5671f43fcf9510f", + "0x409684da33019c3bc9dbe6c534ce231e233a7166", + "0x40af338fb4ccbb095c0cafa4ddce0b03d2ff7741", + "0x41010cc41e3dcc8392d6f214cba31fb408a83dea", + "0x412d885daf18db22219d69b57c2255bf8d5c5c17", + "0x4186074eaf99d6c2d77821f96677ae96701e727e", + "0x41aec4adb22800574b74a42fecab482c3478af25", + "0x41d7d5a0aeb837ec8996ec3537ebdb460ac51ecf", + "0x41fdd5c13c7d8303e6a541a83199cb5f1913515b", + "0x41fec24ef8a5462e7ddeb13fa51a9cedc470324a", + "0x4279b449f3856f58361b6898e8a4896b5cd9f08d", + "0x429785e15627f59f875f7598f343fae05123b9cc", + "0x430b309c8d82cf9895ab72fd006ed445784e47af", + "0x43a4e31e622798d9d83786d4131250b25654b711", + "0x43e80bd71e872910853f78d58b24e221270f650a", + "0x44222d92682c119fb6cb67c3603ad4fb0ba3a672", + "0x444ea7252203146ec027a645551d63cb47d845bb", + "0x44f1dc7fab14694e2d87fd4b2e143c5d0daf6ddd", + "0x453eebdc17a939d81ed3dd55b27b01b8702b5953", + "0x455320c618cf9148d4427730fda1f6520e6911d0", + "0x458f269e302b3b1041b27a252e5c2461cc228577", + "0x459b87bede5ff82b5679abeec61b7b42350a95a9", + "0x45af4f279d5611663207323363f48f4a225b12ea", + "0x45fa04a1541c129de4e9ddd50272d50c863c87fa", + "0x45fb0d906294c9b7e66e8cabce00a0dbf707190a", + "0x46b42515bdaaa4f4cfdddd871962712d6249ce89", + "0x46f4aff8c8b54a73eeb45b6d69f26c8eb8e5ca07", + "0x46f92b34f9997e7a7bbedbcbf27d9c8c6f870807", + "0x4724049bb8377530ed068a10fd88627fab67af57", + "0x47362bb2cce3b70e18bebd6d48521ebbd01ffed2", + "0x474538dc1f26a6be5f6571fdca2409c3a34e47ad", + "0x47a7cb163ff3e42cc50f915778ba74239c625297", + "0x47e1ad387e9d1979407cd88cbfd84469482592c0", + "0x48111756fd346f293d4b318b971ddf7dd050c579", + "0x482d1b7cbd7fc85b5bce69acf4783fe05e543807", + "0x4838712c2f4241b9aab4652badefc00c0c7d993f", + "0x48e660b0380061d7e2de6517ebee896c99241fa8", + "0x48f52a62fcaf4aabd15c07dd1a20d0c1e97f695d", + "0x4994fe2aa42632be1c3300afe9818e75ae252c50", + "0x49e53ef6ea0880bb97dcc806ababa770c251fff5", + "0x4a0b2c0841f985490f7a8d53b9a0a0ab16fef850", + "0x4a26832501fc2909e6675699d44a88179120cf42", + "0x4a45f6b81fc608950de0fa281f3b2434f62cf3a5", + "0x4a9c34a5d19db9e73d8e0fe9339dd26c8212760f", + "0x4aa8e04344bbd0d26e7331ad6f22149074d41944", + "0x4ae2337c8d4f04545c53ffc04e119f3c222b97c8", + "0x4b3e30c43f3b89605b9927ad1b1b319f8a3fed98", + "0x4b870776ccef5b75c4407a062b3b37e79625e3bc", + "0x4be8f15ace8c717cf1282febd730162390dd9627", + "0x4bfe9a161f5faea716d0d2e0df947848e1b21d2d", + "0x4c8060c9a5886c94cb9377e9cb4881c2f6731f42", + "0x4c93bb0204f25ca09ee3e5d7b7c92ca5168a25a8", + "0x4d0920a065a227954f4d3b4ef268a360901b3897", + "0x4d464c19eea6b201a6253dc9247e91c1c703381f", + "0x4d5a04f1220d479d843dee8a0b6c459c5446a713", + "0x4d78d6c44fba78ffcc04e63ebcd8accc6b97e796", + "0x4dddeb22b41546e09f497fccc25b49e2b4fb0444", + "0x4e3bcaf42dcbaaec61e365c415c3c7caf88c6ebb", + "0x4e60a6a33ec26a29862f8fb458926f5b0c6b0042", + "0x4e6c06b5378ec51a3354021029c014f942cc2098", + "0x4f1786858ffb38549fe6208a13887503ca3659f4", + "0x4f6c8eb51dbb18ecc916242134ee251530c6602e", + "0x4f815a3117286530815f8372980c7631ce96879b", + "0x4fd7b01659b23752e4a23133c248bd15995d7a8c", + "0x5003b1e6b53c33267cc4544158adc6647bdd4dbf", + "0x5004fc814fafe457f96135373105e4f1c1328024", + "0x505a14141f8d8059c115def2e766dce2e34b3ae4", + "0x50acd799d999b74dd0c9abe5ca7a7d89f1a1e0e6", + "0x50b3a06d50b553faa898f015b79ca5f9f4bfad0e", + "0x50ff201fdff4381b0ebb3585fa3f657b79d987d4", + "0x514338cc6e28ce6468a23c2fec897a0b79d57c5d", + "0x515e3178ae446197233960d4444ff4396922da03", + "0x51744da340681920a8e974091d924f3a8f6a7f97", + "0x518961f9a25b2c969ed09bd25381d14cc2543501", + "0x51a8e279d136978a0b6a056189ca1dbfc61e743a", + "0x51d8dafea0edcf158180d8c5ab8d906c1e4f1e9a", + "0x52d59166acabeb36e6d61f311e9ceab22c0f701c", + "0x5321c8753e8f35b091e5a0e4534db0e1906ff30e", + "0x53790768ee318484c4fc484e6a6fd48b5a07a67f", + "0x538554fe863c39df563c46e25b361fa31ba920ea", + "0x5464e414486421c37827642dd8556a155efd4007", + "0x54a451870f29a57dce2dea2dfd0b0c7871d9eb79", + "0x54f4bdd319dd702e06b1824ba7df23753098b14d", + "0x55454d2656fe43d6bd9e5d720f172cf88083c809", + "0x55cea8e77a16dcbffa3ad4a660da3ede2b933cf3", + "0x562e502b07e7fb7bee85a91fe3b576fca6c61ab9", + "0x563b642ef0599572105dd080009e173bfdbea1ed", + "0x5668d01d490f00742b8c5d94958638eba6f35822", + "0x569534990f0b084552a94fb7a5138a6f248f19b9", + "0x56a83edf0ffbd2e1a4fe4f7c3053a0e1fd71a1f9", + "0x56b7a5bcb27fe8220fa22ae3753b0338d02dc3ae", + "0x56e7e62c40a9eef6970de293138cd52a539f37a2", + "0x56ed484a6ef01101352c75d16ad7c2332f0d4d3e", + "0x57d00f42d8020a758d8717d357a8cedde8958700", + "0x57fcce165e3f0736aadec5cdf8ff8ad4906ada87", + "0x582bd9c2553890820c7e68948fb77f2013940a51", + "0x58dd7b47b0b5f979b7399df58aa2658405d9d552", + "0x58febf004449269f57a53e8146575e2e3f374a77", + "0x590e1102131354f2be244af3e15260a1be72e25e", + "0x594863c3ffd6543f174aaca59213340fb93678d2", + "0x59fb8cbc8a053f735821b03a58c2fe99fd6f6bc5", + "0x5a9f21388be3a2da23238b4ea0860be46bbc992b", + "0x5b27de733515448349e20d89845483753f65d6b5", + "0x5b3eca145ca7c088d33eeac991988e54b2ea282e", + "0x5b41d777d0aa1c926c14a918f28413b1245b9cdb", + "0x5b9dfe1a97ec57b2b8228608c5dce2edd50bb512", + "0x5ba0c1249e8a5108de26292c6e5db29662f4cf03", + "0x5ba107b05113c49a455a5e39216fb796c60e5271", + "0x5ba839d9ce66aebe320bee414253c319827f772a", + "0x5c04d529dce7e724a3fd5571e6ec73fd993e526f", + "0x5c367c8b20c67dd0195a15e3a567bbad4ca28b0a", + "0x5c3cdc9a382647bd8a439dc2c1f33634ac694e4e", + "0x5c3dcfd8d95c0bd334529f9c23e50ae1c2fe459d", + "0x5c4da7d2287061c707570ca43858f00bcbdc22ff", + "0x5c678c60c6203c03b438b52667689a175852e973", + "0x5c8de18e55c75745888d661462bf52f0234f1cfb", + "0x5cdc5ada125c4d492f0843f72326a98acc65a6b7", + "0x5d856dfe69086b32791a867653d2a2dfbe7bbcfd", + "0x5e63bb70e0441366c491115a9f6e1c8bf612173d", + "0x5eb5158ff8a6737e92879326fdeb6b570486abcd", + "0x5fb0e52ad1b83db83292666e050153950211e4f5", + "0x6062f47fc4c49b9b9331ed84fc6ccbcf1df93359", + "0x608094b5fcb7dac1826a233f078638e1c87542a7", + "0x60edcc8c50949a84e6d432f83eeb220d000cde88", + "0x614193a7ef4f2261cf8e810e14351f4e4883b9a8", + "0x6162893d6df8efe8f3c50f3a0ac1e46a591e0889", + "0x618c6dcc597b8603b6770188b492fc0028865528", + "0x61ee4d7d598b23f7f7e77da01e50c08ec7422376", + "0x621e92d04896786b0f52ec1d4ac84a40da1fe94e", + "0x622e238245e7bdd14a93021c3ca6a09173517de4", + "0x625f30fc76faeab8e43ec20f8860a67adc6ba6a4", + "0x625f3702f818ebfe4eb4ee7b3c6e0118867b1469", + "0x62d6f2260fce0fdfa1cc012b29a15be6931a6ee8", + "0x62ee75b0072275dc1ce46ab04f9dd7db116fa757", + "0x630bd3ba5b4ab68eaaf9e5481aee5497b31cad06", + "0x6315646a615f46c6d6b3802d809a6a61a6bf88fa", + "0x632c2f66ec955aeb16b9d25c32903f6cdfb4b856", + "0x632f5bbd5e67479692e7e57cbd50de0da81da7f2", + "0x636fc0ee2c48022b4c66ed4173cdc515a5378a6c", + "0x63c91c587c95d80fc9b2f3bf2b7feec9433aa85d", + "0x63d35426a50f11ba1f0d89ad6e540aa3e03c3b43", + "0x643eeb8f4628996b02507dbbe86beaa356a27fb6", + "0x64b1cd6690acf806a6f6081d27d1f91ac5a8a1f2", + "0x653ce8c23e4a3cb9fd5188e1d616af2bb874bf27", + "0x659cc45f7f414bec310f268a1c8a4ab58d7ac310", + "0x659ee5e46bf99058c133638a68601da2b2036edf", + "0x66020b06fd7b8f2cb40eb58c672d821192381d74", + "0x660caba6aaeea4654dcd76e34dff33f8074d49a9", + "0x6617a5efa8bf1463a0909659a995451f8b09f950", + "0x661e201103b48aaf43d8aa2a1aff20416d623faa", + "0x6654e23a1fccd3a3e463a5fa9d435d30e65c6860", + "0x66864324932ed68c8185a64f7148a4881e341a96", + "0x673ecfb877e84c26d9a4313a269362a775b76724", + "0x67467ce27cdbe4845a09977d4d815670a6d4447a", + "0x675b54d3d7b11bd5a68b436e71c850f961441391", + "0x67bd2e15e69e0d3e694960cb4cd0498048fc14d5", + "0x68190f57f3603288dcdf4212da09de8bfbe72d83", + "0x684b0d1f12dfbf4f7857d33241937355b53bf185", + "0x68a4da8a141147b23bd1d48efe3325e463c3bbda", + "0x693c1b88ba4a6cf7d099bb247153d8b1c92d3cb2", + "0x6964a7853a64e841d63b9e5ff4eb6cd4129873cd", + "0x697d4d5d6990290f77a1cb7819bd07fe3666790a", + "0x69a9529df246fa1eac6604c47ba5b43b0e13b364", + "0x69c971e57f6fb62c96a2b4c4b20927d5afa63f85", + "0x69f76c72d2ad9c3733b80a207be2d1ab4c5e7c00", + "0x6a20c9c6dcf9a11d4dfb314760bcc09df0df4a46", + "0x6a3727ffc861fed7d53fc9751ee51c1d53e6864c", + "0x6a3e9d87b6639bb013cdcd4a60ac3e097e0fc68d", + "0x6afe686cbf7e28d346fd975f1f99ac2867ba25fb", + "0x6b0ecb8acd6fd929d2c06756ac3f70e4ef6ce880", + "0x6b1a5eaec62ff9043479e8c40f20ea21e42ba7f6", + "0x6b26b2bbbd32939670a9b1410a55aeeda95a36b9", + "0x6b61059e5fcb98790eb221737fe44be445b78506", + "0x6bc4c44c21cb70a132b238f598d027728ca2137b", + "0x6bef6d78c48d839f0f61f9e505cb3a26daf62a6d", + "0x6bfad1afc7499a04f1cc46188724457df785b585", + "0x6c21e5568d91a1f3479c8f22122b749c6aea3c6f", + "0x6c25cd6a42e9fb918cfae06a5823ed0504163957", + "0x6d2a662589947d397b863fbf1b505efefb3a37a7", + "0x6d7e499edea15408bc03b1bafa48d970320ecb31", + "0x6d7ef3def9acc8573d0d58997f68702db6f94d64", + "0x6dfc7eb0a4d538cbe611428b6379047176534f6d", + "0x6e2aa640fde01e4dec57801d5124cbab4ceaaf08", + "0x6e2c6c20a22457b2138c35d4ca043d93d6ac5beb", + "0x6ea1bd20ab236204b48bd0d47c830733099067b6", + "0x6eabd28e39bacce162f0d182e18905ad236af5be", + "0x6f50650c200c2e6b683bf94ff86c3d4e09fbca21", + "0x6f9cad4cfeae77acea36b64d97285a5430c21761", + "0x6fa1c74b956914ead0007d39e4abfba3ce442a3b", + "0x6fb458cbf65e1af4821d7dfff26a7dde148d7134", + "0x6fecc68c4ffa0681d5f91b12778e5a2c97e700e1", + "0x70290716cc09336d4eaa772c192b992691c113b3", + "0x703d2dd921da44e12502dc6ae8030a3044130e54", + "0x703ef1b03f4abfe0cb37a309295b737af6ccbbac", + "0x70497b0330bf7c128822ef8053c625a1cb66ec11", + "0x70594e5e61c7bb8c423428aeb8dfaed513aceb62", + "0x707e01498ad1a4a8f09ec900d9c9c7c8ba9f6420", + "0x707ef1a7d33ae64691c40d9517790cc52c344426", + "0x70a81b4b97f7ea80b758b0c7cf1b8cc52a747d7e", + "0x71302fcae0b83b4de731a3ab15ff9a4877720fe8", + "0x71a42076587399fcce6d3bafb9a06b98a9055280", + "0x71c0591cf3a06935ead8280a674b1da5a6f12c59", + "0x723efca50232b6a81a3c09bd9f9d6eaac318b54f", + "0x72cbd84aa2d4b6b4f927716f2ca0a95d6cdfc99a", + "0x72e4f8f470648031c25b88bb114566d49d904f73", + "0x7307c3007ba5b3a1407b08feaf75b3bf0a5a8a48", + "0x7372b15f7f3071cfdda34ca4ec79788467edf8ba", + "0x737c249e29163fdd680970071030dd65aaed286b", + "0x73abacfa94d8ac9f37dd148f93d8e19dfddc31c5", + "0x740803a85bb34b274daad865d917616927314662", + "0x747f4f8788c55226b92f8723c74104fbb92b9c2b", + "0x74823420a7e961261cd92fc1692fd8cc9c8ecab0", + "0x74a51292bf31f46875a7f1c371deb1840ddb7578", + "0x74fcea308ebf0e8eb4bc1fb8ed4836dc53848880", + "0x759a7337dda540a5becfcdf1bfd523a828e72393", + "0x75b5a31b432aa0bc42d03c3232dd2fc510e1d674", + "0x76390ddc8c801fe6e40e69c3c2a430ca3531aef6", + "0x7663ee6919e341c54c2584e4344082bdf2d71dcb", + "0x766bce115924e81da1a97dcddba7af4cb8a00bc3", + "0x771dda6e6a911560fe862edcbc95af16032cd0e3", + "0x773cb4bcc654b438a2324d1f0fca1ca1a1b2bee8", + "0x77dc4dc4e764d7dce7f4f7f1f1f759e3170e0caf", + "0x77e8e87c2ea60d78213e1f53f402f02fa62fd35c", + "0x77f7ae16f942ecf49bda20591e4f48661d0d5795", + "0x784f13c7f57f95c2cc785e0cc0a354bcc4d2dcea", + "0x7868acad0710f53831ee456160ad9f00b7f22221", + "0x78c8ebf0c033acbf94108dd7397152a87d3f71b8", + "0x78dd1947c2f4d27032bcc5e1895a71bec40d1dde", + "0x7977f7e2b4e3bd9dc5ddecc3ae941c3e47d7597c", + "0x79c07f224b51d4644a6b01901edb855146a3c8a9", + "0x79cedaf7b21b5e6ba1eaceb9c02f3b0844424763", + "0x7a38c53ece8cce9b12a8f9f72dddb65c7626049b", + "0x7a837297776b6a5c3d5f97a4ff5043771b426c57", + "0x7ad7487a1efb8915b0de5b610cec143f48b2c375", + "0x7b6fd6ca8a8122534c7a6e62cf930c7d34f02e84", + "0x7c48c76b2055d4000973fe2c88c53015222d491c", + "0x7c677aa6f77ed5003fdeb277a63c4a138a0c8b52", + "0x7cff8ac2b52e5dccc01f1e1bc06d229f71d50ecf", + "0x7d352f53252b71d15f6f7ad087536e0711904259", + "0x7d96fb0db654dc8b36e5eb43d73f42fc0382a38d", + "0x7dad3a4377664490d643286628cd90ea75dcecfb", + "0x7dddedd801bdb2ae1379aa0ea6310d1626de1b68", + "0x7e0b65a1089646364781d3fccbee426d691b6d6b", + "0x7e55f681fe0d46bddbc224e5eeaa64137b1e7132", + "0x7ee2b6c7491b1ae7cfb179d417f4446dcba1bc41", + "0x7f02eca6c77941c1222f5c2a4678ee377dd7d493", + "0x7fa76563e1e71d0200a0168ede41d8791ca3ee4f", + "0x7fa82fbb125490b4372a9b8eaca5812e81d918db", + "0x7fa9147e30d0d86f6de3b932f0595249f0a450e5", + "0x8030a9f114fcbb10c57d9a6da309f4a17f42118c", + "0x805deaa7a12f1fc04189d435ede1a725eff73488", + "0x80b178c02cee6c95fbb1121e920349bf8c750c84", + "0x80da842d92338e9146d816a0d6bab6a1834e01b5", + "0x80ffbb16433eb02157f77b39fb8f5b4f3c42ef69", + "0x8108801af9e5b5cae9a704e3fc712c31192597a5", + "0x8174c36bd0e941ecf4cfb2159944d693a51650c2", + "0x817ca359a9e67743f49dc619bad22d4bdaa65991", + "0x81ad8bec855c97c7ddc035cbc160d50a97fcc901", + "0x81b81b9297b59454bbb805c9cfdbcd137c2156f1", + "0x8203f494317d65111702bd0522497fe4e8a3c247", + "0x822572dfb2e5fcd385486ca9100d175db4a11f8d", + "0x824b5b747e0b102a47ae0da76a4e3a7bef27d6ab", + "0x827c3b1e5bd37907b65e8687204540ec06bfe95a", + "0x82b9c9ac40b63e23d74a3d151d3d2bbe2727a4a7", + "0x834fca98bd9157e7d3b8af6925414b077d2d3857", + "0x837e4390350d183661b956d16befd933a53665a4", + "0x83d5a34ed33bcf2452b57ca4c975ae7cf134faad", + "0x83d9b998972db0d813b7c3f6a66018b9a8f1f6b4", + "0x853ab795d49fe8fd380155f06d708032f4439584", + "0x85f6941425558357fedd92b60954d376296e37f7", + "0x86a0c14b9f2d8d8078c5b392ad895c6d73a41e00", + "0x86ae0babf68a869fb4076189c2f068ae90d4f810", + "0x86bb94015c6d1af8951a03ed341ef9ea06705c61", + "0x8787f2996f8f919f7c072dea5978bd55e5f56150", + "0x87dbbf3541fc3fda614b3b86c0c42e78b4c8b1cb", + "0x87f33162c75def4b0f30204d6ee806f986dea443", + "0x87f3bab0b0867a2dc4b18c3f018537de67b2abdd", + "0x8802117f21236e228251b4c49571da6462cbe8f6", + "0x88a7cb9a9e73d5aac0a139580e3fe9f2918ebf60", + "0x88c1eec1acc212458f4de2b0254e780c5ab17538", + "0x88d776e193778d5eb3c27c040398849828a68776", + "0x88f374c0440efcf6a19137ab6b94243522af14dc", + "0x89c98da89d83cdd59191f71dfd5e1d783f4f4b71", + "0x89e5780bcfb90d668d1742f1440dc9296c9ca1cc", + "0x8a258b7d90c69c798a2992f8f4957435883db8f4", + "0x8a73f74b3a579d7be6a7e3f8d5eccf2be0516d16", + "0x8aa1b309af5c5096057f96ad7f126a0907e6ebac", + "0x8aa771357a63423061282127fd76b8cc2dd0d041", + "0x8ae213fce18f644de77c35a66c2e3ddf6f5eec91", + "0x8b69b593bf361897b3a5dff8a842d6bc19e0b0de", + "0x8c0dea9b750f8ea91844672e4f43938f205d380b", + "0x8cb0c12085ccbe801529c34a61e71f4792a122a4", + "0x8cd04f29782918accd6d5e2be2e8e737dd3e0eca", + "0x8cfe9648814e3591d7e264d04e093ed4d4eeeed7", + "0x8d15e4f02984129774f870a3afada75974a75bb0", + "0x8d3fe11a83afcda18ff0aed25dc68febcc73e883", + "0x8d4686e96c5eedf871ac58b54ce061ddccdaa1a1", + "0x8d60dcfb03c5dcf4ed331e6f6bde0d905399c507", + "0x8d6df1f585f7872e25add99ae530fa3e7fc3d711", + "0x8dd1a7ec46391201798a40fafce59c4c47aeb611", + "0x8de3b685a2f295927aeac5e06533d41d9d9d4e66", + "0x8e153aa8d770334d2d532122c52476dc43a96616", + "0x8e1ca3262971a6db9439922beb36768a186a5269", + "0x8e3f0e3728a05967539a3e40aefaed02913f11e9", + "0x8e5cb169c68554bdc4965bce5e4f4e17c12a64a1", + "0x8ea24314417d8932297656872cfb51e5bd4bff74", + "0x8ee8da9580901ff0302495182f40aa20f49d17ea", + "0x8f1ff201bfbf1d221eded5f2cd09f79aea681326", + "0x8f31f50a904ba8d4943aa16b12076713e760c414", + "0x8fd50a3488bcded29cff2815d0a3b093a63655d7", + "0x8ff43d2bdbd7fe0bb086a196d3c623661baf529e", + "0x904f5c3872a0987b777c478f82be583a17353c60", + "0x90cfba635a5ffe05c49ebefd6ea0736cb397a744", + "0x919e0a233a003943e7989a22caa11c5644200b3d", + "0x91c10863f581d2cae3d6f6f5be897d6d9d0415db", + "0x91d8e1dd54308fe29786725ec4a9a707c16a9d31", + "0x92ee07c0c04fa4ce801e9cc22bbc4d812f3a3968", + "0x934ab1c77711263c65d3b91c54b3acf5ce8a6fa6", + "0x93c3b06356f7b36cd5cc4bd29a24ffaba96e0c46", + "0x93ccc544f4522dca498628b3a37ef21279c072d8", + "0x93d34b5d356dce6b752506364d0889870e163619", + "0x940830be01dded6c91c111c823df20bd35ecda9a", + "0x945fdf583521e64508c51a0f73267e67ed1ac355", + "0x94a491770db9c9e56d0fdb5bfc32caca8e76f15e", + "0x9547029282aa64870ce12315666680fbcd839dbe", + "0x957004de7daf24eb973e2977f3b12daccf928b45", + "0x9576336e424988dd18d119de744a87ee2f5e4c4b", + "0x9585f3f943a9092bce1ea286bbdb775e12020fb3", + "0x95e62d3e9ce6447c10c4c9203f77e5b5fe487609", + "0x95f85ccd22f428ec4edfa07d045d51416effe68b", + "0x962152704b1f63bf0213dfb58d03ae6f99112ea8", + "0x96af72858296ce97a14fa976898689b3a7c45b1c", + "0x96b9666756824ac16ff628cac5e67dcd015067a7", + "0x96c5979d71c9cb6d521312e1048169942d8ea3eb", + "0x96ffa07ac0e0af2859ae0d6fe43d7f79d8250489", + "0x97315e146cc48b90f5e764d3b8b345d8971eb9ec", + "0x976c150330953844e9336f39c45944586d464642", + "0x977e45b0aab8e36f3a9a3d0084bdb54a3b05cdd6", + "0x977e8c45168579e43dfed5034e59dd8342bf2170", + "0x97cf20f117d9801a4262f04f0481afbbf50ab920", + "0x97d361a30a5ad28dafa1eaebd8c38851932b63c0", + "0x98991701bda3def7d6d83d1e055e856554a005e9", + "0x994a3bdb4445a3c7eec8b4b3cc3d9c8172e6894b", + "0x995c933c58ee5e4e585e199c9703185320a42cec", + "0x996543f87e29379dc9afbdeaa0f5d9fe349753d3", + "0x9a00da21f46def02b9bd2a385b0540f778a8ee93", + "0x9a4ad47abfdf08f646e3c88931ebc9f91b1a501f", + "0x9a8449b15ffffb3f670fe3a6767e1b1bdc764499", + "0x9ae90a4a68091f0926a864ea89897054f6bfa7b2", + "0x9af3fdce076db54b8c44164655b86ae4975539a0", + "0x9af9199474ed0b7138ec542a401b8ad4f4570d1c", + "0x9b0d4b1f1e4a6f42ca8fbc7d5ed4fef9a4fb3a83", + "0x9b138fd7dd8fdde9503b9d416b8e869805f23ac9", + "0x9c606b32b4b2100961ae2fd5f92cc377603ad773", + "0x9cf301816fdceffec7a37ce149329c03e7bc0ac6", + "0x9cf76244235fa32262d7ce096773235df87e3a1d", + "0x9d8bfd19628735a2fb5dbfbd9fbef69b92de4cd3", + "0x9da7d71b0412287efd9c386579702ab4185daa97", + "0x9f0a41b893af9dfca8b1f1a058ce1e0a05800878", + "0x9f4cb141fb5db025af18915848c5b89e26bf9c6d", + "0xa00d795ab4d79b7995641424bbd91ea761b19e45", + "0xa03ae39022a0cf7b32f9b8a2c82da784de47f75e", + "0xa05720747fdc7c90fc898493802c0a3375448f66", + "0xa05a47d2ac059ec101db32cfc277611b06b20e0d", + "0xa0cb643d08a9c13110f449bfdab5db42b0610f47", + "0xa0f20059db6667c14dcfebe52ae74a8400117fb0", + "0xa0f8a29218d035c2f1c58dd5cdc29238d9bda34a", + "0xa1073d52329943a4a9bfe80b3652647546e86981", + "0xa11f90793150d46bd5243fb1aa6bfa676b050dd9", + "0xa16ea06279f500360a9bf44f8d62b7c072900784", + "0xa18b311cc231af38d51ea874dd25f0124250d298", + "0xa2066d19e0c682b3e2381118109aae78475bb7a6", + "0xa207cdf1e1a644403caf3ee18d8a56a250657f06", + "0xa2266ece69a2300d5a1176b3f02b6bbff0742e6f", + "0xa28fb68587752dd0d388940ed8610c27d49646d4", + "0xa2a3e82a3b03c8454b6499dedb6f1c4f61badea3", + "0xa2bb3a542b938c87c6753b5ed3439bdd172e663c", + "0xa2c93dfaa77c02822b51a68c970191e729d189c2", + "0xa2d19efffa625c3b1294c507d6e950bcc09e1028", + "0xa2fd031f7c5d1a272b30a59cad21b62f284a4374", + "0xa31c4a11b0b030f6032c21d92d10fd24bb891cd3", + "0xa334ca1f83c787188907f8c9652782095943a58a", + "0xa3563a6de4bdc1684ad179263819fbcbcbc1be5b", + "0xa3ce09388303d0faaa9fbd01bb27e592f82b07fc", + "0xa3f9e5324a6b6dd34d4e5ce88dce0b3be8281ade", + "0xa40169dcf8431867fdb0229d6ca1b090517782bc", + "0xa470a2ad52e99fe312e20beddc4b74d6d9ef85ce", + "0xa485465759fa62e9322c00bfa975bfa0f76927ce", + "0xa4a8974cde0af3f549e47b51ba23ddac05dff9d4", + "0xa4eede96787f188bb8c02fadc8998c758db25823", + "0xa537932fc93eed393b58839c23316f889dca6459", + "0xa53e13f66b9092c3a61dcefb6e3a08150b525d08", + "0xa55dd48247b00bb23c9ecc4d8db004ba4aa5b3b8", + "0xa56e0126639d657d7c745e555541a794a032c189", + "0xa5d2694921b91c7a8fe82499cbd601d6fa5a6459", + "0xa5d70e77cfa8328d8afa2789324b132765401759", + "0xa5df63b02bf2122af3b35a60aea75fbb60b3a1a3", + "0xa5e8a3af0501f0b1a59876ca989f38f82a802af0", + "0xa667f2f30890a1d7737ed5671abcbab38e72e3cb", + "0xa787faf8650c9ab971a667c385c84f4a804a9b69", + "0xa788c3b3ff00ff7ddea635726d6fc8b3e3e2dc10", + "0xa8143eccfe8d935a8fbdabcb67bdac69044377cc", + "0xa89a1e478d07d2471bdc2ce83f886addc210439f", + "0xa8d1ae9994233f33d01a7608438988b6aaf2183e", + "0xa96f4bfb95a33e64dc11500b5fef141484d6ffab", + "0xa99b5d749bc5bd83526afeae543ce23b5f187fbf", + "0xa9a369d5b6b90b982c60ab4ca1be3d9c37504610", + "0xaa1e83d55071954b4a7c74d6afea53869bdb9aa9", + "0xaa3813cbb0e0a0ea7391ddea93e26b04ff5c6768", + "0xaa99cb692a12e0f5335b7fa88204b6de3c4b3165", + "0xaab379eb178a868c48ccbef7f019debbe8fbe030", + "0xaac85f0ef8edd3d7a574d1dd88c13bdcfe0a1a03", + "0xaac8e646fd42f13908cfbf726e6ce8765de712a7", + "0xaaccdb3f53d2fc12b10b99d2dde400226da2fa16", + "0xab9c7062ee11a70e17449b1295e5f2c7fbdb6555", + "0xaba259d872607abaa9fa49b7fee5281331bc2f17", + "0xabc8f03f9dd19139bd940d58234cf766ece11f43", + "0xabcff34badca3a78a881d181018c0a0443a4cbc9", + "0xabd71a8d461480f76a6d7079c087ebc9ac31ac15", + "0xac42d12e722b907f93d40270ab6d615ec6db2461", + "0xac8307d535adedacfb54849017ce010a6f643854", + "0xacdefccf0cc2fd79e25106297fcca8d188630ff0", + "0xad475d10cfb6b92190cefde3b4b77b0db8381d6a", + "0xad4cbc1dca0e0100a55fbccb5a60d36ea7381f4e", + "0xadad96aec15d94ac56310b4fb046453dbedf1155", + "0xadeb5382b5922f491ea1459ecc14efd8ab3fa385", + "0xae2585a4fa59cbba9c338a83fa5f3a6c2bd9342b", + "0xae2ff1ac29c375ad01f7c9a3c25773fea36c5c10", + "0xae436363f32a4fe7352ad25f4a91c792868b9030", + "0xae76d75f0bba8d96c6422edad8042d338a029ddb", + "0xae829ac7feabbc7327f5662e3120b67c45d8fb0c", + "0xaf29fead260be1fdb20ec6200e73fa89f9a2849a", + "0xaf373af84a255b307a8a0e480c30deef3c7238bf", + "0xaf89af4421b2c1e912ffb6a3a6e3b3343ce2ecbb", + "0xaf9b499368eef4e5560d851723e58d528cabb096", + "0xafa97544bf1778991008a68c2ec13c2a212febdf", + "0xafe8d6def3e3aaed8d3fb7dadb75269861b45c58", + "0xaff269a5257dcbda41a1e21793ea7034a0d20239", + "0xb02bdbb490325c78aaac403c6250e9a970f6cf8f", + "0xb0c89a9461353f991e0589c74c8b144149789978", + "0xb1aa8f09f2e50b87000fa0114d9f2d549ef1f70b", + "0xb1ac859a95577d74bcb4cb7ad049585c60278c5b", + "0xb1ecdc7d2d97abafb94b3d1f4e44035f1e0183b4", + "0xb229da258d483a1a73f28692e89f15085fc2abb3", + "0xb245472d82f1bf1e968f71b0af9f7d6732181478", + "0xb272afd91ac2291f6ba6f5afa0c594524ef9cda2", + "0xb34ecc95a77128c166531374cca0fdcef1c98c60", + "0xb36af2c84d28956bbb00011684a9e24ee1c3c06a", + "0xb3b526cee2cf40fdc822a630c2d896322cc2ed71", + "0xb3c987bf21a3e2dac8b7b1195ac1939ea39de09c", + "0xb409ece789d343ef3e8e4b41a5dfec75cfebf071", + "0xb424acb0c9e2686692a6a8b0cfe8e4ab8fed3c96", + "0xb4252367619c3f4b508cda8a4c9e89dd5908ad51", + "0xb42fa2396c3c429bc8868ab8b798a979fa93c9af", + "0xb446344513fb424492aad2c4362406d8bdb473d6", + "0xb52d59b6d90825dbc8619f31abc275baca5d7965", + "0xb628de450ec7eb6b3d09cde1cf7189cf9aae7d7f", + "0xb661dfd8685ac86ff8717075936daa85a7f6319c", + "0xb6cee594d8b7871851c37968be77ddd509251461", + "0xb76fc8f3039ac17417b9a36d1a5a00be81e036b0", + "0xb7d56d324f5a5701366cc1ce8dcd92b2b71e4912", + "0xb7f6446b5b34d697a48d34611c32af1d203cdb67", + "0xb8106490fb131bb246125ace9eaeaeb820b5c6ec", + "0xb81295f3008dd2abdc9c33b723f30830eaafe2ec", + "0xb8da3abf39506ac57bdcb9c271a2a6affafa3f1e", + "0xb8f94bbe97988c36941e9ac0c69fa5c67f93e35b", + "0xb92f0a689c0068e8794fb0c9604967b4e67f9ad0", + "0xb92f0e24f02af9eddae6f6cbbc2ec5192cdc42fc", + "0xb94a36f087aada4137abc2d9a5dcb27775a18b54", + "0xb958e7b413f6ad0c2d3d2d06fbc8dd18313a10f7", + "0xb9a23133167d3465dbbd82e2052a8fefa8456a5b", + "0xb9a26d1b93546df223c6eb66ffa994190fac65bf", + "0xb9ca0d4199aa6cef7f1da1e5ad23ca6c58b34cab", + "0xb9e35722f46c38bb2dff6ce73fcd4a3569773fa2", + "0xba152d0d66fa142a6a88b49a159d23bd2a06a10b", + "0xba2c762dcca1568252786a86a77cdf84698a074f", + "0xba3ab995a229d7e474ac4890ea41b29a36cd2cf0", + "0xba4a7dac5de75a3e0cc1a7c02d0f0502f4399049", + "0xba725112ea46050499eb03407466068532d4b493", + "0xba7514f3503add9fc50f8b5cc6aec4e11f040b52", + "0xbae2260300c4ee6ee9cdf200e6911e41d18abecb", + "0xbb0ecb5d87b68060ba5b872b5b7212638d2a79a0", + "0xbb105427110983d52b41ab7d5112367a1efef212", + "0xbb22e0237bee360431590be63c16aaba97f104ed", + "0xbb231bdda329033324924c74cd7c3a18edfe7a82", + "0xbb541b84a3e5ff883f71f37caeb767b7695340ca", + "0xbca90d6f62544d79db3ce5705a8be0b395584ffa", + "0xbd2320168733ac45c4ab6197536d8f3fcef5b38a", + "0xbda5ed78b5e3bc88c2c69bc8e6a36f68cb701213", + "0xbdef4e123b36e23cfb859dc7ae4985f03b0fd606", + "0xbf0f2cf69bde677c7a312ce5053a1cb0d2cfe82e", + "0xbf19e4516d6615192c1c9b91c7d2c9c3ddb77602", + "0xbf21a8825354de9a3af98116ed8dfe0786e251c3", + "0xbf2c78f49a0cee6f56853801834d215de493d87e", + "0xbf678cb0898856da855796c700107d75efe5f534", + "0xbf9ac7f5a1ee69d15986d6a9331f2fa40ba591d0", + "0xc0e66d85ac71a3a1b8a1ac6d8ce091006393dece", + "0xc115eedcd33da07a22eb3895a61d076e54a1aa47", + "0xc15c9cf30c8427450830c6bedeca35a4509626e9", + "0xc1862b87e011d4fdc8630320266d98cc6040a7f6", + "0xc1cb562562bf10fb95ed761bf09ca1cfaaf54c9c", + "0xc1f06efe4f38dd9022ed61bfff75a472bec7f8bc", + "0xc20e04dc8ae5e7a62ea9e7ad594788e554b88ba7", + "0xc23bd86b36a8b3c5fda91daa1c58f14e09158436", + "0xc2409aa02e7df1a419c6f0f843d9b912a7277050", + "0xc25f85d3b3e75924345666389d21910c680745a2", + "0xc27f9037acc553d06c6ee7194b21855f98462279", + "0xc2a49031e1db809766eff8aea625c95963590872", + "0xc33538553c5d9b693e84076873a1bbb915f235ac", + "0xc36d134690fc81e8024e7c3545fea29be148815f", + "0xc383c833888f9e90af68c6c5030a31782d5cfc31", + "0xc3b046e306e53157f7306e868bf58e7bbf8ac02c", + "0xc3b9b78b5992e8627b504069c5550fc809ad13cc", + "0xc3cacffa663544c6452ec43f9d8a5e93d0f308ad", + "0xc43ad9dc0decc1f745d9f28df64146d3fc27e4e2", + "0xc46ea7fdb845f27cd08a81a77d4ef5894dc511d3", + "0xc4adc80b529cda87d3a9fb0427147bc58c437cf2", + "0xc4addb503b1320d6cc65fc28224e87ccb0551fa9", + "0xc4d6cdfb3e5dcc91d49b0e4575631ff5a2090fd8", + "0xc4e6e50fca36c205c4435e1d0defa83fb708fa43", + "0xc510323853027d47b3125167ec31793c35455222", + "0xc52768a112a9a1ad5a41f73a1a05fbcfe95704b7", + "0xc54af9e913cc2617c045f1d629bbdc96c7aca9ea", + "0xc5d05946d39ffe986f1d4b7f308a576688845c0f", + "0xc5d27a29b72ffc2bde10ebf7e1f8fbed4b7164b7", + "0xc5d2ec86a80a4f3a62b7882858fbfe106b891de0", + "0xc689f7afec8f9adc8a9eabbec0366592e4597e5b", + "0xc71137a7fe2225bd5886d66018c573572ab3b111", + "0xc7151ef2c7ad62bb2f1fed7780e98a77eb58a0e5", + "0xc728ef07c0cb18a425137ab2c75dc2f5dada0261", + "0xc75590337846e23adb17e4d3b51e6519d190ce60", + "0xc76f8dd453ba68214cb2f199421b7c45817d8f47", + "0xc78e0b6fc399365fdbf48f451c71c83f411678dc", + "0xc7ad546d2487b5fa828edc6f5f8a218b4aa29fb6", + "0xc7e635b81c02f8680923e2cdcd085f943dc01244", + "0xc807a1be25f22a7a0d6d7c3c323d351bac0a3d8b", + "0xc80a1980e7787975b48b3e2487ee0f5af3d82cfe", + "0xc846fb7400c15b36323631aeaa9974155a64454b", + "0xc929e2a694f6bdae13ca8fbee6b8bec004e25eee", + "0xc944e1859488c233529890b9f6d4151cceb46b10", + "0xc95899b17337034bf170e9b19c596a9e57dcae97", + "0xc9b63faa54e9ee8920a428518f94855abe59f5c0", + "0xc9e15ed7a4f1db101f8848ec90dbabd099de189d", + "0xca28dd602b46c1338af3889c75feba883687e937", + "0xca8f68f978c6b44a6b36f3269810b3a068a9ca1e", + "0xca9b843498a8068da4222fad572630d53c7c28a6", + "0xcb05f700f619ec3ad872fdb928ff16a51471da68", + "0xcbc1ded4b63a42b9575ab51899b246084f88679d", + "0xcbefb26528102f9ca92839066e593244a90a8800", + "0xcc40a0f98048c5b404302e3af7fe5a392aa6fc1b", + "0xcc5340f3b71f8a9c2b917fedfa5628ce8028c065", + "0xcc724d58790ed709f95f0358a63ad65a7f4ff58d", + "0xcc9ffdf9b503cf3df655e470089b701796293849", + "0xcd1b8b6d7dcea49cc4e7792ee6763cc297b43a9b", + "0xcd6c9d31c9cc5776d6c95ade4b6a8ad9e117db91", + "0xcd84b41bffb8ae55067c2faebb6e7fce35945ba8", + "0xcd97433568203860240ad8448cf69cfae6889507", + "0xcde557e174ac95aee56d05d8daa64b54ba5bcd49", + "0xce4bdacee6a49ae0476adf49f88f301c961ff1c8", + "0xce8079bf9f2141cd3ee1d30bfd6ae6a1b8337309", + "0xcf271abc942a676e833eaea4ebeaf79b8028bd18", + "0xd0a6aa4e71b5965c0e9aec06963a51d44b4b4ffb", + "0xd0c30c0542b99b443747846daac952617a03a3ea", + "0xd0f3aa5f6d298e9e3a1ca2f92b3f75598d12aa31", + "0xd1395d38ceb3d61274afb040f182b56ec8102948", + "0xd14a4d8184f210f1c024f22f99118fa4dca9346c", + "0xd18218e764b6f426bb9565ae148e5105e3c9f7ee", + "0xd1a868a178f2aac858cc5e0a72478a4ffe7e361f", + "0xd239b4a49d2e3c3a5425854ecb1f0b6a63298708", + "0xd24abf544360f4ffebd1b14181ea5eadc07b04f8", + "0xd24c06e94e60dc9c3c71c7b7641950da1e881dd2", + "0xd2821726d9753a3f2dda890496874a3bc5335563", + "0xd3efbf2176868a9bf1bd29355ab4b3c18d376a67", + "0xd3fd81cddb8f09e8917e53efbb2f54dc83b6632f", + "0xd4277caf1bedab207f0fe53fc6c22beefe7b8ed7", + "0xd49e94e63a8151e92700d70529f7e42f84ecbcff", + "0xd5485d3f7a36c8ca158218c2b2ede24fb61d31be", + "0xd5f996e12c4ae3190162e6964ad0501273dff4fa", + "0xd66fcd8ce46c37f49165d04e1ea438dceea81b36", + "0xd7615a94cdb393effc45d38a8129f8b84ac64d4a", + "0xd78c9922d6cce194f649b303609146b2fa74d7f0", + "0xd7c189538ad6af62e7244b979f10fd75d0250572", + "0xd821743f989d294769e9222b65de076253f4bd1e", + "0xd885c943090b0a7ea54ad12b5a0d390bda0f3275", + "0xd88720cbf01aabfedab777df3d1aa2b63867084b", + "0xd8a83a1d2b9188ce3cd6b002112baa12250db237", + "0xd8fab8e11da1c0aa35be17d9644fec30a57815df", + "0xd914e54ea30c857a7d55d13c18c120c8cd1e2a3c", + "0xd922bf300b6ac1fce65212b98f64757b6b22b57d", + "0xd93c36a5d490dbb64b3d2ce29996bd7f08858f2b", + "0xd945027ebb85f821f7c8cb101b4ea964c93e83b4", + "0xd9762131fa7fa3699ca0e63cb7bb81c7cb8916fc", + "0xd9a38d473898bc48b86e51eb9a08bc0e403bb5eb", + "0xda880c85cca656e65ce1ea1ee09197f589e26a4b", + "0xdafcb8384d02fc84d61d3885f042b136e3f9f58b", + "0xdb29da3d285f85c8a93d2d5d82442c79c11dbe5d", + "0xdb5cb18dce7c904d117ae089d7dc8476d9a69ca6", + "0xdbab58b6359f02c4c212161c753bf799b9863e54", + "0xdbb23dca313db671def9566432017cb40406e7bf", + "0xdbd3774cc4ffb31bb54792630c0419e9f69ad376", + "0xdc8e70d614eb13fdbe8f10d6a7c6a14e52ced703", + "0xdc9f177e3fa5631f099972ad90894809bb171c99", + "0xdcbcc6026df093ad76e17743c5e64434312b8caf", + "0xdcdc425e504839d74ce7731995e0a34b9dbc95f1", + "0xdd0e5bb78eeaece9a38a0bdaa9431581705587c5", + "0xdd3b89def19a9144088d38bf6532f2b018a478ea", + "0xddabffe326708d80cc38f5ddab8b12287a22bbd6", + "0xddee89fff5196ade6fdffd9cc7cf50fe585f7ee9", + "0xde2f849d8680a6b4067c9eed07ae63e89da948c0", + "0xde301c3c4edd58ca628f3d5fcdbd0d0057df86f2", + "0xde3469f6c755c651eb2d72fb35f5269ab3ca11f8", + "0xde97c0aad00cc1e07d4b3bf9d5296f8baa3d021e", + "0xdea4afe89c0c8fd5c2f79553e6ae5148c4c9a4c6", + "0xdfc1aad2a496a35bfac234de4f4336dc8577faf6", + "0xdfda72f608ced50fd613a77b1ac0920b2d8a36b8", + "0xe01cc4103b035c33adbe82b0acb927d86dba77de", + "0xe070713014c58e3f83005bff7f8b0eb8bd153b1c", + "0xe0de77866a13d04a8423fa4fa134a8796b9ebe85", + "0xe0ef45040088a6d75d40aaa81332a41d09f552f2", + "0xe15b00a63a5e6939432bf9de26e0fc5f61a3ecce", + "0xe163245d23c1f56ddf1d14686d80dad40788d97f", + "0xe16a8c6b172a10a1e4922bbf2c7e1783880ec254", + "0xe17ae336710be802905ec2cb1e3d3be24ff25b76", + "0xe24ff7364365eadfb6e438be41acc70b64ad9083", + "0xe2537a94ed874aa80430ab87530e76a11b4ef0c8", + "0xe2aadb09e9c0ed0e669d87e762c92d76ddeed212", + "0xe2d3fcdcc6aa4507d43315db3bb46848614f9b72", + "0xe31cf5290ab3706ececf99c86ce9bc5ec333e6bd", + "0xe34c5434f56fc26f5aabe8450797871e241b7582", + "0xe3a2696f430cb5a1a0f4569f0d11c1707c717335", + "0xe443dc35c3cd3663159b34b728922214b1470264", + "0xe4b2174a298c05b4e8f960627cd4da33de96298e", + "0xe4c65b924c09f4f0a9f644acf528d4f4bb5e7065", + "0xe561dc1ed66f09b8f2f53c7125db14b689c9af6a", + "0xe5b64ca28e88968a4061d396fa853a784df25e17", + "0xe5d19b068f5802842adcd4d92e7061f61b781ce1", + "0xe66ddc19e897282311e5a8a18c7e48cc6facd5c5", + "0xe674d099fe170715706fba53902a9c0bdac987f6", + "0xe67cf928d77e08c82f3f2b2fb6811af8db39b692", + "0xe698af793d1e9d2693e82feddbc41fd696ec52ac", + "0xe69de9998a53e5446561252fcb0daccd08f5257b", + "0xe6b43cadf806b1f5544f240b863d91fa0fdb25a8", + "0xe71402a55449736dd2f016287245924ee214a6f0", + "0xe732e596e53aab90e841aade5eeb6af26d665b08", + "0xe75f5b638dc9bc66d9b450cc137ae512a7555a05", + "0xe7652139553fe5e97945f9501ee37670b631b4b5", + "0xe8145a86aecea43c4b04a1bc18bd046075f20bf2", + "0xe89232d4e2f8c67186cbdd73df094f67a44a157e", + "0xe9ac67aa08dbc1af256edceb67efbb47ebd8413d", + "0xe9c54e4962b9545da87aeccff5eca1a996a8b92d", + "0xea2882689969ea6166d38fa4d5bad5302d73b185", + "0xea2eadc24b3e41ad41799404e6b0e9376341d0ba", + "0xeac64c5d9437a9ec535dc9e1d04506852b520914", + "0xeb589433536d65dc80d68615e013d237a367b7aa", + "0xeb6ae1e6d4b9491a59d0a29fe1f4098cdde9a5f3", + "0xeb6be60be4309a56f48f91f682156feb881b0957", + "0xebbb49deab19658a4736380a2d8aa8d1a83df895", + "0xebcb0c68602c4c290fecdfedd8f8e7bd2061de0a", + "0xec3349d635212a34530b4a2dae33b81253eeef6a", + "0xec5e63199a7b8b79cf1fe2ba0f57bbaf8713b95f", + "0xec81d707f218e72581bbb64493cd363d17fd2529", + "0xec8bea91910d3b294928c8378b4abc45ebe641f2", + "0xec9819204e1e25f8719f90720aaca9d43bd03020", + "0xed026c2775b2c40d524d890d0b5efd09c3b46576", + "0xed32c9458eadaf94f7c023d511079dbd4399d135", + "0xed4525b1abaf7a12d4dd14b7668bb182ec9c6efd", + "0xed735664c69a1eefa4b612934d9fd2b192ae0ce6", + "0xed9dc80c3b0f8aa83f642d7f0cfda740b0d9751d", + "0xedeb02cc835e4baa6fe25eab888f763ac3d7101d", + "0xedf6ef3854a90f42f6d8c19cfcdc8361dca68d67", + "0xee067128359e20c49816f1f3c270b12b6acf0884", + "0xeeaee41d907da9ec3fa47388895f28142011d855", + "0xeef10a3effde3159fde37816a0d3b415ff2d2fd9", + "0xeefdb96d06c5f4616ebef3bf2cf33451e58450a2", + "0xeffd6e651bb2e42666c2fbdc4ef98662e51a3fa9", + "0xf00028b11afbc48033b3976f9d28889e498d7c0b", + "0xf0c7ab1cfde2de6b7d6dbf550ee32278406d7b4c", + "0xf0e25528e8d6f5b213345797ac5e1137f2a64bba", + "0xf11c67c9ec063b00f7965c97c41dbc5728a7bdcb", + "0xf127183bd96d6273805aaf09f1e4dda7e1ec3f73", + "0xf154074fb8becc75dad1c7f8f3e0dbff53650963", + "0xf1bb1de49767ad86c68cf303533716622666e90f", + "0xf1e664ea77c78f8fc86399e854908ef519092f95", + "0xf264937ab0a30444745a0d6f3963881f0fd85b4a", + "0xf2a73b45ec03e11292808f1565a5e0bfe7fc6d62", + "0xf3225e6f03ad30f03d3b9d865eb4ac29140391c4", + "0xf380b8e273e362763c4672a9cad5adae7d4b82b2", + "0xf3821186d7760c29c21c8ea1985178a7ed4c2cad", + "0xf402335076cbd5c58d5dfa61052ec4fd3cebc1bd", + "0xf472a8cec24591edb6778a06a438dc55d7240007", + "0xf552112de86982a07ff794a5fa6340e4d009a95e", + "0xf59517d7f790239e1a214e1158577a5c512e4435", + "0xf5bdb279506be6224f8f55f2c31af8acfda0ab90", + "0xf6edd40d35c6ca8d059dd85e6982a5a40e737c68", + "0xf741a47a5011e19b04cea54ba69ac3855a946e32", + "0xf76cf740de2d615e77040fdc5b6204a41bf1270d", + "0xf7926011ecf5c87db553a35bb8c0e9d31bc906f0", + "0xf857f28f81a80fbfa8aed674c3c1f52ffe5c981f", + "0xf899e06cdc8b30b40abdcb1fdcc05637b02d91c1", + "0xf8d978b6f10d70b31ac7a336c70099d23c019114", + "0xf9514e4c3f4e55d0d635c36ad35070a9a1ffdc56", + "0xf9654d22a1f2cca24377d117dd8719be8a84c226", + "0xf9e454666c14dc3e75a6d52fb39f16ec4a92d4d9", + "0xfa287476bd793039bbe589829ea089c17f151a62", + "0xfa40eac16bb8de30481237fe3cd0b46feda4971a", + "0xfa441678de2ee764d40897ebda60e18f5e8292b6", + "0xfa51502eb318223ac6b56f0988587793b409cbb8", + "0xfa629d50e8563efd401242b078b4c1fc03c5491e", + "0xfa686152b43abe629eb6be35309dddc6374c6b4f", + "0xfaa7243b14c68c1c7594107d4c9a7e31d6e98b34", + "0xfb09f7ebbeae506a38c0b98893fe4433afdd5340", + "0xfb141c08df37c048be1cfa1d5cca5be76f2f9e74", + "0xfba18d85da0a37f7d19b8f87da6ef3f7a3feb72a", + "0xfbcbbdb9dfece7a829ff7c89afd28defc440de98", + "0xfbe619e87ca4889540137e0265d69dd2ad886c03", + "0xfc1b9cb0c3498c5bc456a4cd379da66dc288002f", + "0xfc803edb758349804b56222c5e97786249e1a6ea", + "0xfcbde8f08ec82ff3fa1d3f5a525f8f61f9c8b6fb", + "0xfe9c793cbb5cd21201dceb05abd8690fd6cf869a", + "0xfeb09165a5ba3427913ab2b4800b79e8f69f938e", + "0xff19b04bc92e6af547f906c90d2ddddbf54b0011", + "0xff22b75e221124164453c5f558bc17b253dcb056", + "0xff4cfafd280902797fcf1c316604b0ff267ccfa8", + "0xff4f7a258feb6a8fea47f361cccadbd875386f41", + "0xff536587affb209fb361eecf5d7b0046134381f6", + "0xff560b656c0a59e9a6d9fd6d01cf2a14daddcb96", + "0xff91076e45fc27904ad5e89892d705f4910f1a0d", + "0xffa2536a631d9a7107183fc157014bfa08b306cd" +] \ No newline at end of file diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index e67057c..038e2b2 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -1,33 +1,43 @@ -import {Mutex} from "async-mutex"; +import { Mutex } from "async-mutex"; import redisClient from "../../lib/redisClient"; export class RoundRobin { addresses: string[]; index: number; mutex: Mutex; - constructor(addresses: string[]) { + environment: string; + + constructor(addresses: string[], environment: string) { this.addresses = addresses; - this.index = 0; + this.index = environment === "production" ? 1 : 501; this.mutex = new Mutex(); + this.environment = environment; } - async init () { - const rr_pointer = await redisClient.get(`production_rr_pointer`); + + async init() { + const rr_pointer = await redisClient.get(`${this.environment}_rr_pointer`); if (rr_pointer) { this.index = parseInt(rr_pointer); - }else{ - await redisClient.set(`production_rr_pointer`, this.index.toString()); + } else { + await redisClient.set(`${this.environment}_rr_pointer`, this.index.toString()); } } + async next() { const release = await this.mutex.acquire(); try { - const address = this.addresses[this.index]; - this.index = (this.index + 1) % this.addresses.length; - console.log("🛑🛑 this.index", this.index); - await redisClient.set(`production_rr_pointer`, this.index.toString()); + const address = this.addresses[this.index % this.addresses.length]; // Using modulo to wrap around addresses array + // Adjust index bounds based on environment + if (this.environment === "production") { + this.index = this.index < 500 ? this.index + 1 : 1; + } else if (this.environment === "staging") { + this.index = this.index < 1000 ? this.index + 1 : 501; + } + console.log(`🛑🛑 ${this.environment} index`, this.index); + await redisClient.set(`${this.environment}_rr_pointer`, this.index.toString()); return address; } finally { release(); } } -} \ No newline at end of file +} diff --git a/wallet_addresses.json b/wallet_addresses.json new file mode 100644 index 0000000..369b482 --- /dev/null +++ b/wallet_addresses.json @@ -0,0 +1,1002 @@ +[ + "0x0012f2df354a8676a68e5f4587bfa80b67948a7a", + "0x004d690b928a8f44f059fbbd30f74e10f1427d39", + "0x00cbf74201f02b3511fd02f81862900e61c525a6", + "0x00eec6061021da2830e094ff4c46bc6df2fd2916", + "0x012c2bce50d6086bf6347cd5b61989be1caf3bdc", + "0x015942428da04fe986dd14337c1025c64baa3de1", + "0x015eaba195c077cb6058d4a982cc34959e7178a6", + "0x0169106698aa1127dec37d68c23c73284d8b48ae", + "0x01a8b394eb6dd968cf1ce94abbe8473c230e9a00", + "0x01c6db34f2e4e7ad5fdae01c344dbf9f8715e59d", + "0x01e3088d53ba13d24d1180ce3818349959da205f", + "0x01e82362d2c1d43c3190949822322d2a3b9ed5ea", + "0x02127690a0493c00e35d630f4569ff79350052c8", + "0x026baee03d4485563028ef5df96336b22d080f29", + "0x0293bc2a5159fbf787e74d1be67a65d9ce8f6e71", + "0x029c015702d0252df59905b5348e5b003fcedf8e", + "0x035459ba71af5466252d50c2af23f30bd8b87ba3", + "0x03850f48a8fdaefc626c9225223b4daa0255e76e", + "0x03dbb6608e40bdb89cb38b37921fe9da44604e34", + "0x04407feb930afbcaccfc9a8960aff9126205fe8c", + "0x045a076f6513ca141f62503ff709ddcb1a57b114", + "0x046fbd3bf9b965ce5f44e5a87ec7a9ab5ed8e480", + "0x047467f353965a891bacfe714143378b1a668c01", + "0x04de4d9020ad05cf10eb854dffa273e2912cb5d6", + "0x05236739150dbc046891b13e265ff2f4d24ea635", + "0x0546e205b538b906b098440744874cb6881d83b2", + "0x057e2a0b75c80c8545cd75bb0a3af428630dd1ed", + "0x05a3a286a07560c2f7da68ed25acd0f698538352", + "0x05b6ec5200d2eec6d896f5a1fb6d1e2753ccca7e", + "0x05f30d55ab1e34d74575d0cbf766e36b4e8dd9b5", + "0x06101124d32f92f078ff1d2eda4e8ef97bd1d669", + "0x0652f0a386f020d41fbe15f268c376850124d064", + "0x067b46f38d79a5bc1ca18dadc9000e0f25f9739d", + "0x06a47001da60da83d14d903e0cc30a545516062d", + "0x06e6e8f0c7ab18ecc8b3ce107d9272ed239b0541", + "0x070c4435eb9afa546a788b531b1c4d1ed3db05e8", + "0x0734fe79a324503d203e6c75970b9e6bc30cae90", + "0x075ba51939afb7b0ebdd2002d9af045d1370a156", + "0x075c55fa60b804e6b2a117f9000690f6ce6fbbea", + "0x0782126bbdbe12aae6479b46c94daf4d8094c1e4", + "0x07c2b67460c07db63458550964ebca2dee4b92db", + "0x080fa4a0013ce1ffb66aa26adea4bba46dc649bb", + "0x08be73781d7176e99c10eb01c53c0b3cfdc43b92", + "0x08d17c4d84207b5c82d98eedc948c8c186761b2c", + "0x08ff07fd360f70532cd367ec3e2c663f7d63bcd1", + "0x092d6c840d02472ca7887b48a4ea98c3e97aef67", + "0x09715f9aec99b5dc00e9166ef356ef4d38be4eb6", + "0x0998a2e09783abc8eabfa3ee9d3bd44a597738e0", + "0x09c657d59f0a69cbf3aaa9079b574b55cd5d19ae", + "0x0aa1bb82c933cc6e0c9c2131b52ee5c23c88fd31", + "0x0ab6b12138792722f6578f21dbfc80e0912a0040", + "0x0acefa81afba562d97e5c66edd4596dcb7a180ab", + "0x0b0a3fd675238c41170f6a7fe5ad04ad3bb20fd8", + "0x0b1453c27dc9602fd17e2b187ff10288ea78bef2", + "0x0b445a38e9349ec2b35bee29f19d80a9279a00d1", + "0x0b71564f5eddd9b711cae4934562eec08078ad54", + "0x0b8fc5ebd3a221c058cd84d3f635ff63696642b1", + "0x0bc1afa1933dd178531dd985e989c5626b650b06", + "0x0c1dd41e9e76f78d486d1616240507a891f548cc", + "0x0c77f105c7fcf42abb832f450b40744b34e17a34", + "0x0c850f4a6ab80748f790155757d1abae4371b408", + "0x0d222268c82d5490277a18697a1f52cc6674d3f4", + "0x0d346985e16349bd13f496b397cfb280b0bc4d94", + "0x0dbe7b739029e5c409ad55f603373fc7d80ec755", + "0x0e4953bf69f9fd76085c88053fc6e96fbd6ea1f2", + "0x0eaeb728fe4968bec77004d03070e6a8624b1424", + "0x0eb5a4c48a806ebc68cafedec2e4f6c7e01b44dc", + "0x0edba5a90a7d2c7d1ba314fcea5262fb4f6d81bb", + "0x0edfa8955df975c8901a022afd96e2c13471170f", + "0x0eeb81a014e573ac83dd616099037986867547cc", + "0x0f003e327b91e4dceac101d89bb238c3ed38be85", + "0x0f75a3be357a275086a5123d533ea70d65e63eae", + "0x0f9542490222a0c7e2f558cc914d581372d3ab8e", + "0x1087b4c1ce76a16f3bc0c3a13ad29d3a8110cd60", + "0x10b753f3244a0276508bd69e3a9bff4fdaa2c5ee", + "0x10d313624a483e33c08e3f1a195ab6fb2438e3dd", + "0x113d3807d884077889cc932603c42dea4f888a7e", + "0x115d9ac806c84ad30a118077769ea6bf2cfa910e", + "0x115e77388024b06af27fa56cce7782bb3c0b1425", + "0x119cbb3e6e251ce68ae1f643351e007832bff520", + "0x1252852d1e6b237ee43e51936498f1486d2eb3f6", + "0x127de8aad486aa6b6726622b380f7272b086bd9a", + "0x129b3166da987428e0d1db90a68a23081246ef90", + "0x131001375b5f68589ca86608175ea06785c59b42", + "0x13154c8b02bdc32e06dbe282cc6beced0cdeb978", + "0x13dcab8f57fdbe5241ac09c330c2213976d85ddf", + "0x1440ffb43850c6c6928e9482d1e8342f6eede212", + "0x14646a1affb7eee94243137847c7408a59085b39", + "0x1479442c5c888a71d9c92d51074775576473e8e5", + "0x14c78a8145d3df87a8b3855c4596e2f8f95970c1", + "0x14c8dd3e6f63616f26e7ee82e9417fb3a3dc5c3d", + "0x158687ce1db2bae9a49cb3348a3826504136d123", + "0x159a5a0d08bf97aafb5316ae6dca8459d2799c29", + "0x15b2bcab312c421a6cb6fd4c3f15c990867202aa", + "0x1618b12d4e19cfabece4b9fe68b7619155482d8e", + "0x167b18e0c11dcc22d5d0fb90150a2e6a002dae55", + "0x1689b3d047a414fecf8ae98ccf674eed348b298b", + "0x169ac62cab6f7d8afd0ba64ff9620294885a07a8", + "0x16d88dbe5762116d6229547f97eaa85278c12b19", + "0x175dc75b5cbe646669403cb3a4253ea6d228f9f4", + "0x1792ffdbd12f6e770ff543acb988a6dc386bb6f2", + "0x1864c057b6a72445cdb2efa6e17e1389f9b1d073", + "0x18a6550e6834005aaf8b7c3b197351fef4b1e55e", + "0x190edcbece40a5fe53a600d8e73491c02f52f5c0", + "0x197e3c9d0f069ebfdf6d642671d971e6377143d1", + "0x19c83255df8c29f867d1d1e5b2735bca5b2f9db4", + "0x19df0780d73a4bf37e6826cd8a0184ed92db09fe", + "0x1a120663f2ab24a753fbb70def177d5492e4058b", + "0x1aa9ea375f7320d27aa6328b2a850ad8cada96d5", + "0x1ab029446e0334a200516fbea0863ee874c470d7", + "0x1ab5e14dbea004eb2f7dafeb74b5a25aed6fd659", + "0x1aea0ca93107d00ef53b5d68010c9fde8ab0dcb0", + "0x1b3cf8ecacc271bc15626b52cf0160dc9bb8f9d9", + "0x1bdcc766643fb7e355f823bccc74e8d7ff187ef6", + "0x1bf2daf7d7395154e60d23233d09a7336e7b3aba", + "0x1c15cb4af02c66d8cf42787e2b351fea3e94a264", + "0x1c8728bd930d0aebc1ef10323188621d2b90bb19", + "0x1d0caa6c55d7293e2fe085f0f3a55544446a0ebb", + "0x1d77a87c7cc7fbc605b1a5b00b0c4ba469382d4c", + "0x1d9f9f3a3a49137e8309e3c30bbadbfb44f54126", + "0x1dc2b7d191ced49448532536dc85a630ecf51d60", + "0x1df757ed297350f3150afe6b5926cdcc36c6b0c9", + "0x1e0fa7e273f7cab04522f5c89b123743d3d04780", + "0x1e373308548d5e094a8efe8b7043f831f81dd7ce", + "0x1eaa1e6d4209dc8deb8c79ddc894bdd7a0132a42", + "0x1ec27afb1444e647672990fd029d68edee662656", + "0x1f1a83bfbd48766d81da8fac53152c20dfd6458b", + "0x1f6fd255a2c372f6846f69d5dbfb8872d8096139", + "0x1fc8ff614b3a0965ab863a24613079230e0fb26b", + "0x1fd8217021468f11840182db91214c0ccd219ff1", + "0x1fed9c6bd241d09fcdbdb0c61eaa563e5c9a8109", + "0x1ff4ed74399b8330cd5a1d1e33d3de7e19669bb9", + "0x2009e37007d3b58bda8f3b91559117e049990420", + "0x2029137e11595dc3b9d386cbed95ab621e83109d", + "0x20b2bef23eb455b57af3d9da9d8f85fddc6d591b", + "0x20b99a5a61602b83a8e2926d6847ce1c5585fd7e", + "0x20d79ff411b8d3352a3e5f1ae6fb91a2f338b63c", + "0x21254836c56cd1b5052dd1a0a7bd5aa75ecc2db5", + "0x215545102ae426be3e9a10d2fa2fb8e954330754", + "0x217f7c25a06773908cae0c4aa7c535d1e5b999f3", + "0x21805f51e1f248fd598d930385afe64437427054", + "0x21a0115ccadd63d38e190b1b37a14b2bc41c5343", + "0x2217c59c17db3cc61990e47fff2f911f68ce43c5", + "0x2260a4ff07d14ba7de39300061798fe56b017ab5", + "0x22649b953c972f0739733fb2c13f2db1cb52b739", + "0x2292267c8ea09de8b40d736157314e099b76c9b6", + "0x22b5535f7b6a474437525d197135b84b1f914fd1", + "0x2364d773dc3d761b60f26b961764a4d9d88b0b25", + "0x238eb24e010d34440c25caa9229e55a490f66312", + "0x23bdb889379278db240515fbaaceb664ffd76703", + "0x24b4507b6047606a0deb4ac0d6aa080d9efbd5a9", + "0x24c8d7c7f9da15c1b39f68ee3f0feffc3cda6b46", + "0x250613ce3d6934ff361f264837048e0c6cba168b", + "0x25c96c47ed08176e2fb72afc2919fc8cbe115dc7", + "0x25d306ff27f38f2d7e76eedc1b508c11d68c5ae3", + "0x26090e01fb2435bb2f6ae02047d7f7e580634b0a", + "0x268f7bf71028e549bca7512b8fc5213147f2fc35", + "0x269850d594ccf03cf1f7db58ff6882e872fbc0be", + "0x26b09ee008b4dc7ecb7435ff33f1c6c563db88af", + "0x26c07978b3b84622b8ee398abb07e3b046f98358", + "0x2800b895df0437e87278f988b363f606cd88401c", + "0x287d4ff86c036b7712f92cc6f47649ebcfccb11b", + "0x2887a0b67b6063baaa32b57ac9d59d1c050fe2b7", + "0x28b3d75b829d18c275cc39cd964925a4273ed1b6", + "0x290aac02ba64b8612f218c36252ca4b1124d75d0", + "0x29450bc740be08833074e24ac4ba5cf56b29e3a2", + "0x2951d560fda1ea00560a161faf2c183fae338448", + "0x29896de7867c7378eb0e2f279c38be1882c8c11c", + "0x2a626a62a7a29b4907100745f06a73da332a96ef", + "0x2a68ea42218df093cb025df0529246b6e21c8e13", + "0x2adf74c95313de00238710417ba3761d9c04ba06", + "0x2b6560477a5a22b9bf247e1ea0b766068e0c61f2", + "0x2b8f5035ba4ae73ea4f100a14359e817a677850f", + "0x2bafc5c5657c2b90928a685af4fbfb498caea5b1", + "0x2bb5866cc318681a62337f9c724dd1987335baf2", + "0x2bf533183251abe50ceda3a3c4c171e3c6470406", + "0x2bffa8518ff9a9b5f4163ac53107eb315ec2cca6", + "0x2c735f62a124c98ba85b36707ad77eb7cd287cda", + "0x2e3c7d89339b2292e09795bdd8bc7ca3fe17261d", + "0x2e4c508a04b4556399ee9b98fab2bcc0e19c4168", + "0x2e83601554bdb905e8068c64b90d9e565214c4af", + "0x2e87a7f37f820da8286393f6d3767280103d95b9", + "0x2ec1374702cdb0501d97c9bbc215c3b2815d4fac", + "0x2f163dd164137b0c5364cd2b9c23dcb621bdeb9d", + "0x2f3267b30966a42ac223803630e0ce8828ada22d", + "0x2fb57ca42cd7eac24d8e839b2786643bda33c9fa", + "0x2fe4138cf2e0a06d27caa2f552de22e082f82f11", + "0x304e5dece1c9420345df03da1647be165f9f6019", + "0x30577a2587149f5247d8d091177f06acaf8e4d32", + "0x305f87e3331778f122e632895d3a153e093605ef", + "0x30aad2425bb16f35d3262fc048636b33fdc15bc0", + "0x30f983d1baae4d08b9b04d225fd7f7a84711e76f", + "0x310ff865859d45fe6b1596ab0322b785b705a203", + "0x312a5746f27a77eb9fee7dbb627b7fe4fa532a89", + "0x320be76a31a1eeb90eb81f3aaf226859297776b1", + "0x322cd101cb4df4904a90176bab57dda6e751aca1", + "0x32421a76d588992afe21f34155387a077c3daa57", + "0x326be51d49a0eacb5ee7fa163e6dd5a06ec4dbb2", + "0x327403f5d61d8096e378b15d44692d94f4d63d77", + "0x327b4b2fb7537ffae5a6e6c1a51b2ded202e83ad", + "0x3293c9a9416e11fc05a2e03ce184741f73504f7a", + "0x32eceae262eb188a6ffa252144d90c4d8d42c001", + "0x3304393cb40a0be44bc7203c68758589c55c7d3e", + "0x331e655c2f0ca63e8f6da266c3217355e8d305d9", + "0x333dcd23b665dc0b45f715bb9c6ddb6ab82ce380", + "0x336ff1f10690be18ead0eda0bcf813e8be919ab0", + "0x3384d205f90bca4d85032d01ed05b5ef3947aca9", + "0x33b820ea2b4ed872f3e3e57c97078498ad1f4565", + "0x33f7c5f9cbf3598007a20a5ffae0152e3443adb0", + "0x340a336467391a0735db594fb0eafca54283edd5", + "0x3468917f142700ce5eb9a4469d798b28cba807cd", + "0x3480db08d5233293ede2a67fb01a62538351daef", + "0x348bb7779b02821d4f1abb5a86c1615aa427d22e", + "0x34b38e8f04ff2f7454373ae75fdb225c51f9bab4", + "0x34ed0e5d64c84e0fb4b6bd11694d47731c3a9aa7", + "0x3500173b793e7632ea7be156eba05c14d4de5ebb", + "0x3524a44b4b0458eeaf234aa7dc9402092e3e2ac0", + "0x354200e16addbd0049d1c0c6d36523f7ba405858", + "0x35611c0927f2617b2b089db8fc27b729d7bed1f0", + "0x359310908e7b0404d22e5224255c5545ae0b1ae9", + "0x35bb928ad826be31eae6a6b076b53d7b2b36f8a3", + "0x35c6f93023cc27068dbee8e0c92bb638b6f96178", + "0x3623c44f9b05b30fa733b057c080ae2fdd0481a3", + "0x362c1a09ff1dd12c57148333a27e1298be76b3b7", + "0x3670c12ad974fc70d2ceecd7da52faf147f20612", + "0x36e24e7676876c5a21fd60f4d168a2f75f3ecfa5", + "0x36fcfb8818db4be24e439fa70d30e332dd3fc2c0", + "0x3712e29efa4f3bd5b5cc53c1c70a845194b9fda8", + "0x3734d23382746e8db45bbf792cafd1c8bcd107ec", + "0x3756ed6a7dc8a7786c86b8853aecbb770004d8ff", + "0x38c1d89da0d65419ad081eaac5b9d0c88f0783c4", + "0x38d8d63320eb2c7752e045a945a73077abaacff6", + "0x391765d6d8d4a3c1b1664406f4c7ec007cd0cea5", + "0x3a355550bfa6a221704c84fb349e02f24f2a5593", + "0x3a47d959587ec724c4f10793f556496d21225eda", + "0x3a5a422a2148d8599ba76ccd833aab3f21a7efd8", + "0x3a9beb0aa2b06af2ef028c02ed32957c2081abc1", + "0x3ae3fda3308ef73bb1ec6586a87b2c60c59f399d", + "0x3af6ec6e7c5b578cf266b1bd3aed0a1b0b9cddf4", + "0x3b9b2f1c12c468bcc00e108bd26801dcff471eba", + "0x3b9dd933654187317543c56416408342e3cba2b6", + "0x3be8c0533a44067a8117601c723f67a845745df8", + "0x3bf45213198956ae5655ce377c3bae0d9d9b8623", + "0x3bf6c4c445e2699eed24cf22b675fca034e7c552", + "0x3c095fd885c9ae3b35054042d172320425452e33", + "0x3c3e119853e3c1e81790a007a2c1e91c00d78174", + "0x3c95d8591303c3af9c7d51c6d1968968d9a99ef4", + "0x3cae68248f81999aa3db5a227eadb609502200ca", + "0x3cf4cc5362bd6789bdbb49e24875799d080e5d2f", + "0x3d3ece121919e35a03dbd7d70b5a188fef97833b", + "0x3d41a6097a054be94a816e91362e7a9181afd950", + "0x3d58ba8a3e6e20fc48841f028857217e13144274", + "0x3e2d971b45f5c0c688205db3e37d93476fce461d", + "0x3e336f9a793f8222437480d65bd522f08f9442f9", + "0x3e780db3c104c0ce65cbf142a53cdad9019d8a57", + "0x3e910132cda01ab8e73113f0e58d3e114174c636", + "0x3e9ed3366fbca13d547885931e83ada76e0016ec", + "0x3ea7e1a9e8c04cfbe8e1206a4db97db506f234ea", + "0x3eb515f3094a0cf1350a19ea0f6d6a4d908103cf", + "0x3ebe91b80dfe4db91f925c58803cfef2e98715cd", + "0x3ebeb9d83c0f62dd03028e3a6e3b070617ed3e5f", + "0x3ee28f19209d213f27dc1dcddf6fa21683e0a805", + "0x3f00298954c4397b2ee31835d23b62ff6688041a", + "0x3f803ef6ee33c8913a668e1b9ec9cdc706d4cb3a", + "0x3f9687c386c05083359d408de501d9c73a46477c", + "0x3fcfc46c0994a9ebb87ac9fdcff48d58ef9bc915", + "0x3fea05bf27a001ecd79c65e3b25b99795d128eec", + "0x40289c8f92f5730625d6235c90a8af5202c7e373", + "0x402adfcfbf77a0460eb5ce60e4939c93d7ce506f", + "0x403b3c6216b15d6697c12d7d5db7e9092808590d", + "0x4050782213123b2f17b5277e2e1a198eb08b7c9b", + "0x405079ee7208ac453791fdd8b29b9e7dcbd07488", + "0x40765f781ce03b8c3b6700b7d5671f43fcf9510f", + "0x409684da33019c3bc9dbe6c534ce231e233a7166", + "0x40af338fb4ccbb095c0cafa4ddce0b03d2ff7741", + "0x41010cc41e3dcc8392d6f214cba31fb408a83dea", + "0x412d885daf18db22219d69b57c2255bf8d5c5c17", + "0x4186074eaf99d6c2d77821f96677ae96701e727e", + "0x41aec4adb22800574b74a42fecab482c3478af25", + "0x41d7d5a0aeb837ec8996ec3537ebdb460ac51ecf", + "0x41fdd5c13c7d8303e6a541a83199cb5f1913515b", + "0x41fec24ef8a5462e7ddeb13fa51a9cedc470324a", + "0x4279b449f3856f58361b6898e8a4896b5cd9f08d", + "0x429785e15627f59f875f7598f343fae05123b9cc", + "0x430b309c8d82cf9895ab72fd006ed445784e47af", + "0x43a4e31e622798d9d83786d4131250b25654b711", + "0x43e80bd71e872910853f78d58b24e221270f650a", + "0x44222d92682c119fb6cb67c3603ad4fb0ba3a672", + "0x444ea7252203146ec027a645551d63cb47d845bb", + "0x44f1dc7fab14694e2d87fd4b2e143c5d0daf6ddd", + "0x453eebdc17a939d81ed3dd55b27b01b8702b5953", + "0x455320c618cf9148d4427730fda1f6520e6911d0", + "0x458f269e302b3b1041b27a252e5c2461cc228577", + "0x459b87bede5ff82b5679abeec61b7b42350a95a9", + "0x45af4f279d5611663207323363f48f4a225b12ea", + "0x45fa04a1541c129de4e9ddd50272d50c863c87fa", + "0x45fb0d906294c9b7e66e8cabce00a0dbf707190a", + "0x46b42515bdaaa4f4cfdddd871962712d6249ce89", + "0x46f4aff8c8b54a73eeb45b6d69f26c8eb8e5ca07", + "0x46f92b34f9997e7a7bbedbcbf27d9c8c6f870807", + "0x4724049bb8377530ed068a10fd88627fab67af57", + "0x47362bb2cce3b70e18bebd6d48521ebbd01ffed2", + "0x474538dc1f26a6be5f6571fdca2409c3a34e47ad", + "0x47a7cb163ff3e42cc50f915778ba74239c625297", + "0x47e1ad387e9d1979407cd88cbfd84469482592c0", + "0x48111756fd346f293d4b318b971ddf7dd050c579", + "0x482d1b7cbd7fc85b5bce69acf4783fe05e543807", + "0x4838712c2f4241b9aab4652badefc00c0c7d993f", + "0x48e660b0380061d7e2de6517ebee896c99241fa8", + "0x48f52a62fcaf4aabd15c07dd1a20d0c1e97f695d", + "0x4994fe2aa42632be1c3300afe9818e75ae252c50", + "0x49e53ef6ea0880bb97dcc806ababa770c251fff5", + "0x4a0b2c0841f985490f7a8d53b9a0a0ab16fef850", + "0x4a26832501fc2909e6675699d44a88179120cf42", + "0x4a45f6b81fc608950de0fa281f3b2434f62cf3a5", + "0x4a9c34a5d19db9e73d8e0fe9339dd26c8212760f", + "0x4aa8e04344bbd0d26e7331ad6f22149074d41944", + "0x4ae2337c8d4f04545c53ffc04e119f3c222b97c8", + "0x4b3e30c43f3b89605b9927ad1b1b319f8a3fed98", + "0x4b870776ccef5b75c4407a062b3b37e79625e3bc", + "0x4be8f15ace8c717cf1282febd730162390dd9627", + "0x4bfe9a161f5faea716d0d2e0df947848e1b21d2d", + "0x4c8060c9a5886c94cb9377e9cb4881c2f6731f42", + "0x4c93bb0204f25ca09ee3e5d7b7c92ca5168a25a8", + "0x4d0920a065a227954f4d3b4ef268a360901b3897", + "0x4d464c19eea6b201a6253dc9247e91c1c703381f", + "0x4d5a04f1220d479d843dee8a0b6c459c5446a713", + "0x4d78d6c44fba78ffcc04e63ebcd8accc6b97e796", + "0x4dddeb22b41546e09f497fccc25b49e2b4fb0444", + "0x4e3bcaf42dcbaaec61e365c415c3c7caf88c6ebb", + "0x4e60a6a33ec26a29862f8fb458926f5b0c6b0042", + "0x4e6c06b5378ec51a3354021029c014f942cc2098", + "0x4f1786858ffb38549fe6208a13887503ca3659f4", + "0x4f6c8eb51dbb18ecc916242134ee251530c6602e", + "0x4f815a3117286530815f8372980c7631ce96879b", + "0x4fd7b01659b23752e4a23133c248bd15995d7a8c", + "0x5003b1e6b53c33267cc4544158adc6647bdd4dbf", + "0x5004fc814fafe457f96135373105e4f1c1328024", + "0x505a14141f8d8059c115def2e766dce2e34b3ae4", + "0x50acd799d999b74dd0c9abe5ca7a7d89f1a1e0e6", + "0x50b3a06d50b553faa898f015b79ca5f9f4bfad0e", + "0x50ff201fdff4381b0ebb3585fa3f657b79d987d4", + "0x514338cc6e28ce6468a23c2fec897a0b79d57c5d", + "0x515e3178ae446197233960d4444ff4396922da03", + "0x51744da340681920a8e974091d924f3a8f6a7f97", + "0x518961f9a25b2c969ed09bd25381d14cc2543501", + "0x51a8e279d136978a0b6a056189ca1dbfc61e743a", + "0x51d8dafea0edcf158180d8c5ab8d906c1e4f1e9a", + "0x52d59166acabeb36e6d61f311e9ceab22c0f701c", + "0x5321c8753e8f35b091e5a0e4534db0e1906ff30e", + "0x53790768ee318484c4fc484e6a6fd48b5a07a67f", + "0x538554fe863c39df563c46e25b361fa31ba920ea", + "0x5464e414486421c37827642dd8556a155efd4007", + "0x54a451870f29a57dce2dea2dfd0b0c7871d9eb79", + "0x54f4bdd319dd702e06b1824ba7df23753098b14d", + "0x55454d2656fe43d6bd9e5d720f172cf88083c809", + "0x55cea8e77a16dcbffa3ad4a660da3ede2b933cf3", + "0x562e502b07e7fb7bee85a91fe3b576fca6c61ab9", + "0x563b642ef0599572105dd080009e173bfdbea1ed", + "0x5668d01d490f00742b8c5d94958638eba6f35822", + "0x569534990f0b084552a94fb7a5138a6f248f19b9", + "0x56a83edf0ffbd2e1a4fe4f7c3053a0e1fd71a1f9", + "0x56b7a5bcb27fe8220fa22ae3753b0338d02dc3ae", + "0x56e7e62c40a9eef6970de293138cd52a539f37a2", + "0x56ed484a6ef01101352c75d16ad7c2332f0d4d3e", + "0x57d00f42d8020a758d8717d357a8cedde8958700", + "0x57fcce165e3f0736aadec5cdf8ff8ad4906ada87", + "0x582bd9c2553890820c7e68948fb77f2013940a51", + "0x58dd7b47b0b5f979b7399df58aa2658405d9d552", + "0x58febf004449269f57a53e8146575e2e3f374a77", + "0x590e1102131354f2be244af3e15260a1be72e25e", + "0x594863c3ffd6543f174aaca59213340fb93678d2", + "0x59fb8cbc8a053f735821b03a58c2fe99fd6f6bc5", + "0x5a9f21388be3a2da23238b4ea0860be46bbc992b", + "0x5b27de733515448349e20d89845483753f65d6b5", + "0x5b3eca145ca7c088d33eeac991988e54b2ea282e", + "0x5b41d777d0aa1c926c14a918f28413b1245b9cdb", + "0x5b9dfe1a97ec57b2b8228608c5dce2edd50bb512", + "0x5ba0c1249e8a5108de26292c6e5db29662f4cf03", + "0x5ba107b05113c49a455a5e39216fb796c60e5271", + "0x5ba839d9ce66aebe320bee414253c319827f772a", + "0x5c04d529dce7e724a3fd5571e6ec73fd993e526f", + "0x5c367c8b20c67dd0195a15e3a567bbad4ca28b0a", + "0x5c3cdc9a382647bd8a439dc2c1f33634ac694e4e", + "0x5c3dcfd8d95c0bd334529f9c23e50ae1c2fe459d", + "0x5c4da7d2287061c707570ca43858f00bcbdc22ff", + "0x5c678c60c6203c03b438b52667689a175852e973", + "0x5c8de18e55c75745888d661462bf52f0234f1cfb", + "0x5cdc5ada125c4d492f0843f72326a98acc65a6b7", + "0x5d856dfe69086b32791a867653d2a2dfbe7bbcfd", + "0x5e63bb70e0441366c491115a9f6e1c8bf612173d", + "0x5eb5158ff8a6737e92879326fdeb6b570486abcd", + "0x5fb0e52ad1b83db83292666e050153950211e4f5", + "0x6062f47fc4c49b9b9331ed84fc6ccbcf1df93359", + "0x608094b5fcb7dac1826a233f078638e1c87542a7", + "0x60edcc8c50949a84e6d432f83eeb220d000cde88", + "0x614193a7ef4f2261cf8e810e14351f4e4883b9a8", + "0x6162893d6df8efe8f3c50f3a0ac1e46a591e0889", + "0x618c6dcc597b8603b6770188b492fc0028865528", + "0x61ee4d7d598b23f7f7e77da01e50c08ec7422376", + "0x621e92d04896786b0f52ec1d4ac84a40da1fe94e", + "0x622e238245e7bdd14a93021c3ca6a09173517de4", + "0x625f30fc76faeab8e43ec20f8860a67adc6ba6a4", + "0x625f3702f818ebfe4eb4ee7b3c6e0118867b1469", + "0x62d6f2260fce0fdfa1cc012b29a15be6931a6ee8", + "0x62ee75b0072275dc1ce46ab04f9dd7db116fa757", + "0x630bd3ba5b4ab68eaaf9e5481aee5497b31cad06", + "0x6315646a615f46c6d6b3802d809a6a61a6bf88fa", + "0x632c2f66ec955aeb16b9d25c32903f6cdfb4b856", + "0x632f5bbd5e67479692e7e57cbd50de0da81da7f2", + "0x636fc0ee2c48022b4c66ed4173cdc515a5378a6c", + "0x63c91c587c95d80fc9b2f3bf2b7feec9433aa85d", + "0x63d35426a50f11ba1f0d89ad6e540aa3e03c3b43", + "0x643eeb8f4628996b02507dbbe86beaa356a27fb6", + "0x64b1cd6690acf806a6f6081d27d1f91ac5a8a1f2", + "0x653ce8c23e4a3cb9fd5188e1d616af2bb874bf27", + "0x659cc45f7f414bec310f268a1c8a4ab58d7ac310", + "0x659ee5e46bf99058c133638a68601da2b2036edf", + "0x66020b06fd7b8f2cb40eb58c672d821192381d74", + "0x660caba6aaeea4654dcd76e34dff33f8074d49a9", + "0x6617a5efa8bf1463a0909659a995451f8b09f950", + "0x661e201103b48aaf43d8aa2a1aff20416d623faa", + "0x6654e23a1fccd3a3e463a5fa9d435d30e65c6860", + "0x66864324932ed68c8185a64f7148a4881e341a96", + "0x673ecfb877e84c26d9a4313a269362a775b76724", + "0x67467ce27cdbe4845a09977d4d815670a6d4447a", + "0x675b54d3d7b11bd5a68b436e71c850f961441391", + "0x67bd2e15e69e0d3e694960cb4cd0498048fc14d5", + "0x68190f57f3603288dcdf4212da09de8bfbe72d83", + "0x684b0d1f12dfbf4f7857d33241937355b53bf185", + "0x68a4da8a141147b23bd1d48efe3325e463c3bbda", + "0x693c1b88ba4a6cf7d099bb247153d8b1c92d3cb2", + "0x6964a7853a64e841d63b9e5ff4eb6cd4129873cd", + "0x697d4d5d6990290f77a1cb7819bd07fe3666790a", + "0x69a9529df246fa1eac6604c47ba5b43b0e13b364", + "0x69c971e57f6fb62c96a2b4c4b20927d5afa63f85", + "0x69f76c72d2ad9c3733b80a207be2d1ab4c5e7c00", + "0x6a20c9c6dcf9a11d4dfb314760bcc09df0df4a46", + "0x6a3727ffc861fed7d53fc9751ee51c1d53e6864c", + "0x6a3e9d87b6639bb013cdcd4a60ac3e097e0fc68d", + "0x6afe686cbf7e28d346fd975f1f99ac2867ba25fb", + "0x6b0ecb8acd6fd929d2c06756ac3f70e4ef6ce880", + "0x6b1a5eaec62ff9043479e8c40f20ea21e42ba7f6", + "0x6b26b2bbbd32939670a9b1410a55aeeda95a36b9", + "0x6b61059e5fcb98790eb221737fe44be445b78506", + "0x6bc4c44c21cb70a132b238f598d027728ca2137b", + "0x6bef6d78c48d839f0f61f9e505cb3a26daf62a6d", + "0x6bfad1afc7499a04f1cc46188724457df785b585", + "0x6c21e5568d91a1f3479c8f22122b749c6aea3c6f", + "0x6c25cd6a42e9fb918cfae06a5823ed0504163957", + "0x6d2a662589947d397b863fbf1b505efefb3a37a7", + "0x6d7e499edea15408bc03b1bafa48d970320ecb31", + "0x6d7ef3def9acc8573d0d58997f68702db6f94d64", + "0x6dfc7eb0a4d538cbe611428b6379047176534f6d", + "0x6e2aa640fde01e4dec57801d5124cbab4ceaaf08", + "0x6e2c6c20a22457b2138c35d4ca043d93d6ac5beb", + "0x6ea1bd20ab236204b48bd0d47c830733099067b6", + "0x6eabd28e39bacce162f0d182e18905ad236af5be", + "0x6f50650c200c2e6b683bf94ff86c3d4e09fbca21", + "0x6f9cad4cfeae77acea36b64d97285a5430c21761", + "0x6fa1c74b956914ead0007d39e4abfba3ce442a3b", + "0x6fb458cbf65e1af4821d7dfff26a7dde148d7134", + "0x6fecc68c4ffa0681d5f91b12778e5a2c97e700e1", + "0x70290716cc09336d4eaa772c192b992691c113b3", + "0x703d2dd921da44e12502dc6ae8030a3044130e54", + "0x703ef1b03f4abfe0cb37a309295b737af6ccbbac", + "0x70497b0330bf7c128822ef8053c625a1cb66ec11", + "0x70594e5e61c7bb8c423428aeb8dfaed513aceb62", + "0x707e01498ad1a4a8f09ec900d9c9c7c8ba9f6420", + "0x707ef1a7d33ae64691c40d9517790cc52c344426", + "0x70a81b4b97f7ea80b758b0c7cf1b8cc52a747d7e", + "0x71302fcae0b83b4de731a3ab15ff9a4877720fe8", + "0x71a42076587399fcce6d3bafb9a06b98a9055280", + "0x71c0591cf3a06935ead8280a674b1da5a6f12c59", + "0x723efca50232b6a81a3c09bd9f9d6eaac318b54f", + "0x72cbd84aa2d4b6b4f927716f2ca0a95d6cdfc99a", + "0x72e4f8f470648031c25b88bb114566d49d904f73", + "0x7307c3007ba5b3a1407b08feaf75b3bf0a5a8a48", + "0x7372b15f7f3071cfdda34ca4ec79788467edf8ba", + "0x737c249e29163fdd680970071030dd65aaed286b", + "0x73abacfa94d8ac9f37dd148f93d8e19dfddc31c5", + "0x740803a85bb34b274daad865d917616927314662", + "0x747f4f8788c55226b92f8723c74104fbb92b9c2b", + "0x74823420a7e961261cd92fc1692fd8cc9c8ecab0", + "0x74a51292bf31f46875a7f1c371deb1840ddb7578", + "0x74fcea308ebf0e8eb4bc1fb8ed4836dc53848880", + "0x759a7337dda540a5becfcdf1bfd523a828e72393", + "0x75b5a31b432aa0bc42d03c3232dd2fc510e1d674", + "0x76390ddc8c801fe6e40e69c3c2a430ca3531aef6", + "0x7663ee6919e341c54c2584e4344082bdf2d71dcb", + "0x766bce115924e81da1a97dcddba7af4cb8a00bc3", + "0x771dda6e6a911560fe862edcbc95af16032cd0e3", + "0x773cb4bcc654b438a2324d1f0fca1ca1a1b2bee8", + "0x77dc4dc4e764d7dce7f4f7f1f1f759e3170e0caf", + "0x77e8e87c2ea60d78213e1f53f402f02fa62fd35c", + "0x77f7ae16f942ecf49bda20591e4f48661d0d5795", + "0x784f13c7f57f95c2cc785e0cc0a354bcc4d2dcea", + "0x7868acad0710f53831ee456160ad9f00b7f22221", + "0x78c8ebf0c033acbf94108dd7397152a87d3f71b8", + "0x78dd1947c2f4d27032bcc5e1895a71bec40d1dde", + "0x7977f7e2b4e3bd9dc5ddecc3ae941c3e47d7597c", + "0x79c07f224b51d4644a6b01901edb855146a3c8a9", + "0x79cedaf7b21b5e6ba1eaceb9c02f3b0844424763", + "0x7a38c53ece8cce9b12a8f9f72dddb65c7626049b", + "0x7a837297776b6a5c3d5f97a4ff5043771b426c57", + "0x7ad7487a1efb8915b0de5b610cec143f48b2c375", + "0x7b6fd6ca8a8122534c7a6e62cf930c7d34f02e84", + "0x7c48c76b2055d4000973fe2c88c53015222d491c", + "0x7c677aa6f77ed5003fdeb277a63c4a138a0c8b52", + "0x7cff8ac2b52e5dccc01f1e1bc06d229f71d50ecf", + "0x7d352f53252b71d15f6f7ad087536e0711904259", + "0x7d96fb0db654dc8b36e5eb43d73f42fc0382a38d", + "0x7dad3a4377664490d643286628cd90ea75dcecfb", + "0x7dddedd801bdb2ae1379aa0ea6310d1626de1b68", + "0x7e0b65a1089646364781d3fccbee426d691b6d6b", + "0x7e55f681fe0d46bddbc224e5eeaa64137b1e7132", + "0x7ee2b6c7491b1ae7cfb179d417f4446dcba1bc41", + "0x7f02eca6c77941c1222f5c2a4678ee377dd7d493", + "0x7fa76563e1e71d0200a0168ede41d8791ca3ee4f", + "0x7fa82fbb125490b4372a9b8eaca5812e81d918db", + "0x7fa9147e30d0d86f6de3b932f0595249f0a450e5", + "0x8030a9f114fcbb10c57d9a6da309f4a17f42118c", + "0x805deaa7a12f1fc04189d435ede1a725eff73488", + "0x80b178c02cee6c95fbb1121e920349bf8c750c84", + "0x80da842d92338e9146d816a0d6bab6a1834e01b5", + "0x80ffbb16433eb02157f77b39fb8f5b4f3c42ef69", + "0x8108801af9e5b5cae9a704e3fc712c31192597a5", + "0x8174c36bd0e941ecf4cfb2159944d693a51650c2", + "0x817ca359a9e67743f49dc619bad22d4bdaa65991", + "0x81ad8bec855c97c7ddc035cbc160d50a97fcc901", + "0x81b81b9297b59454bbb805c9cfdbcd137c2156f1", + "0x8203f494317d65111702bd0522497fe4e8a3c247", + "0x822572dfb2e5fcd385486ca9100d175db4a11f8d", + "0x824b5b747e0b102a47ae0da76a4e3a7bef27d6ab", + "0x827c3b1e5bd37907b65e8687204540ec06bfe95a", + "0x82b9c9ac40b63e23d74a3d151d3d2bbe2727a4a7", + "0x834fca98bd9157e7d3b8af6925414b077d2d3857", + "0x837e4390350d183661b956d16befd933a53665a4", + "0x83d5a34ed33bcf2452b57ca4c975ae7cf134faad", + "0x83d9b998972db0d813b7c3f6a66018b9a8f1f6b4", + "0x853ab795d49fe8fd380155f06d708032f4439584", + "0x85f6941425558357fedd92b60954d376296e37f7", + "0x86a0c14b9f2d8d8078c5b392ad895c6d73a41e00", + "0x86ae0babf68a869fb4076189c2f068ae90d4f810", + "0x86bb94015c6d1af8951a03ed341ef9ea06705c61", + "0x8787f2996f8f919f7c072dea5978bd55e5f56150", + "0x87dbbf3541fc3fda614b3b86c0c42e78b4c8b1cb", + "0x87f33162c75def4b0f30204d6ee806f986dea443", + "0x87f3bab0b0867a2dc4b18c3f018537de67b2abdd", + "0x8802117f21236e228251b4c49571da6462cbe8f6", + "0x88a7cb9a9e73d5aac0a139580e3fe9f2918ebf60", + "0x88c1eec1acc212458f4de2b0254e780c5ab17538", + "0x88d776e193778d5eb3c27c040398849828a68776", + "0x88f374c0440efcf6a19137ab6b94243522af14dc", + "0x89c98da89d83cdd59191f71dfd5e1d783f4f4b71", + "0x89e5780bcfb90d668d1742f1440dc9296c9ca1cc", + "0x8a258b7d90c69c798a2992f8f4957435883db8f4", + "0x8a73f74b3a579d7be6a7e3f8d5eccf2be0516d16", + "0x8aa1b309af5c5096057f96ad7f126a0907e6ebac", + "0x8aa771357a63423061282127fd76b8cc2dd0d041", + "0x8ae213fce18f644de77c35a66c2e3ddf6f5eec91", + "0x8b69b593bf361897b3a5dff8a842d6bc19e0b0de", + "0x8c0dea9b750f8ea91844672e4f43938f205d380b", + "0x8cb0c12085ccbe801529c34a61e71f4792a122a4", + "0x8cd04f29782918accd6d5e2be2e8e737dd3e0eca", + "0x8cfe9648814e3591d7e264d04e093ed4d4eeeed7", + "0x8d15e4f02984129774f870a3afada75974a75bb0", + "0x8d3fe11a83afcda18ff0aed25dc68febcc73e883", + "0x8d4686e96c5eedf871ac58b54ce061ddccdaa1a1", + "0x8d60dcfb03c5dcf4ed331e6f6bde0d905399c507", + "0x8d6df1f585f7872e25add99ae530fa3e7fc3d711", + "0x8dd1a7ec46391201798a40fafce59c4c47aeb611", + "0x8de3b685a2f295927aeac5e06533d41d9d9d4e66", + "0x8e153aa8d770334d2d532122c52476dc43a96616", + "0x8e1ca3262971a6db9439922beb36768a186a5269", + "0x8e3f0e3728a05967539a3e40aefaed02913f11e9", + "0x8e5cb169c68554bdc4965bce5e4f4e17c12a64a1", + "0x8ea24314417d8932297656872cfb51e5bd4bff74", + "0x8ee8da9580901ff0302495182f40aa20f49d17ea", + "0x8f1ff201bfbf1d221eded5f2cd09f79aea681326", + "0x8f31f50a904ba8d4943aa16b12076713e760c414", + "0x8fd50a3488bcded29cff2815d0a3b093a63655d7", + "0x8ff43d2bdbd7fe0bb086a196d3c623661baf529e", + "0x904f5c3872a0987b777c478f82be583a17353c60", + "0x90cfba635a5ffe05c49ebefd6ea0736cb397a744", + "0x919e0a233a003943e7989a22caa11c5644200b3d", + "0x91c10863f581d2cae3d6f6f5be897d6d9d0415db", + "0x91d8e1dd54308fe29786725ec4a9a707c16a9d31", + "0x92ee07c0c04fa4ce801e9cc22bbc4d812f3a3968", + "0x934ab1c77711263c65d3b91c54b3acf5ce8a6fa6", + "0x93c3b06356f7b36cd5cc4bd29a24ffaba96e0c46", + "0x93ccc544f4522dca498628b3a37ef21279c072d8", + "0x93d34b5d356dce6b752506364d0889870e163619", + "0x940830be01dded6c91c111c823df20bd35ecda9a", + "0x945fdf583521e64508c51a0f73267e67ed1ac355", + "0x94a491770db9c9e56d0fdb5bfc32caca8e76f15e", + "0x9547029282aa64870ce12315666680fbcd839dbe", + "0x957004de7daf24eb973e2977f3b12daccf928b45", + "0x9576336e424988dd18d119de744a87ee2f5e4c4b", + "0x9585f3f943a9092bce1ea286bbdb775e12020fb3", + "0x95e62d3e9ce6447c10c4c9203f77e5b5fe487609", + "0x95f85ccd22f428ec4edfa07d045d51416effe68b", + "0x962152704b1f63bf0213dfb58d03ae6f99112ea8", + "0x96af72858296ce97a14fa976898689b3a7c45b1c", + "0x96b9666756824ac16ff628cac5e67dcd015067a7", + "0x96c5979d71c9cb6d521312e1048169942d8ea3eb", + "0x96ffa07ac0e0af2859ae0d6fe43d7f79d8250489", + "0x97315e146cc48b90f5e764d3b8b345d8971eb9ec", + "0x976c150330953844e9336f39c45944586d464642", + "0x977e45b0aab8e36f3a9a3d0084bdb54a3b05cdd6", + "0x977e8c45168579e43dfed5034e59dd8342bf2170", + "0x97cf20f117d9801a4262f04f0481afbbf50ab920", + "0x97d361a30a5ad28dafa1eaebd8c38851932b63c0", + "0x98991701bda3def7d6d83d1e055e856554a005e9", + "0x994a3bdb4445a3c7eec8b4b3cc3d9c8172e6894b", + "0x995c933c58ee5e4e585e199c9703185320a42cec", + "0x996543f87e29379dc9afbdeaa0f5d9fe349753d3", + "0x9a00da21f46def02b9bd2a385b0540f778a8ee93", + "0x9a4ad47abfdf08f646e3c88931ebc9f91b1a501f", + "0x9a8449b15ffffb3f670fe3a6767e1b1bdc764499", + "0x9ae90a4a68091f0926a864ea89897054f6bfa7b2", + "0x9af3fdce076db54b8c44164655b86ae4975539a0", + "0x9af9199474ed0b7138ec542a401b8ad4f4570d1c", + "0x9b0d4b1f1e4a6f42ca8fbc7d5ed4fef9a4fb3a83", + "0x9b138fd7dd8fdde9503b9d416b8e869805f23ac9", + "0x9c606b32b4b2100961ae2fd5f92cc377603ad773", + "0x9cf301816fdceffec7a37ce149329c03e7bc0ac6", + "0x9cf76244235fa32262d7ce096773235df87e3a1d", + "0x9d8bfd19628735a2fb5dbfbd9fbef69b92de4cd3", + "0x9da7d71b0412287efd9c386579702ab4185daa97", + "0x9f0a41b893af9dfca8b1f1a058ce1e0a05800878", + "0x9f4cb141fb5db025af18915848c5b89e26bf9c6d", + "0xa00d795ab4d79b7995641424bbd91ea761b19e45", + "0xa03ae39022a0cf7b32f9b8a2c82da784de47f75e", + "0xa05720747fdc7c90fc898493802c0a3375448f66", + "0xa05a47d2ac059ec101db32cfc277611b06b20e0d", + "0xa0cb643d08a9c13110f449bfdab5db42b0610f47", + "0xa0f20059db6667c14dcfebe52ae74a8400117fb0", + "0xa0f8a29218d035c2f1c58dd5cdc29238d9bda34a", + "0xa1073d52329943a4a9bfe80b3652647546e86981", + "0xa11f90793150d46bd5243fb1aa6bfa676b050dd9", + "0xa16ea06279f500360a9bf44f8d62b7c072900784", + "0xa18b311cc231af38d51ea874dd25f0124250d298", + "0xa2066d19e0c682b3e2381118109aae78475bb7a6", + "0xa207cdf1e1a644403caf3ee18d8a56a250657f06", + "0xa2266ece69a2300d5a1176b3f02b6bbff0742e6f", + "0xa28fb68587752dd0d388940ed8610c27d49646d4", + "0xa2a3e82a3b03c8454b6499dedb6f1c4f61badea3", + "0xa2bb3a542b938c87c6753b5ed3439bdd172e663c", + "0xa2c93dfaa77c02822b51a68c970191e729d189c2", + "0xa2d19efffa625c3b1294c507d6e950bcc09e1028", + "0xa2fd031f7c5d1a272b30a59cad21b62f284a4374", + "0xa31c4a11b0b030f6032c21d92d10fd24bb891cd3", + "0xa334ca1f83c787188907f8c9652782095943a58a", + "0xa3563a6de4bdc1684ad179263819fbcbcbc1be5b", + "0xa3ce09388303d0faaa9fbd01bb27e592f82b07fc", + "0xa3f9e5324a6b6dd34d4e5ce88dce0b3be8281ade", + "0xa40169dcf8431867fdb0229d6ca1b090517782bc", + "0xa470a2ad52e99fe312e20beddc4b74d6d9ef85ce", + "0xa485465759fa62e9322c00bfa975bfa0f76927ce", + "0xa4a8974cde0af3f549e47b51ba23ddac05dff9d4", + "0xa4eede96787f188bb8c02fadc8998c758db25823", + "0xa537932fc93eed393b58839c23316f889dca6459", + "0xa53e13f66b9092c3a61dcefb6e3a08150b525d08", + "0xa55dd48247b00bb23c9ecc4d8db004ba4aa5b3b8", + "0xa56e0126639d657d7c745e555541a794a032c189", + "0xa5d2694921b91c7a8fe82499cbd601d6fa5a6459", + "0xa5d70e77cfa8328d8afa2789324b132765401759", + "0xa5df63b02bf2122af3b35a60aea75fbb60b3a1a3", + "0xa5e8a3af0501f0b1a59876ca989f38f82a802af0", + "0xa667f2f30890a1d7737ed5671abcbab38e72e3cb", + "0xa787faf8650c9ab971a667c385c84f4a804a9b69", + "0xa788c3b3ff00ff7ddea635726d6fc8b3e3e2dc10", + "0xa8143eccfe8d935a8fbdabcb67bdac69044377cc", + "0xa89a1e478d07d2471bdc2ce83f886addc210439f", + "0xa8d1ae9994233f33d01a7608438988b6aaf2183e", + "0xa96f4bfb95a33e64dc11500b5fef141484d6ffab", + "0xa99b5d749bc5bd83526afeae543ce23b5f187fbf", + "0xa9a369d5b6b90b982c60ab4ca1be3d9c37504610", + "0xaa1e83d55071954b4a7c74d6afea53869bdb9aa9", + "0xaa3813cbb0e0a0ea7391ddea93e26b04ff5c6768", + "0xaa99cb692a12e0f5335b7fa88204b6de3c4b3165", + "0xaab379eb178a868c48ccbef7f019debbe8fbe030", + "0xaac85f0ef8edd3d7a574d1dd88c13bdcfe0a1a03", + "0xaac8e646fd42f13908cfbf726e6ce8765de712a7", + "0xaaccdb3f53d2fc12b10b99d2dde400226da2fa16", + "0xab9c7062ee11a70e17449b1295e5f2c7fbdb6555", + "0xaba259d872607abaa9fa49b7fee5281331bc2f17", + "0xabc8f03f9dd19139bd940d58234cf766ece11f43", + "0xabcff34badca3a78a881d181018c0a0443a4cbc9", + "0xabd71a8d461480f76a6d7079c087ebc9ac31ac15", + "0xac42d12e722b907f93d40270ab6d615ec6db2461", + "0xac8307d535adedacfb54849017ce010a6f643854", + "0xacdefccf0cc2fd79e25106297fcca8d188630ff0", + "0xad475d10cfb6b92190cefde3b4b77b0db8381d6a", + "0xad4cbc1dca0e0100a55fbccb5a60d36ea7381f4e", + "0xadad96aec15d94ac56310b4fb046453dbedf1155", + "0xadeb5382b5922f491ea1459ecc14efd8ab3fa385", + "0xae2585a4fa59cbba9c338a83fa5f3a6c2bd9342b", + "0xae2ff1ac29c375ad01f7c9a3c25773fea36c5c10", + "0xae436363f32a4fe7352ad25f4a91c792868b9030", + "0xae76d75f0bba8d96c6422edad8042d338a029ddb", + "0xae829ac7feabbc7327f5662e3120b67c45d8fb0c", + "0xaf29fead260be1fdb20ec6200e73fa89f9a2849a", + "0xaf373af84a255b307a8a0e480c30deef3c7238bf", + "0xaf89af4421b2c1e912ffb6a3a6e3b3343ce2ecbb", + "0xaf9b499368eef4e5560d851723e58d528cabb096", + "0xafa97544bf1778991008a68c2ec13c2a212febdf", + "0xafe8d6def3e3aaed8d3fb7dadb75269861b45c58", + "0xaff269a5257dcbda41a1e21793ea7034a0d20239", + "0xb02bdbb490325c78aaac403c6250e9a970f6cf8f", + "0xb0c89a9461353f991e0589c74c8b144149789978", + "0xb1aa8f09f2e50b87000fa0114d9f2d549ef1f70b", + "0xb1ac859a95577d74bcb4cb7ad049585c60278c5b", + "0xb1ecdc7d2d97abafb94b3d1f4e44035f1e0183b4", + "0xb229da258d483a1a73f28692e89f15085fc2abb3", + "0xb245472d82f1bf1e968f71b0af9f7d6732181478", + "0xb272afd91ac2291f6ba6f5afa0c594524ef9cda2", + "0xb34ecc95a77128c166531374cca0fdcef1c98c60", + "0xb36af2c84d28956bbb00011684a9e24ee1c3c06a", + "0xb3b526cee2cf40fdc822a630c2d896322cc2ed71", + "0xb3c987bf21a3e2dac8b7b1195ac1939ea39de09c", + "0xb409ece789d343ef3e8e4b41a5dfec75cfebf071", + "0xb424acb0c9e2686692a6a8b0cfe8e4ab8fed3c96", + "0xb4252367619c3f4b508cda8a4c9e89dd5908ad51", + "0xb42fa2396c3c429bc8868ab8b798a979fa93c9af", + "0xb446344513fb424492aad2c4362406d8bdb473d6", + "0xb52d59b6d90825dbc8619f31abc275baca5d7965", + "0xb628de450ec7eb6b3d09cde1cf7189cf9aae7d7f", + "0xb661dfd8685ac86ff8717075936daa85a7f6319c", + "0xb6cee594d8b7871851c37968be77ddd509251461", + "0xb76fc8f3039ac17417b9a36d1a5a00be81e036b0", + "0xb7d56d324f5a5701366cc1ce8dcd92b2b71e4912", + "0xb7f6446b5b34d697a48d34611c32af1d203cdb67", + "0xb8106490fb131bb246125ace9eaeaeb820b5c6ec", + "0xb81295f3008dd2abdc9c33b723f30830eaafe2ec", + "0xb8da3abf39506ac57bdcb9c271a2a6affafa3f1e", + "0xb8f94bbe97988c36941e9ac0c69fa5c67f93e35b", + "0xb92f0a689c0068e8794fb0c9604967b4e67f9ad0", + "0xb92f0e24f02af9eddae6f6cbbc2ec5192cdc42fc", + "0xb94a36f087aada4137abc2d9a5dcb27775a18b54", + "0xb958e7b413f6ad0c2d3d2d06fbc8dd18313a10f7", + "0xb9a23133167d3465dbbd82e2052a8fefa8456a5b", + "0xb9a26d1b93546df223c6eb66ffa994190fac65bf", + "0xb9ca0d4199aa6cef7f1da1e5ad23ca6c58b34cab", + "0xb9e35722f46c38bb2dff6ce73fcd4a3569773fa2", + "0xba152d0d66fa142a6a88b49a159d23bd2a06a10b", + "0xba2c762dcca1568252786a86a77cdf84698a074f", + "0xba3ab995a229d7e474ac4890ea41b29a36cd2cf0", + "0xba4a7dac5de75a3e0cc1a7c02d0f0502f4399049", + "0xba725112ea46050499eb03407466068532d4b493", + "0xba7514f3503add9fc50f8b5cc6aec4e11f040b52", + "0xbae2260300c4ee6ee9cdf200e6911e41d18abecb", + "0xbb0ecb5d87b68060ba5b872b5b7212638d2a79a0", + "0xbb105427110983d52b41ab7d5112367a1efef212", + "0xbb22e0237bee360431590be63c16aaba97f104ed", + "0xbb231bdda329033324924c74cd7c3a18edfe7a82", + "0xbb541b84a3e5ff883f71f37caeb767b7695340ca", + "0xbca90d6f62544d79db3ce5705a8be0b395584ffa", + "0xbd2320168733ac45c4ab6197536d8f3fcef5b38a", + "0xbda5ed78b5e3bc88c2c69bc8e6a36f68cb701213", + "0xbdef4e123b36e23cfb859dc7ae4985f03b0fd606", + "0xbf0f2cf69bde677c7a312ce5053a1cb0d2cfe82e", + "0xbf19e4516d6615192c1c9b91c7d2c9c3ddb77602", + "0xbf21a8825354de9a3af98116ed8dfe0786e251c3", + "0xbf2c78f49a0cee6f56853801834d215de493d87e", + "0xbf678cb0898856da855796c700107d75efe5f534", + "0xbf9ac7f5a1ee69d15986d6a9331f2fa40ba591d0", + "0xc0e66d85ac71a3a1b8a1ac6d8ce091006393dece", + "0xc115eedcd33da07a22eb3895a61d076e54a1aa47", + "0xc15c9cf30c8427450830c6bedeca35a4509626e9", + "0xc1862b87e011d4fdc8630320266d98cc6040a7f6", + "0xc1cb562562bf10fb95ed761bf09ca1cfaaf54c9c", + "0xc1f06efe4f38dd9022ed61bfff75a472bec7f8bc", + "0xc20e04dc8ae5e7a62ea9e7ad594788e554b88ba7", + "0xc23bd86b36a8b3c5fda91daa1c58f14e09158436", + "0xc2409aa02e7df1a419c6f0f843d9b912a7277050", + "0xc25f85d3b3e75924345666389d21910c680745a2", + "0xc27f9037acc553d06c6ee7194b21855f98462279", + "0xc2a49031e1db809766eff8aea625c95963590872", + "0xc33538553c5d9b693e84076873a1bbb915f235ac", + "0xc36d134690fc81e8024e7c3545fea29be148815f", + "0xc383c833888f9e90af68c6c5030a31782d5cfc31", + "0xc3b046e306e53157f7306e868bf58e7bbf8ac02c", + "0xc3b9b78b5992e8627b504069c5550fc809ad13cc", + "0xc3cacffa663544c6452ec43f9d8a5e93d0f308ad", + "0xc43ad9dc0decc1f745d9f28df64146d3fc27e4e2", + "0xc46ea7fdb845f27cd08a81a77d4ef5894dc511d3", + "0xc4adc80b529cda87d3a9fb0427147bc58c437cf2", + "0xc4addb503b1320d6cc65fc28224e87ccb0551fa9", + "0xc4d6cdfb3e5dcc91d49b0e4575631ff5a2090fd8", + "0xc4e6e50fca36c205c4435e1d0defa83fb708fa43", + "0xc510323853027d47b3125167ec31793c35455222", + "0xc52768a112a9a1ad5a41f73a1a05fbcfe95704b7", + "0xc54af9e913cc2617c045f1d629bbdc96c7aca9ea", + "0xc5d05946d39ffe986f1d4b7f308a576688845c0f", + "0xc5d27a29b72ffc2bde10ebf7e1f8fbed4b7164b7", + "0xc5d2ec86a80a4f3a62b7882858fbfe106b891de0", + "0xc689f7afec8f9adc8a9eabbec0366592e4597e5b", + "0xc71137a7fe2225bd5886d66018c573572ab3b111", + "0xc7151ef2c7ad62bb2f1fed7780e98a77eb58a0e5", + "0xc728ef07c0cb18a425137ab2c75dc2f5dada0261", + "0xc75590337846e23adb17e4d3b51e6519d190ce60", + "0xc76f8dd453ba68214cb2f199421b7c45817d8f47", + "0xc78e0b6fc399365fdbf48f451c71c83f411678dc", + "0xc7ad546d2487b5fa828edc6f5f8a218b4aa29fb6", + "0xc7e635b81c02f8680923e2cdcd085f943dc01244", + "0xc807a1be25f22a7a0d6d7c3c323d351bac0a3d8b", + "0xc80a1980e7787975b48b3e2487ee0f5af3d82cfe", + "0xc846fb7400c15b36323631aeaa9974155a64454b", + "0xc929e2a694f6bdae13ca8fbee6b8bec004e25eee", + "0xc944e1859488c233529890b9f6d4151cceb46b10", + "0xc95899b17337034bf170e9b19c596a9e57dcae97", + "0xc9b63faa54e9ee8920a428518f94855abe59f5c0", + "0xc9e15ed7a4f1db101f8848ec90dbabd099de189d", + "0xca28dd602b46c1338af3889c75feba883687e937", + "0xca8f68f978c6b44a6b36f3269810b3a068a9ca1e", + "0xca9b843498a8068da4222fad572630d53c7c28a6", + "0xcb05f700f619ec3ad872fdb928ff16a51471da68", + "0xcbc1ded4b63a42b9575ab51899b246084f88679d", + "0xcbefb26528102f9ca92839066e593244a90a8800", + "0xcc40a0f98048c5b404302e3af7fe5a392aa6fc1b", + "0xcc5340f3b71f8a9c2b917fedfa5628ce8028c065", + "0xcc724d58790ed709f95f0358a63ad65a7f4ff58d", + "0xcc9ffdf9b503cf3df655e470089b701796293849", + "0xcd1b8b6d7dcea49cc4e7792ee6763cc297b43a9b", + "0xcd6c9d31c9cc5776d6c95ade4b6a8ad9e117db91", + "0xcd84b41bffb8ae55067c2faebb6e7fce35945ba8", + "0xcd97433568203860240ad8448cf69cfae6889507", + "0xcde557e174ac95aee56d05d8daa64b54ba5bcd49", + "0xce4bdacee6a49ae0476adf49f88f301c961ff1c8", + "0xce8079bf9f2141cd3ee1d30bfd6ae6a1b8337309", + "0xcf271abc942a676e833eaea4ebeaf79b8028bd18", + "0xd0a6aa4e71b5965c0e9aec06963a51d44b4b4ffb", + "0xd0c30c0542b99b443747846daac952617a03a3ea", + "0xd0f3aa5f6d298e9e3a1ca2f92b3f75598d12aa31", + "0xd1395d38ceb3d61274afb040f182b56ec8102948", + "0xd14a4d8184f210f1c024f22f99118fa4dca9346c", + "0xd18218e764b6f426bb9565ae148e5105e3c9f7ee", + "0xd1a868a178f2aac858cc5e0a72478a4ffe7e361f", + "0xd239b4a49d2e3c3a5425854ecb1f0b6a63298708", + "0xd24abf544360f4ffebd1b14181ea5eadc07b04f8", + "0xd24c06e94e60dc9c3c71c7b7641950da1e881dd2", + "0xd2821726d9753a3f2dda890496874a3bc5335563", + "0xd3efbf2176868a9bf1bd29355ab4b3c18d376a67", + "0xd3fd81cddb8f09e8917e53efbb2f54dc83b6632f", + "0xd4277caf1bedab207f0fe53fc6c22beefe7b8ed7", + "0xd49e94e63a8151e92700d70529f7e42f84ecbcff", + "0xd5485d3f7a36c8ca158218c2b2ede24fb61d31be", + "0xd5f996e12c4ae3190162e6964ad0501273dff4fa", + "0xd66fcd8ce46c37f49165d04e1ea438dceea81b36", + "0xd7615a94cdb393effc45d38a8129f8b84ac64d4a", + "0xd78c9922d6cce194f649b303609146b2fa74d7f0", + "0xd7c189538ad6af62e7244b979f10fd75d0250572", + "0xd821743f989d294769e9222b65de076253f4bd1e", + "0xd885c943090b0a7ea54ad12b5a0d390bda0f3275", + "0xd88720cbf01aabfedab777df3d1aa2b63867084b", + "0xd8a83a1d2b9188ce3cd6b002112baa12250db237", + "0xd8fab8e11da1c0aa35be17d9644fec30a57815df", + "0xd914e54ea30c857a7d55d13c18c120c8cd1e2a3c", + "0xd922bf300b6ac1fce65212b98f64757b6b22b57d", + "0xd93c36a5d490dbb64b3d2ce29996bd7f08858f2b", + "0xd945027ebb85f821f7c8cb101b4ea964c93e83b4", + "0xd9762131fa7fa3699ca0e63cb7bb81c7cb8916fc", + "0xd9a38d473898bc48b86e51eb9a08bc0e403bb5eb", + "0xda880c85cca656e65ce1ea1ee09197f589e26a4b", + "0xdafcb8384d02fc84d61d3885f042b136e3f9f58b", + "0xdb29da3d285f85c8a93d2d5d82442c79c11dbe5d", + "0xdb5cb18dce7c904d117ae089d7dc8476d9a69ca6", + "0xdbab58b6359f02c4c212161c753bf799b9863e54", + "0xdbb23dca313db671def9566432017cb40406e7bf", + "0xdbd3774cc4ffb31bb54792630c0419e9f69ad376", + "0xdc8e70d614eb13fdbe8f10d6a7c6a14e52ced703", + "0xdc9f177e3fa5631f099972ad90894809bb171c99", + "0xdcbcc6026df093ad76e17743c5e64434312b8caf", + "0xdcdc425e504839d74ce7731995e0a34b9dbc95f1", + "0xdd0e5bb78eeaece9a38a0bdaa9431581705587c5", + "0xdd3b89def19a9144088d38bf6532f2b018a478ea", + "0xddabffe326708d80cc38f5ddab8b12287a22bbd6", + "0xddee89fff5196ade6fdffd9cc7cf50fe585f7ee9", + "0xde2f849d8680a6b4067c9eed07ae63e89da948c0", + "0xde301c3c4edd58ca628f3d5fcdbd0d0057df86f2", + "0xde3469f6c755c651eb2d72fb35f5269ab3ca11f8", + "0xde97c0aad00cc1e07d4b3bf9d5296f8baa3d021e", + "0xdea4afe89c0c8fd5c2f79553e6ae5148c4c9a4c6", + "0xdfc1aad2a496a35bfac234de4f4336dc8577faf6", + "0xdfda72f608ced50fd613a77b1ac0920b2d8a36b8", + "0xe01cc4103b035c33adbe82b0acb927d86dba77de", + "0xe070713014c58e3f83005bff7f8b0eb8bd153b1c", + "0xe0de77866a13d04a8423fa4fa134a8796b9ebe85", + "0xe0ef45040088a6d75d40aaa81332a41d09f552f2", + "0xe15b00a63a5e6939432bf9de26e0fc5f61a3ecce", + "0xe163245d23c1f56ddf1d14686d80dad40788d97f", + "0xe16a8c6b172a10a1e4922bbf2c7e1783880ec254", + "0xe17ae336710be802905ec2cb1e3d3be24ff25b76", + "0xe24ff7364365eadfb6e438be41acc70b64ad9083", + "0xe2537a94ed874aa80430ab87530e76a11b4ef0c8", + "0xe2aadb09e9c0ed0e669d87e762c92d76ddeed212", + "0xe2d3fcdcc6aa4507d43315db3bb46848614f9b72", + "0xe31cf5290ab3706ececf99c86ce9bc5ec333e6bd", + "0xe34c5434f56fc26f5aabe8450797871e241b7582", + "0xe3a2696f430cb5a1a0f4569f0d11c1707c717335", + "0xe443dc35c3cd3663159b34b728922214b1470264", + "0xe4b2174a298c05b4e8f960627cd4da33de96298e", + "0xe4c65b924c09f4f0a9f644acf528d4f4bb5e7065", + "0xe561dc1ed66f09b8f2f53c7125db14b689c9af6a", + "0xe5b64ca28e88968a4061d396fa853a784df25e17", + "0xe5d19b068f5802842adcd4d92e7061f61b781ce1", + "0xe66ddc19e897282311e5a8a18c7e48cc6facd5c5", + "0xe674d099fe170715706fba53902a9c0bdac987f6", + "0xe67cf928d77e08c82f3f2b2fb6811af8db39b692", + "0xe698af793d1e9d2693e82feddbc41fd696ec52ac", + "0xe69de9998a53e5446561252fcb0daccd08f5257b", + "0xe6b43cadf806b1f5544f240b863d91fa0fdb25a8", + "0xe71402a55449736dd2f016287245924ee214a6f0", + "0xe732e596e53aab90e841aade5eeb6af26d665b08", + "0xe75f5b638dc9bc66d9b450cc137ae512a7555a05", + "0xe7652139553fe5e97945f9501ee37670b631b4b5", + "0xe8145a86aecea43c4b04a1bc18bd046075f20bf2", + "0xe89232d4e2f8c67186cbdd73df094f67a44a157e", + "0xe9ac67aa08dbc1af256edceb67efbb47ebd8413d", + "0xe9c54e4962b9545da87aeccff5eca1a996a8b92d", + "0xea2882689969ea6166d38fa4d5bad5302d73b185", + "0xea2eadc24b3e41ad41799404e6b0e9376341d0ba", + "0xeac64c5d9437a9ec535dc9e1d04506852b520914", + "0xeb589433536d65dc80d68615e013d237a367b7aa", + "0xeb6ae1e6d4b9491a59d0a29fe1f4098cdde9a5f3", + "0xeb6be60be4309a56f48f91f682156feb881b0957", + "0xebbb49deab19658a4736380a2d8aa8d1a83df895", + "0xebcb0c68602c4c290fecdfedd8f8e7bd2061de0a", + "0xec3349d635212a34530b4a2dae33b81253eeef6a", + "0xec5e63199a7b8b79cf1fe2ba0f57bbaf8713b95f", + "0xec81d707f218e72581bbb64493cd363d17fd2529", + "0xec8bea91910d3b294928c8378b4abc45ebe641f2", + "0xec9819204e1e25f8719f90720aaca9d43bd03020", + "0xed026c2775b2c40d524d890d0b5efd09c3b46576", + "0xed32c9458eadaf94f7c023d511079dbd4399d135", + "0xed4525b1abaf7a12d4dd14b7668bb182ec9c6efd", + "0xed735664c69a1eefa4b612934d9fd2b192ae0ce6", + "0xed9dc80c3b0f8aa83f642d7f0cfda740b0d9751d", + "0xedeb02cc835e4baa6fe25eab888f763ac3d7101d", + "0xedf6ef3854a90f42f6d8c19cfcdc8361dca68d67", + "0xee067128359e20c49816f1f3c270b12b6acf0884", + "0xeeaee41d907da9ec3fa47388895f28142011d855", + "0xeef10a3effde3159fde37816a0d3b415ff2d2fd9", + "0xeefdb96d06c5f4616ebef3bf2cf33451e58450a2", + "0xeffd6e651bb2e42666c2fbdc4ef98662e51a3fa9", + "0xf00028b11afbc48033b3976f9d28889e498d7c0b", + "0xf0c7ab1cfde2de6b7d6dbf550ee32278406d7b4c", + "0xf0e25528e8d6f5b213345797ac5e1137f2a64bba", + "0xf11c67c9ec063b00f7965c97c41dbc5728a7bdcb", + "0xf127183bd96d6273805aaf09f1e4dda7e1ec3f73", + "0xf154074fb8becc75dad1c7f8f3e0dbff53650963", + "0xf1bb1de49767ad86c68cf303533716622666e90f", + "0xf1e664ea77c78f8fc86399e854908ef519092f95", + "0xf264937ab0a30444745a0d6f3963881f0fd85b4a", + "0xf2a73b45ec03e11292808f1565a5e0bfe7fc6d62", + "0xf3225e6f03ad30f03d3b9d865eb4ac29140391c4", + "0xf380b8e273e362763c4672a9cad5adae7d4b82b2", + "0xf3821186d7760c29c21c8ea1985178a7ed4c2cad", + "0xf402335076cbd5c58d5dfa61052ec4fd3cebc1bd", + "0xf472a8cec24591edb6778a06a438dc55d7240007", + "0xf552112de86982a07ff794a5fa6340e4d009a95e", + "0xf59517d7f790239e1a214e1158577a5c512e4435", + "0xf5bdb279506be6224f8f55f2c31af8acfda0ab90", + "0xf6edd40d35c6ca8d059dd85e6982a5a40e737c68", + "0xf741a47a5011e19b04cea54ba69ac3855a946e32", + "0xf76cf740de2d615e77040fdc5b6204a41bf1270d", + "0xf7926011ecf5c87db553a35bb8c0e9d31bc906f0", + "0xf857f28f81a80fbfa8aed674c3c1f52ffe5c981f", + "0xf899e06cdc8b30b40abdcb1fdcc05637b02d91c1", + "0xf8d978b6f10d70b31ac7a336c70099d23c019114", + "0xf9514e4c3f4e55d0d635c36ad35070a9a1ffdc56", + "0xf9654d22a1f2cca24377d117dd8719be8a84c226", + "0xf9e454666c14dc3e75a6d52fb39f16ec4a92d4d9", + "0xfa287476bd793039bbe589829ea089c17f151a62", + "0xfa40eac16bb8de30481237fe3cd0b46feda4971a", + "0xfa441678de2ee764d40897ebda60e18f5e8292b6", + "0xfa51502eb318223ac6b56f0988587793b409cbb8", + "0xfa629d50e8563efd401242b078b4c1fc03c5491e", + "0xfa686152b43abe629eb6be35309dddc6374c6b4f", + "0xfaa7243b14c68c1c7594107d4c9a7e31d6e98b34", + "0xfb09f7ebbeae506a38c0b98893fe4433afdd5340", + "0xfb141c08df37c048be1cfa1d5cca5be76f2f9e74", + "0xfba18d85da0a37f7d19b8f87da6ef3f7a3feb72a", + "0xfbcbbdb9dfece7a829ff7c89afd28defc440de98", + "0xfbe619e87ca4889540137e0265d69dd2ad886c03", + "0xfc1b9cb0c3498c5bc456a4cd379da66dc288002f", + "0xfc803edb758349804b56222c5e97786249e1a6ea", + "0xfcbde8f08ec82ff3fa1d3f5a525f8f61f9c8b6fb", + "0xfe9c793cbb5cd21201dceb05abd8690fd6cf869a", + "0xfeb09165a5ba3427913ab2b4800b79e8f69f938e", + "0xff19b04bc92e6af547f906c90d2ddddbf54b0011", + "0xff22b75e221124164453c5f558bc17b253dcb056", + "0xff4cfafd280902797fcf1c316604b0ff267ccfa8", + "0xff4f7a258feb6a8fea47f361cccadbd875386f41", + "0xff536587affb209fb361eecf5d7b0046134381f6", + "0xff560b656c0a59e9a6d9fd6d01cf2a14daddcb96", + "0xff91076e45fc27904ad5e89892d705f4910f1a0d", + "0xffa2536a631d9a7107183fc157014bfa08b306cd" +] \ No newline at end of file From 35d24e275af0e1c9e56fa7af7d3ec89ecc2ebdd1 Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Sat, 7 Sep 2024 18:08:05 +0530 Subject: [PATCH 55/72] update rr logic --- index.ts | 2 +- lit.ts | 14 ++++++++++++++ utils/thirdweb/roundRobin.ts | 8 ++++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/index.ts b/index.ts index 4bf64b3..44c9535 100644 --- a/index.ts +++ b/index.ts @@ -340,6 +340,6 @@ if (ENABLE_HTTPS) { server.listen(port, async () => { await rr.init(); - console.log(`🚀 2: Server ready at ${host}:${port} 🌶️ NETWORK: ${process.env.NETWORK} | RPC: ${process.env.LIT_TXSENDER_RPC_URL} |`); + console.log(`🚀 2: Server ready at ${host}:${port} 🌶️ NETWORK: ${process.env.NETWORK} | RPC: ${process.env.LIT_TXSENDER_RPC_URL} | ENV: ${config.env}`); }); } diff --git a/lit.ts b/lit.ts index 38b3627..26ca605 100644 --- a/lit.ts +++ b/lit.ts @@ -442,6 +442,20 @@ export async function mintPKPV2({ console.log("adjustedGasLimit:", gasLimit); } catch (e) { console.error("❗️ Error while estimating gas, using default"); + const err = new Error("Error while estimating gas, using default"); + Sentry.captureException(err, { + contexts: { + request_body: { + keyType, + permittedAuthMethodTypes, + permittedAuthMethodIds, + permittedAuthMethodPubkeys, + permittedAuthMethodScopes, + addPkpEthAddressAsPermittedAddress, + sendPkpToItself, + }, + } + }); gasLimit = ethers.utils.hexlify(5000000); } if (versionStrategy === VersionStrategy.DEFAULT) { diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index 038e2b2..141ce84 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -9,7 +9,7 @@ export class RoundRobin { constructor(addresses: string[], environment: string) { this.addresses = addresses; - this.index = environment === "production" ? 1 : 501; + this.index = environment === "production" ? 0 : 500; this.mutex = new Mutex(); this.environment = environment; } @@ -26,12 +26,12 @@ export class RoundRobin { async next() { const release = await this.mutex.acquire(); try { - const address = this.addresses[this.index % this.addresses.length]; // Using modulo to wrap around addresses array + const address = this.addresses[this.index]; // Using modulo to wrap around addresses array // Adjust index bounds based on environment if (this.environment === "production") { - this.index = this.index < 500 ? this.index + 1 : 1; + this.index = this.index < 499 ? this.index + 1 : 0; } else if (this.environment === "staging") { - this.index = this.index < 1000 ? this.index + 1 : 501; + this.index = this.index < 999 ? this.index + 1 : 500; } console.log(`🛑🛑 ${this.environment} index`, this.index); await redisClient.set(`${this.environment}_rr_pointer`, this.index.toString()); From a99b944df49deb4541fa632c135e78f8193e4f07 Mon Sep 17 00:00:00 2001 From: Steven Tran Date: Sun, 8 Sep 2024 16:45:40 +0700 Subject: [PATCH 56/72] deploy dev --- .github/workflows/deploy-dev.yaml | 48 +++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/deploy-dev.yaml diff --git a/.github/workflows/deploy-dev.yaml b/.github/workflows/deploy-dev.yaml new file mode 100644 index 0000000..59534b5 --- /dev/null +++ b/.github/workflows/deploy-dev.yaml @@ -0,0 +1,48 @@ +name: Docker Build + +on: + push: + branches: + - feature/lit-3479-relayerthirdweb-proxy-requests-to-thirdweb-engine + +jobs: + build: + runs-on: ubuntu-latest + + steps: + # Checkout the code from the repository + - name: Checkout code + uses: actions/checkout@v3 + + # Set up Docker (if it's not already set up) + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + # Set up AWS credentials + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_DEV }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_DEV }} + aws-region: ${{ secrets.AWS_REGION_DEV }} + + # Install necessary dependencies if needed (like gcc, make, etc.) + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y build-essential + + - name: Authenticate with npm + run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc + + - name: Authenticate with sentry + run: echo "[auth]\ntoken=${{ secrets.SENTRY_TOKEN }}" > .sentryclirc + + - name: Build Docker Image + run: make build + + - name: Push Docker Image + run: make release + + - name: Deploy K8S + run: | + aws eks update-kubeconfig --region ap-south-1 --name tf-tria-dev + make deploy-k8s-dev From 5b9109347e39418f42c1f40e584c87f092dc4f9e Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Tue, 10 Sep 2024 02:07:59 +0530 Subject: [PATCH 57/72] udpate rr --- lib/thirdweb/ThirdWebLib.ts | 12 ++++++++++++ utils/thirdweb/constants.ts | 2 +- utils/thirdweb/roundRobin.ts | 4 +++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index 3f37771..ef6a881 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -331,6 +331,18 @@ export namespace ThirdWebLib { }; }) { try { + if(!LIT_CHAIN_ID || !contractAddress) { + const err = new Error("LIT_CHAIN_ID or contractAddress is undefined"); + Sentry.captureException(err, { + contexts: { + request_body: { + LIT_CHAIN_ID, + contractAddress + }, + } + }); + throw err; + } const res = await ThirdWebLib.Fetch.post( `/contract/${LIT_CHAIN_ID}/${contractAddress}/write?chain`, { diff --git a/utils/thirdweb/constants.ts b/utils/thirdweb/constants.ts index a42711f..6f068c6 100644 --- a/utils/thirdweb/constants.ts +++ b/utils/thirdweb/constants.ts @@ -1,3 +1,4 @@ +// 999 wallets export const backendWallets = [ "0x0012f2df354a8676a68e5f4587bfa80b67948a7a", "0x004d690b928a8f44f059fbbd30f74e10f1427d39", @@ -765,7 +766,6 @@ export const backendWallets = [ "0xbf19e4516d6615192c1c9b91c7d2c9c3ddb77602", "0xbf21a8825354de9a3af98116ed8dfe0786e251c3", "0xbf2c78f49a0cee6f56853801834d215de493d87e", - "0xbf678cb0898856da855796c700107d75efe5f534", "0xbf9ac7f5a1ee69d15986d6a9331f2fa40ba591d0", "0xc0e66d85ac71a3a1b8a1ac6d8ce091006393dece", "0xc115eedcd33da07a22eb3895a61d076e54a1aa47", diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index 141ce84..82a9623 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -29,9 +29,11 @@ export class RoundRobin { const address = this.addresses[this.index]; // Using modulo to wrap around addresses array // Adjust index bounds based on environment if (this.environment === "production") { + // 500 wallets for production index 0 to 499 this.index = this.index < 499 ? this.index + 1 : 0; } else if (this.environment === "staging") { - this.index = this.index < 999 ? this.index + 1 : 500; + // 499 wallets for staging/loadtesting index 500 to 998 + this.index = this.index < 998 ? this.index + 1 : 500; } console.log(`🛑🛑 ${this.environment} index`, this.index); await redisClient.set(`${this.environment}_rr_pointer`, this.index.toString()); From cf717a43e85f17bdc0baf3cd83d8d0f1f166a3bb Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Thu, 12 Sep 2024 16:53:33 +0530 Subject: [PATCH 58/72] udpate gaslimit --- lib/thirdweb/ThirdWebLib.ts | 24 ++++++++++++++---------- lit.ts | 24 ++++++++++++------------ 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index ef6a881..6e897b0 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -21,7 +21,7 @@ export namespace ThirdWebLib { * @returns A Promise that resolves to the fetched data. */ export async function get(path: string) { - // const fetch = (await import('node-fetch')).default; + // const fetch = (await import('node-fetch')).default; const res: any = await ( await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { headers: AUTH_HEADERS, @@ -45,7 +45,7 @@ export namespace ThirdWebLib { */ export async function post(path: string, body: any, extraHeaders = {}) { // const fetch = (await import('node-fetch')).default; - console.log("THIRDWEB POST", {path: path, txBody: JSON.stringify(body)}); + //console.log("THIRDWEB POST", {path: path, txBody: JSON.stringify(body)}); const res = await ( await fetch(`${THIRDWEB_ENGINE_URL}${path}`, { method: "POST", @@ -166,11 +166,11 @@ export namespace ThirdWebLib { amount: string; }): Promise<{ queueId: string }> { try { - console.log({ - funder, - fundee, - amount, - }); + // console.log({ + // funder, + // fundee, + // amount, + // }); const res:any = await ThirdWebLib.Fetch.post( `/backend-wallet/${LIT_CHAIN_ID}/send-transaction`, { @@ -182,7 +182,7 @@ export namespace ThirdWebLib { "x-backend-wallet-address": funder, }, ); - console.log("res",res); + //console.log("res",res); return { queueId: res.result.queueId, }; @@ -219,9 +219,12 @@ export namespace ThirdWebLib { }); const balances = await Promise.all(balancePromises); - //console.log("balances", balances); + console.log("balances", balances[0]); // -- get all funding promises const fundPromises = balances.map((balance, i) => { + if(balance.displayValue === 'undefined') { + console.log("balance",balance) + } const currentBalance = ethers.utils.parseEther(balance.displayValue); //console.log(currentBalance.toString()); //console.log(ethers.utils.parseEther(minimumBalance).toString()); @@ -323,7 +326,7 @@ export namespace ThirdWebLib { args: any[]; txOverrides?:{ value?: number, - gasLimit?: string | BigNumber + gasLimit?: number | BigNumber } backendWalletAddress: string; options?: { @@ -343,6 +346,7 @@ export namespace ThirdWebLib { }); throw err; } + console.log("thirdweb gas", txOverrides?.gasLimit); const res = await ThirdWebLib.Fetch.post( `/contract/${LIT_CHAIN_ID}/${contractAddress}/write?chain`, { diff --git a/lit.ts b/lit.ts index 26ca605..7bc28ae 100644 --- a/lit.ts +++ b/lit.ts @@ -428,17 +428,17 @@ export async function mintPKPV2({ // on our new arb l3, the stylus gas estimation can be too low when interacting with stylus contracts. manually estimate gas and add 5%. let gasLimit; try { - gasLimit = await pkpNft.provider.estimateGas(mintTxData); - // since the gas limit is a BigNumber we have to use integer math and multiply by 200 then divide by 100 instead of just multiplying by 1.05 - gasLimit = gasLimit - .mul( - ethers.BigNumber.from( - parseInt(process.env["GAS_LIMIT_INCREASE_PERCENTAGE"]!) || - 200, - ), - ) - .div(ethers.BigNumber.from(100)); - + // gasLimit = await pkpNft.provider.estimateGas(mintTxData); + // // since the gas limit is a BigNumber we have to use integer math and multiply by 200 then divide by 100 instead of just multiplying by 1.05 + // gasLimit = gasLimit + // .mul( + // ethers.BigNumber.from( + // parseInt(process.env["GAS_LIMIT_INCREASE_PERCENTAGE"]!) || + // 200, + // ), + // ) + // .div(ethers.BigNumber.from(100)); + gasLimit = ethers.utils.hexlify(5000000); console.log("adjustedGasLimit:", gasLimit); } catch (e) { console.error("❗️ Error while estimating gas, using default"); @@ -520,7 +520,7 @@ export async function mintPKPV2({ ], txOverrides: { value: mintCost.toString(), - gasLimit: gasLimit + gasLimit: 5000000 }, // this we have to dynamic using round robin backendWalletAddress: address, From ef74d4e8dedafb036bbae1843842b6b2d091378d Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Fri, 13 Sep 2024 03:41:31 +0530 Subject: [PATCH 59/72] added manual gasLimit --- lib/thirdweb/ThirdWebLib.ts | 4 ++-- lit.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index 6e897b0..9179d95 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -326,7 +326,7 @@ export namespace ThirdWebLib { args: any[]; txOverrides?:{ value?: number, - gasLimit?: number | BigNumber + gas?: string | BigNumber } backendWalletAddress: string; options?: { @@ -346,7 +346,7 @@ export namespace ThirdWebLib { }); throw err; } - console.log("thirdweb gas", txOverrides?.gasLimit); + console.log("thirdweb gas", txOverrides?.gas); const res = await ThirdWebLib.Fetch.post( `/contract/${LIT_CHAIN_ID}/${contractAddress}/write?chain`, { diff --git a/lit.ts b/lit.ts index 7bc28ae..d730329 100644 --- a/lit.ts +++ b/lit.ts @@ -520,7 +520,7 @@ export async function mintPKPV2({ ], txOverrides: { value: mintCost.toString(), - gasLimit: 5000000 + gas: "5000000" }, // this we have to dynamic using round robin backendWalletAddress: address, From 52fdc01dbe62079c54686ce0ac330a21fe9bca24 Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Fri, 13 Sep 2024 03:54:52 +0530 Subject: [PATCH 60/72] added address to set --- routes/auth/status.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routes/auth/status.ts b/routes/auth/status.ts index 322e643..01323dc 100644 --- a/routes/auth/status.ts +++ b/routes/auth/status.ts @@ -11,6 +11,7 @@ import { import { getTokenIdFromTransferEvent } from "../../utils/receipt"; import axios from "axios"; import config from "../../config"; +import redisClient from "../../lib/redisClient"; const Sentry = require("@sentry/node"); const safeBlockConfirmations = parseInt( @@ -98,6 +99,7 @@ export async function getAuthStatusHandler( console.timeEnd("🙂 PKP ETH and PUBLICKEY"); //<---- have to add PKP ethAddress to redis for pushing it to payment DB via cron job -----> + await redisClient.sAdd(`${process.env.NODE_ENV}_PKP_eth_addresses`, pkpEthAddress); //const payeeAddresses = JSON.stringify([pkpEthAddress]); //console.log("tooooo...."); From 349c6e2f11526ec45931afd4b32cd4498561b824 Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Fri, 13 Sep 2024 13:26:30 +0530 Subject: [PATCH 61/72] added sentry in fetch pkp --- lib/thirdweb/ThirdWebLib.spec.ts | 2 +- routes/auth/mintAndFetch.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/thirdweb/ThirdWebLib.spec.ts b/lib/thirdweb/ThirdWebLib.spec.ts index ec1a75a..f78212c 100644 --- a/lib/thirdweb/ThirdWebLib.spec.ts +++ b/lib/thirdweb/ThirdWebLib.spec.ts @@ -85,7 +85,7 @@ test("maintainBalances", async () => { } const queueIds = await ThirdWebLib.Action.maintainBalances({ - minimumBalance: "0.01", + minimumBalance: "0.5", funderAddress: '0xbF678cB0898856da855796C700107d75Efe5f534', // maxWallets: 1 }); diff --git a/routes/auth/mintAndFetch.ts b/routes/auth/mintAndFetch.ts index 198a82d..4078522 100644 --- a/routes/auth/mintAndFetch.ts +++ b/routes/auth/mintAndFetch.ts @@ -104,6 +104,13 @@ export async function fetchPKPsHandler( pkps: pkps, }); } catch (err) { + Sentry.captureException(err, { + contexts: { + request_body: { + ...req.body + }, + } + }); console.error( `Unable to fetch PKPs for given auth type ${authMethodType}`, { From a418ef295699085a6cf8e80eaaa04d5df5de630b Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Mon, 23 Sep 2024 01:22:39 +0530 Subject: [PATCH 62/72] update docker script and gas limit --- Dockerfile | 1 + lit.ts | 4 ++-- package.json | 1 + start.sh | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 71385ec..53eb0e2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,7 @@ WORKDIR /app COPY . . +RUN yarn global add @sentry/cli pm2 RUN env NODE_ENV=development yarn install RUN env NODE_ENV=production yarn build diff --git a/lit.ts b/lit.ts index d730329..7d7d90d 100644 --- a/lit.ts +++ b/lit.ts @@ -501,7 +501,7 @@ export async function mintPKPV2({ ], txOverrides: { value: mintCost.toString(), - gasLimit: gasLimit + gasLimit: "6000000" }, // this we have to dynamic using round robin backendWalletAddress: address, @@ -520,7 +520,7 @@ export async function mintPKPV2({ ], txOverrides: { value: mintCost.toString(), - gas: "5000000" + gas: "6000000" }, // this we have to dynamic using round robin backendWalletAddress: address, diff --git a/package.json b/package.json index 16aeb11..9091560 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "scripts": { "dev": "nodemon index.ts", "start": "node dist/index.js", + "docker:start": "pm2 start ./dist/index.js -i max --name relay-server && pm2 logs relay-server", "build": "tsc", "postinstall": "cp patch/ethersCompat.d.ts node_modules/siwe/dist/ethersCompat.d.ts" }, diff --git a/start.sh b/start.sh index 1ddbfcf..26262b4 100644 --- a/start.sh +++ b/start.sh @@ -6,4 +6,4 @@ if [ -f /mnt/secrets/default ]; then cp /mnt/secrets/default /app/.env fi -yarn start \ No newline at end of file +yarn docker:start \ No newline at end of file From 46d26906322d3cf55f07fd67293ccd83d1952996 Mon Sep 17 00:00:00 2001 From: Steven Date: Tue, 24 Sep 2024 13:13:01 +0700 Subject: [PATCH 63/72] Upate Makefile --- Makefile | 48 +++++++++++++++++++++++++++++----------------- preprod-release.md | 16 ++++++++++++++++ 2 files changed, 46 insertions(+), 18 deletions(-) create mode 100644 preprod-release.md diff --git a/Makefile b/Makefile index eea3d7f..15f7342 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,17 @@ service := relay-server tag := latest -region := ap-south-1 -region_prod := us-east-1 -namespace := tria-dev -namespace_prod := tria-prod -account_id := $(shell aws sts get-caller-identity --output text --query 'Account' --region ${region}) -account_id_prod := $(shell aws sts get-caller-identity --output text --query 'Account' --region ${region_prod}) + +# Default environment is dev +env := dev + +# Define account_id based on environment +account_id := $(if $(filter $(env),prod),060795900752,$(if $(filter $(env),preprod),047719617191,008971671473)) + +# Define variables based on environment +region := $(if $(filter $(env),prod),us-east-1,$(if $(filter $(env),preprod),us-east-1,ap-south-1)) +namespace := $(if $(filter $(env),prod),tria-prod,$(if $(filter $(env),preprod),tria-preprod,tria-dev)) + +# Docker settings OSFLAG := env DOCKER_DEFAULT_PLATFORM=linux/amd64 OSFLAG=linux/amd64 build: @@ -16,27 +22,33 @@ release: $(OSFLAG) docker tag ${service}:${tag} ${account_id}.dkr.ecr.${region}.amazonaws.com/${service}:${tag} $(OSFLAG) docker push ${account_id}.dkr.ecr.${region}.amazonaws.com/${service}:${tag} - for digest in $$(aws ecr describe-images --repository-name ${service} --filter tagStatus=UNTAGGED --query 'imageDetails[*].imageDigest' --output text --region ${region}); \ + for digest in $$(aws ecr describe-images --repository-name ${service} --filter tagStatus=UNTAGGED --query 'imageDetails[*].imageDigest' --output text --region ${region}); \ do \ aws ecr batch-delete-image --repository-name ${service} --image-ids imageDigest=$${digest} --region ${region}; \ done -release-prod: - aws --region ${region_prod} ecr get-login-password | docker login -u AWS --password-stdin ${account_id_prod}.dkr.ecr.${region_prod}.amazonaws.com - $(OSFLAG) docker tag ${service}:${tag} ${account_id_prod}.dkr.ecr.${region_prod}.amazonaws.com/${service}:${tag} - $(OSFLAG) docker push ${account_id_prod}.dkr.ecr.${region_prod}.amazonaws.com/${service}:${tag} +deploy-k8s: + kubectl rollout restart deployment/${service} -n ${namespace} - for digest in $$(aws ecr describe-images --repository-name ${service} --filter tagStatus=UNTAGGED --query 'imageDetails[*].imageDigest' --output text --region ${region_prod}); \ - do \ - aws ecr batch-delete-image --repository-name ${service} --image-ids imageDigest=$${digest} --region ${region_prod}; \ - done +release-dev: + $(MAKE) release env=dev + +release-preprod: + $(MAKE) release env=preprod + +release-prod: + $(MAKE) release env=prod deploy-k8s-dev: - kubectl rollout restart deployment/${service} -n ${namespace} + $(MAKE) deploy-k8s env=dev + +deploy-k8s-preprod: + $(MAKE) deploy-k8s env=preprod deploy-k8s-prod: - kubectl rollout restart deployment/${service} -n ${namespace_prod} + $(MAKE) deploy-k8s env=prod reset: $(OSFLAG) docker rm -f $$($(OSFLAG) docker ps -a -q) - $(OSFLAG) docker system prune -f \ No newline at end of file + $(OSFLAG) docker system prune -f + diff --git a/preprod-release.md b/preprod-release.md new file mode 100644 index 0000000..a7e0d4c --- /dev/null +++ b/preprod-release.md @@ -0,0 +1,16 @@ +# Deploy Tria Backend + +This document show an end to end pipeline on how we can build, release & deploy an `relay-server` into AWS Prod env + +## Setup +- Open a new shell console terminal, cd to this `current directoty` & paste your AWS credentials. Then, run below command +``` +# build sample service docker image +make build + +# push docker image into AWS prod ecr +make release-preprod + +# deploy sample service into PROD env +make deploy-k8s-preprod +``` From 5bfb41f9c5c50acbb935fab655fd39c578a70cb9 Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Mon, 30 Sep 2024 13:08:13 +0530 Subject: [PATCH 64/72] error handling added thirdweb --- lib/thirdweb/ThirdWebLib.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index 9179d95..58daf3a 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -30,6 +30,7 @@ export namespace ThirdWebLib { .json() .catch((err:any) => { console.error("Error fetching chain:", err); + throw err; }); return res.result; @@ -60,6 +61,7 @@ export namespace ThirdWebLib { .json() .catch((err:any) => { console.error("Error fetching chain:", err); + throw err; }); return res; @@ -361,8 +363,8 @@ export namespace ThirdWebLib { return res; } catch (e: any) { - console.log("error in thirdweb write", e); - console.log("error message in thirdweb write", e.message); + console.error("error in thirdweb write", e); + console.error("error message in thirdweb write", e.message); throw new Error("[ThirdWebLib] Error writing contract:", e); } } From 71e07e39713e930de025ebe6fbd0e9343184cd51 Mon Sep 17 00:00:00 2001 From: Steven Date: Wed, 2 Oct 2024 17:23:26 +0700 Subject: [PATCH 65/72] Update Makefile --- .dockerignore | 1 + Makefile | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f3c7a7c --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +Makefile diff --git a/Makefile b/Makefile index 15f7342..fbb6d35 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,12 @@ service := relay-server -tag := latest # Default environment is dev env := dev # Define account_id based on environment -account_id := $(if $(filter $(env),prod),060795900752,$(if $(filter $(env),preprod),047719617191,008971671473)) +account_id := $(if $(filter $(env),prod),060795900752,$(if $(filter $(env),preprod),060795900752,008971671473)) +tag := $(if $(filter $(env),preprod),preprod,latest) + # Define variables based on environment region := $(if $(filter $(env),prod),us-east-1,$(if $(filter $(env),preprod),us-east-1,ap-south-1)) @@ -34,6 +35,7 @@ release-dev: $(MAKE) release env=dev release-preprod: + $(MAKE) build env=preprod $(MAKE) release env=preprod release-prod: From 4033b3db1226e63504356ced85a0ee7e3132f660 Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Mon, 7 Oct 2024 16:13:56 +0530 Subject: [PATCH 66/72] update RR --- index.ts | 25 ++++++++++ lib/thirdweb/ThirdWebLib.ts | 5 +- routes/thirdweb/transaction.ts | 89 ++++++++++++++++++---------------- utils/thirdweb/roundRobin.ts | 30 +++++++----- utils/tmp/testRoundRobin.ts | 85 ++++++++++++++++++++++++++++++++ 5 files changed, 176 insertions(+), 58 deletions(-) create mode 100644 utils/tmp/testRoundRobin.ts diff --git a/index.ts b/index.ts index 44c9535..ce21f86 100644 --- a/index.ts +++ b/index.ts @@ -75,11 +75,34 @@ import { addPayeeHandler } from "./routes/delegate/user"; import { failedTxWebHookHandler, thirdwebWebHookHandler } from "./routes/webhook/thirdweb"; import { getTxStatusByQueueId } from "./routes/thirdweb/transaction"; import { RoundRobin } from './utils/thirdweb/roundRobin'; +import { TempRoundRobin } from './utils/tmp/testRoundRobin'; import { backendWallets } from './utils/thirdweb/constants'; const app = express(); + +// API endpoint to get the next address +const addresses = Array.from({ length: 500 }, (_, i) => `Address_${500 + i}`); // Mock addresses +const environment = "staging"; +const roundRobin = new TempRoundRobin(addresses, environment); +roundRobin.init().then(() => { + console.log("RoundRobin initialized"); + }).catch(err => { + console.error("Error initializing RoundRobin:", err); + }); + +app.get('/api/next', async (req, res) => { + try { + const address = await roundRobin.next(); + const index = addresses.indexOf(address) + 500; // Map back to index range 500-999 + res.json({ index }); + } catch (err) { + console.error("Error calling RoundRobin next:", err); + res.status(500).json({ error: "Internal server error" }); + } + }); + let server = http.createServer(app); export const rr = new RoundRobin(backendWallets, config.env); @@ -315,6 +338,8 @@ app.get( app.post("/auth/claim", mintClaimedKeyId); app.get("/transaction/status/:queueId", getTxStatusByQueueId); + + if (ENABLE_HTTPS) { const host = "0.0.0.0"; const port = 443; diff --git a/lib/thirdweb/ThirdWebLib.ts b/lib/thirdweb/ThirdWebLib.ts index 9179d95..f1ac3ea 100644 --- a/lib/thirdweb/ThirdWebLib.ts +++ b/lib/thirdweb/ThirdWebLib.ts @@ -274,10 +274,7 @@ export namespace ThirdWebLib { ); return data; } catch (e: any) { - throw new Error( - "[ThirdWebLib] Error fetching transactions:", - e, - ); + throw e; } } } diff --git a/routes/thirdweb/transaction.ts b/routes/thirdweb/transaction.ts index ad8bd86..a4219b2 100644 --- a/routes/thirdweb/transaction.ts +++ b/routes/thirdweb/transaction.ts @@ -8,50 +8,53 @@ function delay(ms: number) { } export async function getTxStatusByQueueId( - req: Request, - res: Response, + req: Request, + res: Response, ) { - const DELAY = 200; - const { queueId } = req.params || req.query; - try { - let data; - for (let i = 0; i < 100; i++) { - //console.log('i', i); - console.time("Thirdweb"); - data = await ThirdWebLib.Action.getTxStatusByQueueId(queueId); - console.timeEnd("Thirdweb"); - //console.log(data); - if (data.status === 'sent' || data.status === 'mined') { - //console.log("transactionHash", data.transactionHash); - console.log('i', i); - return res.status(200).send({success: true, transactionHash: data.transactionHash, queueId: data.queueId}); - }else if(data.status === 'errored') { - console.log('i', i); - return res.status(500).send({data, success: false, error: 'Transaction Failed'}); - } - await delay(DELAY); - } - - if (data.status !== 'sent') { - const err = new Error("Timeout, didn't get any Tx data by queueID within 25 seconds"); - Sentry.captureException(err, { - contexts: { - request_body: { - ...req.body - }, - } - }); - return res.status(408).send({ success: false, error: 'Transaction not sent within expected time' }); + const DELAY = 400; + const { queueId } = req.params || req.query; + let index; + try { + let data; + for (let i = 0; i < 100; i++) { + //console.log('i', i); + console.time("Thirdweb"); + data = await ThirdWebLib.Action.getTxStatusByQueueId(queueId); + console.timeEnd("Thirdweb"); + //console.log(data); + if (data.status === 'sent' || data.status === 'mined') { + //console.log("transactionHash", data.transactionHash); + console.log('i', i); + index = i; + return res.status(200).send({ success: true, transactionHash: data.transactionHash, queueId: data.queueId, index }); + } else if (data.status === 'errored') { + console.log('i', i); + index = i; + return res.status(500).send({ isErrored: true, errorMessage: data.errorMessage, success: false, error: 'Transaction Failed', index }); + } + await delay(DELAY); + } + + if (data.status !== 'sent') { + const err = new Error("Timeout, didn't get any Tx data by queueID within 25 seconds"); + Sentry.captureException(err, { + contexts: { + request_body: { + ...req.body + }, } - - } catch (err:any) { - Sentry.captureException(err, { - contexts: { - request_body: { - ...req.body - }, - } - }); - res.status(500).send({ success: false, error: err.message }); + }); + return res.status(408).send({ success: false, error: 'Transaction not sent within expected time' }); + } + + } catch (err: any) { + Sentry.captureException(err, { + contexts: { + request_body: { + ...req.body + }, } + }); + return res.status(500).send({ success: false, error: err.message, index }); + } } \ No newline at end of file diff --git a/utils/thirdweb/roundRobin.ts b/utils/thirdweb/roundRobin.ts index 82a9623..5719f5e 100644 --- a/utils/thirdweb/roundRobin.ts +++ b/utils/thirdweb/roundRobin.ts @@ -4,14 +4,14 @@ import redisClient from "../../lib/redisClient"; export class RoundRobin { addresses: string[]; index: number; - mutex: Mutex; environment: string; + mutex: Mutex; constructor(addresses: string[], environment: string) { this.addresses = addresses; - this.index = environment === "production" ? 0 : 500; - this.mutex = new Mutex(); this.environment = environment; + this.index = environment === "production" ? 0 : 500; + this.mutex = new Mutex(); // Local mutex for critical sections } async init() { @@ -24,19 +24,27 @@ export class RoundRobin { } async next() { - const release = await this.mutex.acquire(); + const release = await this.mutex.acquire(); // Local mutex for this instance try { - const address = this.addresses[this.index]; // Using modulo to wrap around addresses array - // Adjust index bounds based on environment + let address; + // Use Redis INCR operation to atomically increment index across instances + const rr_pointer_key = `${this.environment}_rr_pointer`; + + const rr_pointer = await redisClient.incr(rr_pointer_key); + if (this.environment === "production") { - // 500 wallets for production index 0 to 499 - this.index = this.index < 499 ? this.index + 1 : 0; + // Wrap around between 0 and 499 for production + this.index = rr_pointer % 500; } else if (this.environment === "staging") { - // 499 wallets for staging/loadtesting index 500 to 998 - this.index = this.index < 998 ? this.index + 1 : 500; + // Wrap around between 500 and 998 for staging + this.index = (rr_pointer % 499) + 500; } + + address = this.addresses[this.index]; + console.log(`🛑🛑 ${this.environment} index`, this.index); - await redisClient.set(`${this.environment}_rr_pointer`, this.index.toString()); + // No need to manually set the index since Redis INCR handles that + return address; } finally { release(); diff --git a/utils/tmp/testRoundRobin.ts b/utils/tmp/testRoundRobin.ts new file mode 100644 index 0000000..7afc44b --- /dev/null +++ b/utils/tmp/testRoundRobin.ts @@ -0,0 +1,85 @@ +import redisClient from "../../lib/redisClient"; + +export class TempRoundRobin { + addresses: string[]; + index: number; + environment: string; + + constructor(addresses: string[], environment: string) { + this.addresses = addresses; + this.environment = environment; + this.index = environment === "production" ? 0 : 500; + } + + async init() { + const rr_pointer = await redisClient.get(`${this.environment}_rr_pointer`); + if (rr_pointer) { + this.index = parseInt(rr_pointer); + } else { + await redisClient.set(`${this.environment}_rr_pointer`, this.index.toString()); + } + } + + async next() { + const rr_pointer_key = `${this.environment}_rr_pointer`; + const lock_key = `${rr_pointer_key}_lock`; + + let address; + + // Try to acquire the Redis lock with retries and backoff in case of high contention + const maxRetries = 5; + const retryDelay = 100; // 100ms initial delay + + let locked = await this.tryAcquireLock(lock_key, 10000, maxRetries, retryDelay); // 10s lock expiration + + if (!locked) { + throw new Error("Could not acquire lock for round robin pointer after retries."); + } + + try { + const rr_pointer = await redisClient.incr(rr_pointer_key); + + if (this.environment === "production") { + // Wrap around between 0 and 499 for production + this.index = rr_pointer % 500; + } else if (this.environment === "staging") { + // Wrap around between 500 and 999 for staging + this.index = (rr_pointer % 500) + 500; + } + + address = this.addresses[this.index]; + + console.log(`🛑🛑 ${this.environment} index`, this.index); + return address; + } finally { + await this.releaseLock(lock_key); // Release the Redis lock + } + } + + async tryAcquireLock(lockKey: string, ttl: number, maxRetries: number, delay: number) { + let retries = 0; + let locked = false; + while (retries < maxRetries) { + const result = await redisClient.set(lockKey, "locked", { + NX: true, + PX: ttl + }); + if (result === "OK") { + locked = true; + break; + } + + retries++; + await this.sleep(retries * delay); // Exponential backoff + } + return locked; + } + + async releaseLock(lockKey: string) { + await redisClient.del(lockKey); + } + + sleep(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } +} From a633d31b9ca05a2ea196a3db9cc6694241ea1ea9 Mon Sep 17 00:00:00 2001 From: jatin-threely Date: Thu, 10 Oct 2024 14:17:01 +0530 Subject: [PATCH 67/72] update start command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9091560..5c43402 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "dev": "nodemon index.ts", "start": "node dist/index.js", - "docker:start": "pm2 start ./dist/index.js -i max --name relay-server && pm2 logs relay-server", + "docker:start": "pm2 start ./dist/index.js -i 1 --name relay-server && pm2 logs relay-server", "build": "tsc", "postinstall": "cp patch/ethersCompat.d.ts node_modules/siwe/dist/ethersCompat.d.ts" }, From 925e451f34f1f4bcbd375894734de90c5e926b75 Mon Sep 17 00:00:00 2001 From: Steven Date: Fri, 11 Oct 2024 17:01:18 +0700 Subject: [PATCH 68/72] Adding document for TEST env --- Makefile | 11 ++++++++++- dev-release.md | 13 +++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fbb6d35..ce80688 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,10 @@ service := relay-server env := dev # Define account_id based on environment -account_id := $(if $(filter $(env),prod),060795900752,$(if $(filter $(env),preprod),060795900752,008971671473)) +account_id := $(if $(filter $(env),prod),060795900752, \ + $(if $(filter $(env),preprod),060795900752, \ + $(if $(filter $(env),dev),535002881389, \ + 008971671473))) tag := $(if $(filter $(env),preprod),preprod,latest) @@ -34,6 +37,9 @@ deploy-k8s: release-dev: $(MAKE) release env=dev +release-test: + $(MAKE) release env=test + release-preprod: $(MAKE) build env=preprod $(MAKE) release env=preprod @@ -44,6 +50,9 @@ release-prod: deploy-k8s-dev: $(MAKE) deploy-k8s env=dev +deploy-k8s-test: + $(MAKE) deploy-k8s env=test + deploy-k8s-preprod: $(MAKE) deploy-k8s env=preprod diff --git a/dev-release.md b/dev-release.md index 5681f64..304dfb2 100644 --- a/dev-release.md +++ b/dev-release.md @@ -21,3 +21,16 @@ make release # deploy sample service into DEV env make deploy-k8s-dev ``` + +``` +# TEST env +# build sample service docker image +make build + +# push docker image into AWS dev ecr +make release-test + +# deploy sample service into DEV env +make deploy-k8s-test +``` + From 0121b48ef1524c5ac8ae1204cc4649889019cdc7 Mon Sep 17 00:00:00 2001 From: Steven Date: Fri, 11 Oct 2024 17:26:48 +0700 Subject: [PATCH 69/72] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ce80688..6a1e768 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ tag := $(if $(filter $(env),preprod),preprod,latest) # Define variables based on environment -region := $(if $(filter $(env),prod),us-east-1,$(if $(filter $(env),preprod),us-east-1,ap-south-1)) +region := $(if $(filter $(env),dev),ap-south-1, us-east-1) namespace := $(if $(filter $(env),prod),tria-prod,$(if $(filter $(env),preprod),tria-preprod,tria-dev)) # Docker settings From 18c8d5c4b1be331373d465fc236525eb36c74d97 Mon Sep 17 00:00:00 2001 From: Steven Date: Fri, 11 Oct 2024 17:33:10 +0700 Subject: [PATCH 70/72] Update Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 6a1e768..f611df5 100644 --- a/Makefile +++ b/Makefile @@ -6,13 +6,13 @@ env := dev # Define account_id based on environment account_id := $(if $(filter $(env),prod),060795900752, \ $(if $(filter $(env),preprod),060795900752, \ - $(if $(filter $(env),dev),535002881389, \ + $(if $(filter $(env),test),535002881389, \ 008971671473))) tag := $(if $(filter $(env),preprod),preprod,latest) # Define variables based on environment -region := $(if $(filter $(env),dev),ap-south-1, us-east-1) +region := $(if $(filter $(env),dev),ap-south-1,us-east-1) namespace := $(if $(filter $(env),prod),tria-prod,$(if $(filter $(env),preprod),tria-preprod,tria-dev)) # Docker settings From 3600af17f96087b16af2fc12579ba0ba5c944a8f Mon Sep 17 00:00:00 2001 From: Steven Date: Sat, 9 Nov 2024 09:47:49 +0700 Subject: [PATCH 71/72] Adding deploy-preprod workflow --- .github/workflows/deploy-preprod.yaml | 48 +++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/deploy-preprod.yaml diff --git a/.github/workflows/deploy-preprod.yaml b/.github/workflows/deploy-preprod.yaml new file mode 100644 index 0000000..200cb3c --- /dev/null +++ b/.github/workflows/deploy-preprod.yaml @@ -0,0 +1,48 @@ +name: Docker Build + +on: + push: + branches: + - preprod + +jobs: + build: + runs-on: ubuntu-latest + + steps: + # Checkout the code from the repository + - name: Checkout code + uses: actions/checkout@v3 + + # Set up Docker (if it's not already set up) + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + # Set up AWS credentials + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_PREPROD }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PREPROD }} + aws-region: ${{ secrets.AWS_REGION_PREPROD }} + + # Install necessary dependencies if needed (like gcc, make, etc.) + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y build-essential + + - name: Authenticate with npm + run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc + + - name: Authenticate with sentry + run: echo "[auth]\ntoken=${{ secrets.SENTRY_TOKEN }}" > .sentryclirc + + - name: Build Docker Image + run: make build + + - name: Push Docker Image + run: make release-preprod + + - name: Deploy K8S + run: | + aws eks update-kubeconfig --region us-east-1 --name tf-tria-preprod + make deploy-k8s-preprod From c98d7f522f5511b9fff7a81e94439a825bf2f21f Mon Sep 17 00:00:00 2001 From: Steven Tran Date: Sun, 17 Nov 2024 10:46:11 +0400 Subject: [PATCH 72/72] fix release prod --- .github/workflows/deploy-dev.yaml | 2 +- .github/workflows/deploy-preprod.yaml | 2 +- .github/workflows/deploy-prod.yaml | 48 +++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/deploy-prod.yaml diff --git a/.github/workflows/deploy-dev.yaml b/.github/workflows/deploy-dev.yaml index 59534b5..44e8517 100644 --- a/.github/workflows/deploy-dev.yaml +++ b/.github/workflows/deploy-dev.yaml @@ -3,7 +3,7 @@ name: Docker Build on: push: branches: - - feature/lit-3479-relayerthirdweb-proxy-requests-to-thirdweb-engine + - thirdweb-dev jobs: build: diff --git a/.github/workflows/deploy-preprod.yaml b/.github/workflows/deploy-preprod.yaml index 200cb3c..e91f37d 100644 --- a/.github/workflows/deploy-preprod.yaml +++ b/.github/workflows/deploy-preprod.yaml @@ -3,7 +3,7 @@ name: Docker Build on: push: branches: - - preprod + - thirdweb-preprod jobs: build: diff --git a/.github/workflows/deploy-prod.yaml b/.github/workflows/deploy-prod.yaml new file mode 100644 index 0000000..072a8bb --- /dev/null +++ b/.github/workflows/deploy-prod.yaml @@ -0,0 +1,48 @@ +name: Docker Build + +on: + push: + branches: + - thirdweb-main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + # Checkout the code from the repository + - name: Checkout code + uses: actions/checkout@v3 + + # Set up Docker (if it's not already set up) + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + # Set up AWS credentials + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} + aws-region: ${{ secrets.AWS_REGION_PROD }} + + # Install necessary dependencies if needed (like gcc, make, etc.) + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y build-essential + + - name: Authenticate with npm + run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc + + - name: Authenticate with sentry + run: echo "[auth]\ntoken=${{ secrets.SENTRY_TOKEN }}" > .sentryclirc + + - name: Build Docker Image + run: make build + + - name: Push Docker Image + run: make release-prod + + - name: Deploy K8S + run: | + aws eks update-kubeconfig --region us-east-1 --name tf-tria-prod + make deploy-k8s-prod