From a4862e440a341e4bf67f2b21512fddcce93ac9f4 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 18:27:59 +0400 Subject: [PATCH 001/103] feat: add API endpoint to return a cached file --- .gitignore | 1 + package.json | 4 +- src/helpers/snapshot.ts | 107 ++++++++++++++++++++++++++++++ src/helpers/utils.ts | 21 ++++++ src/helpers/votesReport.ts | 108 ++++++++++++++++++++++++++++++ src/index.ts | 2 + src/rpc.ts | 32 +++++++++ tsconfig.json | 3 +- yarn.lock | 131 ++++++++++++++++++++++++++++++++++++- 9 files changed, 404 insertions(+), 5 deletions(-) create mode 100644 src/helpers/snapshot.ts create mode 100644 src/helpers/utils.ts create mode 100644 src/helpers/votesReport.ts create mode 100644 src/rpc.ts diff --git a/.gitignore b/.gitignore index 075750ec..ef574057 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ dist build .env coverage +cache # Remove some common IDE working directories .idea diff --git a/package.json b/package.json index f2e79f77..73723c82 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,10 @@ }, "prettier": "@snapshot-labs/prettier-config", "dependencies": { + "@apollo/client": "^3.7.12", "cors": "^2.8.5", - "express": "^4.18.2" + "express": "^4.18.2", + "graphql": "^16.6.0" }, "devDependencies": { "@snapshot-labs/eslint-config": "^0.1.0-beta.0", diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts new file mode 100644 index 00000000..df1cf7a2 --- /dev/null +++ b/src/helpers/snapshot.ts @@ -0,0 +1,107 @@ +import { gql, ApolloClient, InMemoryCache, HttpLink } from '@apollo/client/core'; + +export type Proposal = { + id: string; + state: string; +}; +export type Vote = { + ipfs: string; + voter: string; + choice: any[] | any; + choices?: any[]; + vp: number; + reason: string; + created: number; +}; + +const client = new ApolloClient({ + link: new HttpLink({ uri: `${process.env.HUB_URL}/graphql` }), + cache: new InMemoryCache({ + addTypename: false + }), + defaultOptions: { + query: { + fetchPolicy: 'no-cache' + } + } +}); + +const PROPOSAL_QUERY = gql` + query Proposal($id: String) { + proposal(id: $id) { + id + state + } + } +`; + +const VOTES_QUERY = gql` + query Votes( + $id: String! + $first: Int + $skip: Int + $orderBy: String + $orderDirection: OrderDirection + $created_gte: Int + ) { + votes( + first: $first + skip: $skip + where: { proposal: $id, created_gte: $created_gte } + orderBy: $orderBy + orderDirection: $orderDirection + ) { + ipfs + voter + choice + vp + reason + created + } + } +`; + +export async function fetchProposal(id: string) { + const { + data: { proposal } + }: { data: { proposal: Proposal } } = await client.query({ + query: PROPOSAL_QUERY, + variables: { + id + } + }); + + console.log( + ( + await client.query({ + query: PROPOSAL_QUERY, + variables: { + id + } + }) + ).data + ); + + return proposal; +} + +export async function fetchVotes( + id: string, + { first = 1000, skip = 0, orderBy = 'created_gte', orderDirection = 'asc', created_gte = 0 } = {} +) { + const { + data: { votes } + }: { data: { votes: Vote[] } } = await client.query({ + query: VOTES_QUERY, + variables: { + id, + orderBy, + orderDirection, + first, + skip, + created_gte + } + }); + + return votes; +} diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts new file mode 100644 index 00000000..77ec35fc --- /dev/null +++ b/src/helpers/utils.ts @@ -0,0 +1,21 @@ +import type { Response } from 'express'; + +export function rpcError(res: Response, code: number, e: unknown, id: string | number) { + res.status(code).json({ + jsonrpc: '2.0', + error: { + code, + message: 'unauthorized', + data: e + }, + id + }); +} + +export function rpcSuccess(res: Response, result: string, id: string | number) { + res.json({ + jsonrpc: '2.0', + result, + id + }); +} diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts new file mode 100644 index 00000000..556567ef --- /dev/null +++ b/src/helpers/votesReport.ts @@ -0,0 +1,108 @@ +import { existsSync, appendFileSync } from 'fs'; +import { fetchProposal, fetchVotes } from './snapshot'; +import type { Proposal, Vote } from './snapshot'; + +const CACHE_PATH = `${__dirname}/../../cache`; + +class VotesReport { + id: string; + path: string; + + constructor(id: string) { + this.id = id; + this.path = `${CACHE_PATH}/snapshot-votes-report-${this.id}.csv`; + } + + cachedFile = () => { + return existsSync(this.path) && this.path; + }; + + generate = async () => { + const proposal = await fetchProposal(this.id); + + if (!proposal) { + return Promise.reject('proposal_not_found'); + } + + if (proposal.state !== 'closed') { + return Promise.reject('proposal_not_closed'); + } + + if (!this.cachedFile()) { + this.#generateCachedFile(proposal); + } + + return Promise.resolve(); + }; + + #generateCachedFile = (proposal: Proposal) => { + const headers = [ + 'address', + 'choice', + // ...proposal.choices.map((choice, index) => `choice.${index + 1}`), + 'voting_power', + 'timestamp', + 'date_utc', + 'author_ipfs_hash' + ]; + + appendFileSync(this.path, `${headers.join(',')}\n`); + + return this.#saveVotes(); + }; + + #saveVotes = async () => { + let votes: Vote[] = []; + let page = 0; + let createdPivot = 0; + const pageSize = 1000; + let resultsSize = 0; + const maxPage = 5; + + do { + let newVotes = await fetchVotes(this.id, { + first: pageSize, + skip: page * pageSize, + created_gte: createdPivot, + orderBy: 'created', + orderDirection: 'asc' + }); + resultsSize = newVotes.length; + + if (page === 0 && createdPivot > 0) { + // Loosely assuming that there will never be more than 1000 duplicates + const existingIpfs = votes.slice(-pageSize).map(vote => vote.ipfs); + + newVotes = newVotes.filter(vote => { + return !existingIpfs.includes(vote.ipfs); + }); + } + + if (page === maxPage) { + page = 0; + createdPivot = newVotes[newVotes.length - 1].created; + } else { + page++; + } + + appendFileSync(this.path, newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')); + + votes = newVotes; + } while (resultsSize === pageSize); + + return this.path; + }; + + #formatCsvLine = (vote: Vote) => { + return [ + vote.voter, + vote.choice, + vote.vp, + vote.created, + `"${new Date(vote.created * 1e3).toUTCString()}"`, + vote.ipfs + ].join(','); + }; +} + +export default VotesReport; diff --git a/src/index.ts b/src/index.ts index 6b0dfe51..5f41c8b6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,10 +1,12 @@ import 'dotenv/config'; import express from 'express'; import cors from 'cors'; +import rpc from './rpc'; const app = express(); const PORT = process.env.PORT || 3000; app.use(cors({ maxAge: 86400 })); +app.use('/', rpc); app.listen(PORT, () => console.log(`Listening at http://localhost:${PORT}`)); diff --git a/src/rpc.ts b/src/rpc.ts new file mode 100644 index 00000000..14da701e --- /dev/null +++ b/src/rpc.ts @@ -0,0 +1,32 @@ +import express from 'express'; +import { rpcError, rpcSuccess } from './helpers/utils'; +import VotesReport from './helpers/votesReport'; + +const router = express.Router(); + +router.post('/votes/:id', async (req, res) => { + const { id } = req.params; + const votesReport = new VotesReport(id); + + try { + const file = votesReport.cachedFile(); + + if (file) { + return res.download(file); + } + + votesReport + .generate() + .then(() => { + return rpcSuccess(res, 'pending_generation', id); + }) + .catch(e => { + return rpcError(res, 500, e, id); + }); + } catch (e) { + console.log(e); + return rpcError(res, 500, e, id); + } +}); + +export default router; diff --git a/tsconfig.json b/tsconfig.json index 7af3a7ee..b43177a6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,6 @@ "esModuleInterop": true, "strict": true, "noImplicitAny": true, - "resolveJsonModule": true, - "moduleResolution": "Node" + "resolveJsonModule": true } } diff --git a/yarn.lock b/yarn.lock index cf9719ce..50cfb892 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,25 @@ # yarn lockfile v1 +"@apollo/client@^3.7.12": + version "3.7.12" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.7.12.tgz#9ddd355d0788374cdb900e5f40298b196176952b" + integrity sha512-XvH8ssDibx5hR92Tet8CHtUxhiIs+RbYjyxkflAcnF85QT3VacUdNAhjj0OcA2kcZ+5KyceJmilmBNjj6+rJFg== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + "@wry/context" "^0.7.0" + "@wry/equality" "^0.5.0" + "@wry/trie" "^0.3.0" + graphql-tag "^2.12.6" + hoist-non-react-statics "^3.3.2" + optimism "^0.16.2" + prop-types "^15.7.2" + response-iterator "^0.2.6" + symbol-observable "^4.0.0" + ts-invariant "^0.10.3" + tslib "^2.3.0" + zen-observable-ts "^1.2.5" + "@babel/code-frame@^7.0.0": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" @@ -62,6 +81,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892" integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g== +"@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + "@humanwhocodes/config-array@^0.11.8": version "0.11.8" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" @@ -357,6 +381,27 @@ "@typescript-eslint/types" "5.59.0" eslint-visitor-keys "^3.3.0" +"@wry/context@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.0.tgz#be88e22c0ddf62aeb0ae9f95c3d90932c619a5c8" + integrity sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ== + dependencies: + tslib "^2.3.0" + +"@wry/equality@^0.5.0": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.3.tgz#fafebc69561aa2d40340da89fa7dc4b1f6fb7831" + integrity sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.3.2.tgz#a06f235dc184bd26396ba456711f69f8c35097e6" + integrity sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ== + dependencies: + tslib "^2.3.0" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -1216,6 +1261,18 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@^16.6.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1238,6 +1295,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -1370,7 +1434,7 @@ js-sdsl@^4.1.4: resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== -js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -1433,6 +1497,13 @@ lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -1582,7 +1653,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -object-assign@^4: +object-assign@^4, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -1613,6 +1684,14 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +optimism@^0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.2.tgz#519b0c78b3b30954baed0defe5143de7776bf081" + integrity sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ== + dependencies: + "@wry/context" "^0.7.0" + "@wry/trie" "^0.3.0" + optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -1730,6 +1809,15 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -1775,6 +1863,11 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -1797,6 +1890,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +response-iterator@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" + integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -2029,6 +2127,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +symbol-observable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -2075,6 +2178,13 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +ts-invariant@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" + integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== + dependencies: + tslib "^2.1.0" + ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" @@ -2099,6 +2209,11 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.1.0, tslib@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tsutils@^3.17.1, tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -2230,3 +2345,15 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zen-observable-ts@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" + integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== + dependencies: + zen-observable "0.8.15" + +zen-observable@0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== From fff3ae7f315825dce00c1b247bf8cb26fcc58d97 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 18:43:49 +0400 Subject: [PATCH 002/103] feat: compress response --- package.json | 2 ++ src/index.ts | 2 ++ yarn.lock | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 73723c82..10ef0762 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "prettier": "@snapshot-labs/prettier-config", "dependencies": { "@apollo/client": "^3.7.12", + "compression": "^1.7.4", "cors": "^2.8.5", "express": "^4.18.2", "graphql": "^16.6.0" @@ -25,6 +26,7 @@ "devDependencies": { "@snapshot-labs/eslint-config": "^0.1.0-beta.0", "@snapshot-labs/prettier-config": "^0.1.0-beta.7", + "@types/compression": "^1.7.2", "@types/cors": "^2.8.13", "@types/express": "^4.17.17", "@types/node": "^18.15.11", diff --git a/src/index.ts b/src/index.ts index 5f41c8b6..756c3023 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ import 'dotenv/config'; import express from 'express'; +import compression from 'compression'; import cors from 'cors'; import rpc from './rpc'; @@ -7,6 +8,7 @@ const app = express(); const PORT = process.env.PORT || 3000; app.use(cors({ maxAge: 86400 })); +app.use(compression()); app.use('/', rpc); app.listen(PORT, () => console.log(`Listening at http://localhost:${PORT}`)); diff --git a/yarn.lock b/yarn.lock index 50cfb892..26e0e10b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -188,6 +188,13 @@ "@types/connect" "*" "@types/node" "*" +"@types/compression@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@types/compression/-/compression-1.7.2.tgz#7cc1cdb01b4730eea284615a68fc70a2cdfd5e71" + integrity sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg== + dependencies: + "@types/express" "*" + "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -216,7 +223,7 @@ "@types/qs" "*" "@types/range-parser" "*" -"@types/express@^4.17.17": +"@types/express@*", "@types/express@^4.17.17": version "4.17.17" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== @@ -407,7 +414,7 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.8: +accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -559,6 +566,11 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -650,6 +662,26 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1544,7 +1576,7 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -1670,6 +1702,11 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -1941,6 +1978,11 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" From f1dedbdab6959fef6c7a5dfb86701119f2d7a356 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 19:21:31 +0400 Subject: [PATCH 003/103] feat: define precise error codes --- README.md | 31 +++++++++++++++++++++++++++++++ src/helpers/snapshot.ts | 11 ----------- src/helpers/utils.ts | 25 ++++++++++++------------- src/helpers/votesReport.ts | 4 ++-- src/rpc.ts | 8 ++++---- 5 files changed, 49 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index b2004076..65b97eb8 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,37 @@ yarn lint yarn typecheck ``` +## Usage + +Send a POST request with a proposal ID + +``` +curl -X POST localhost:3000/votes/[PROPOSAL-ID] +``` + +When cached, this request will respond with a stream to a CSV file. + +Otherwise, on error, it will respond with a [JSON-RPC 2.0](https://www.jsonrpc.org/specification) error response: + +``` +{ + "jsonrpc":"2.0", + "error":{ + "code": CODE, + "message": MESSAGE, + "data": MESSAGE_DETAIL + }, + "id": PROPOSAL-ID +} +``` + +| Description | `CODE` | `MESSAGE` | +| ----------------------------------- | ------ | ------------------- | +| When the proposal does not exist | -40001 | PROPOSAL_NOT_FOUND | +| When the proposal is not closed | -40004 | PROPOSAL_NOT_CLOSED | +| When the file is pending generation | -40010 | PENDING_GENERATION | +| Other/Unknown/Server Error | -32603 | INTERNAL_ERROR | + ## License [MIT](https://github.com/snapshot-labs/envelop-ui/blob/bootstrap-app/LICENSE) diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts index df1cf7a2..ef93a531 100644 --- a/src/helpers/snapshot.ts +++ b/src/helpers/snapshot.ts @@ -71,17 +71,6 @@ export async function fetchProposal(id: string) { } }); - console.log( - ( - await client.query({ - query: PROPOSAL_QUERY, - variables: { - id - } - }) - ).data - ); - return proposal; } diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 77ec35fc..e4adbba1 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,21 +1,20 @@ import type { Response } from 'express'; -export function rpcError(res: Response, code: number, e: unknown, id: string | number) { - res.status(code).json({ +const ERROR_CODES: Record = { + PROPOSAL_NOT_FOUND: -40001, + PROPOSAL_NOT_CLOSED: -40004, + PENDING_GENERATION: -40010 +}; + +export function rpcError(res: Response, e: Error | string, id: string | number) { + const errorMessage = e instanceof Error ? e.message : e; + + res.status(500).json({ jsonrpc: '2.0', error: { - code, - message: 'unauthorized', - data: e + code: ERROR_CODES[errorMessage] ? ERROR_CODES[errorMessage] : -32603, + message: errorMessage }, id }); } - -export function rpcSuccess(res: Response, result: string, id: string | number) { - res.json({ - jsonrpc: '2.0', - result, - id - }); -} diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index 556567ef..0b783429 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -21,11 +21,11 @@ class VotesReport { const proposal = await fetchProposal(this.id); if (!proposal) { - return Promise.reject('proposal_not_found'); + return Promise.reject('PROPOSAL_NOT_FOUND'); } if (proposal.state !== 'closed') { - return Promise.reject('proposal_not_closed'); + return Promise.reject('PROPOSAL_NOT_CLOSED'); } if (!this.cachedFile()) { diff --git a/src/rpc.ts b/src/rpc.ts index 14da701e..d7a5c6f3 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -1,5 +1,5 @@ import express from 'express'; -import { rpcError, rpcSuccess } from './helpers/utils'; +import { rpcError } from './helpers/utils'; import VotesReport from './helpers/votesReport'; const router = express.Router(); @@ -18,14 +18,14 @@ router.post('/votes/:id', async (req, res) => { votesReport .generate() .then(() => { - return rpcSuccess(res, 'pending_generation', id); + return rpcError(res, 'PENDING_GENERATION', id); }) .catch(e => { - return rpcError(res, 500, e, id); + return rpcError(res, e, id); }); } catch (e) { console.log(e); - return rpcError(res, 500, e, id); + return rpcError(res, 'INTERNAL_ERROR', id); } }); From e7174fa1f9122aaf3898b5c6ce24ca81d9e94695 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 19:35:56 +0400 Subject: [PATCH 004/103] chore: rename file to reflect its purpose --- src/{rpc.ts => api.ts} | 0 src/index.ts | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/{rpc.ts => api.ts} (100%) diff --git a/src/rpc.ts b/src/api.ts similarity index 100% rename from src/rpc.ts rename to src/api.ts diff --git a/src/index.ts b/src/index.ts index 756c3023..5bc93af8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,13 +2,13 @@ import 'dotenv/config'; import express from 'express'; import compression from 'compression'; import cors from 'cors'; -import rpc from './rpc'; +import api from './api'; const app = express(); const PORT = process.env.PORT || 3000; app.use(cors({ maxAge: 86400 })); app.use(compression()); -app.use('/', rpc); +app.use('/', api); app.listen(PORT, () => console.log(`Listening at http://localhost:${PORT}`)); From a757ee638db43b2dcadf8290bd1e3f951fc3089d Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 19:37:39 +0400 Subject: [PATCH 005/103] fix: fix missing new line in CSV file --- src/helpers/votesReport.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index 0b783429..18d38923 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -46,7 +46,7 @@ class VotesReport { 'author_ipfs_hash' ]; - appendFileSync(this.path, `${headers.join(',')}\n`); + appendFileSync(this.path, headers.join(',')); return this.#saveVotes(); }; @@ -85,7 +85,7 @@ class VotesReport { page++; } - appendFileSync(this.path, newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')); + appendFileSync(this.path, `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}`); votes = newVotes; } while (resultsSize === pageSize); From ed221dcaf8c4993ddf860a4c68614ea934857c2c Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 21:49:44 +0400 Subject: [PATCH 006/103] fix: fix choices columns for votes with multiple choices --- src/helpers/snapshot.ts | 5 ++-- src/helpers/votesReport.ts | 59 ++++++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts index ef93a531..321fd8e4 100644 --- a/src/helpers/snapshot.ts +++ b/src/helpers/snapshot.ts @@ -3,12 +3,12 @@ import { gql, ApolloClient, InMemoryCache, HttpLink } from '@apollo/client/core' export type Proposal = { id: string; state: string; + choices: string[]; }; export type Vote = { ipfs: string; voter: string; - choice: any[] | any; - choices?: any[]; + choice: Record | number; vp: number; reason: string; created: number; @@ -31,6 +31,7 @@ const PROPOSAL_QUERY = gql` proposal(id: $id) { id state + choices } } `; diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index 18d38923..c05cc6b5 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -36,28 +36,17 @@ class VotesReport { }; #generateCachedFile = (proposal: Proposal) => { - const headers = [ - 'address', - 'choice', - // ...proposal.choices.map((choice, index) => `choice.${index + 1}`), - 'voting_power', - 'timestamp', - 'date_utc', - 'author_ipfs_hash' - ]; - - appendFileSync(this.path, headers.join(',')); - - return this.#saveVotes(); + return this.#saveVotes(proposal); }; - #saveVotes = async () => { + #saveVotes = async (proposal: Proposal) => { let votes: Vote[] = []; let page = 0; let createdPivot = 0; const pageSize = 1000; let resultsSize = 0; const maxPage = 5; + let headersAppended = false; do { let newVotes = await fetchVotes(this.id, { @@ -69,6 +58,22 @@ class VotesReport { }); resultsSize = newVotes.length; + if (!headersAppended) { + const headers = [ + 'address', + newVotes.length === 0 || typeof newVotes[0].choice === 'number' + ? 'choice' + : proposal.choices.map((_choice, index) => `choice.${index + 1}`), + 'voting_power', + 'timestamp', + 'author_ipfs_hash' + ].flat(); + + appendFileSync(this.path, headers.join(',')); + + headersAppended = true; + } + if (page === 0 && createdPivot > 0) { // Loosely assuming that there will never be more than 1000 duplicates const existingIpfs = votes.slice(-pageSize).map(vote => vote.ipfs); @@ -85,7 +90,10 @@ class VotesReport { page++; } - appendFileSync(this.path, `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}`); + appendFileSync( + this.path, + `\n${newVotes.map(vote => this.#formatCsvLine(vote, proposal)).join('\n')}` + ); votes = newVotes; } while (resultsSize === pageSize); @@ -93,15 +101,18 @@ class VotesReport { return this.path; }; - #formatCsvLine = (vote: Vote) => { - return [ - vote.voter, - vote.choice, - vote.vp, - vote.created, - `"${new Date(vote.created * 1e3).toUTCString()}"`, - vote.ipfs - ].join(','); + #formatCsvLine = (vote: Vote, proposal: Proposal) => { + let choices: Vote['choice'][] = []; + if (typeof vote.choice !== 'number') { + choices = Array.from({ length: proposal.choices.length }); + for (const [key, value] of Object.entries(vote.choice)) { + choices[parseInt(key) - 1] = value; + } + } else { + choices.push(vote.choice); + } + + return [vote.voter, choices, vote.vp, vote.created, vote.ipfs].flat().join(','); }; } From 1a8150b158d2b2f130cc55390acb38e3c549dcbb Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 22:19:59 +0400 Subject: [PATCH 007/103] refactor: avoid passing `proposal` object --- src/helpers/votesReport.ts | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index c05cc6b5..95b696af 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -7,6 +7,7 @@ const CACHE_PATH = `${__dirname}/../../cache`; class VotesReport { id: string; path: string; + proposal?: Proposal; constructor(id: string) { this.id = id; @@ -18,28 +19,28 @@ class VotesReport { }; generate = async () => { - const proposal = await fetchProposal(this.id); + this.proposal = await fetchProposal(this.id); - if (!proposal) { + if (!this.proposal) { return Promise.reject('PROPOSAL_NOT_FOUND'); } - if (proposal.state !== 'closed') { + if (this.proposal.state !== 'closed') { return Promise.reject('PROPOSAL_NOT_CLOSED'); } if (!this.cachedFile()) { - this.#generateCachedFile(proposal); + this.#generateCachedFile(); } return Promise.resolve(); }; - #generateCachedFile = (proposal: Proposal) => { - return this.#saveVotes(proposal); + #generateCachedFile = () => { + return this.#saveVotes(); }; - #saveVotes = async (proposal: Proposal) => { + #saveVotes = async () => { let votes: Vote[] = []; let page = 0; let createdPivot = 0; @@ -63,7 +64,7 @@ class VotesReport { 'address', newVotes.length === 0 || typeof newVotes[0].choice === 'number' ? 'choice' - : proposal.choices.map((_choice, index) => `choice.${index + 1}`), + : this.proposal && this.proposal.choices.map((_choice, index) => `choice.${index + 1}`), 'voting_power', 'timestamp', 'author_ipfs_hash' @@ -90,10 +91,7 @@ class VotesReport { page++; } - appendFileSync( - this.path, - `\n${newVotes.map(vote => this.#formatCsvLine(vote, proposal)).join('\n')}` - ); + appendFileSync(this.path, `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}`); votes = newVotes; } while (resultsSize === pageSize); @@ -101,10 +99,11 @@ class VotesReport { return this.path; }; - #formatCsvLine = (vote: Vote, proposal: Proposal) => { + #formatCsvLine = (vote: Vote) => { let choices: Vote['choice'][] = []; - if (typeof vote.choice !== 'number') { - choices = Array.from({ length: proposal.choices.length }); + + if (typeof vote.choice !== 'number' && this.proposal) { + choices = Array.from({ length: this.proposal.choices.length }); for (const [key, value] of Object.entries(vote.choice)) { choices[parseInt(key) - 1] = value; } From 2c0fef40fb34f2960bb7ce3c63ff7047181c21a5 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 22:24:53 +0400 Subject: [PATCH 008/103] fix: use different name for incomplete file --- src/helpers/votesReport.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index 95b696af..a166795f 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -1,4 +1,4 @@ -import { existsSync, appendFileSync } from 'fs'; +import { existsSync, appendFileSync, renameSync } from 'fs'; import { fetchProposal, fetchVotes } from './snapshot'; import type { Proposal, Vote } from './snapshot'; @@ -48,6 +48,7 @@ class VotesReport { let resultsSize = 0; const maxPage = 5; let headersAppended = false; + const tempPath = `${this.path}.pending`; do { let newVotes = await fetchVotes(this.id, { @@ -70,7 +71,7 @@ class VotesReport { 'author_ipfs_hash' ].flat(); - appendFileSync(this.path, headers.join(',')); + appendFileSync(tempPath, headers.join(',')); headersAppended = true; } @@ -91,11 +92,13 @@ class VotesReport { page++; } - appendFileSync(this.path, `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}`); + appendFileSync(tempPath, `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}`); votes = newVotes; } while (resultsSize === pageSize); + renameSync(tempPath, this.path); + return this.path; }; From 474b2504d1b30cb095f4c7361926408b436b7816 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Apr 2023 22:37:14 +0400 Subject: [PATCH 009/103] fix: prevent race condition on file generation --- src/helpers/votesReport.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index a166795f..4d4a74d1 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -7,11 +7,13 @@ const CACHE_PATH = `${__dirname}/../../cache`; class VotesReport { id: string; path: string; + tempPath: string; proposal?: Proposal; constructor(id: string) { this.id = id; this.path = `${CACHE_PATH}/snapshot-votes-report-${this.id}.csv`; + this.tempPath = `${this.path}.pending`; } cachedFile = () => { @@ -19,6 +21,10 @@ class VotesReport { }; generate = async () => { + if (existsSync(this.tempPath)) { + return Promise.reject('PENDING_GENERATION'); + } + this.proposal = await fetchProposal(this.id); if (!this.proposal) { @@ -37,6 +43,9 @@ class VotesReport { }; #generateCachedFile = () => { + // Touch file to prevent race condition allowing file generation + // to be run multiple times + appendFileSync(this.tempPath, ''); return this.#saveVotes(); }; @@ -48,7 +57,6 @@ class VotesReport { let resultsSize = 0; const maxPage = 5; let headersAppended = false; - const tempPath = `${this.path}.pending`; do { let newVotes = await fetchVotes(this.id, { @@ -71,7 +79,7 @@ class VotesReport { 'author_ipfs_hash' ].flat(); - appendFileSync(tempPath, headers.join(',')); + appendFileSync(this.tempPath, headers.join(',')); headersAppended = true; } @@ -92,12 +100,15 @@ class VotesReport { page++; } - appendFileSync(tempPath, `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}`); + appendFileSync( + this.tempPath, + `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}` + ); votes = newVotes; } while (resultsSize === pageSize); - renameSync(tempPath, this.path); + renameSync(this.tempPath, this.path); return this.path; }; From 07fe2822ca07c8578e29f3d32b399c5d522b9f30 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Apr 2023 13:14:55 +0400 Subject: [PATCH 010/103] feat: use AWS as cached file storage --- .env.example | 3 + .gitignore | 1 - package.json | 1 + src/api.ts | 2 +- src/helpers/aws.ts | 56 +++ src/helpers/votesReport.ts | 35 +- yarn.lock | 967 ++++++++++++++++++++++++++++++++++++- 7 files changed, 1036 insertions(+), 29 deletions(-) create mode 100644 src/helpers/aws.ts diff --git a/.env.example b/.env.example index f734db7e..1e92c2f7 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,4 @@ HUB_URL=https://hub.snapshot.org +AWS_REGION= +AWS_ENDPOINT= +AWS_BUCKET_NAME= diff --git a/.gitignore b/.gitignore index ef574057..075750ec 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ dist build .env coverage -cache # Remove some common IDE working directories .idea diff --git a/package.json b/package.json index 10ef0762..8f5a1c6b 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "prettier": "@snapshot-labs/prettier-config", "dependencies": { "@apollo/client": "^3.7.12", + "@aws-sdk/client-s3": "^3.316.0", "compression": "^1.7.4", "cors": "^2.8.5", "express": "^4.18.2", diff --git a/src/api.ts b/src/api.ts index d7a5c6f3..f8f719bd 100644 --- a/src/api.ts +++ b/src/api.ts @@ -11,7 +11,7 @@ router.post('/votes/:id', async (req, res) => { try { const file = votesReport.cachedFile(); - if (file) { + if (typeof file === 'string') { return res.download(file); } diff --git a/src/helpers/aws.ts b/src/helpers/aws.ts new file mode 100644 index 00000000..0ca1659f --- /dev/null +++ b/src/helpers/aws.ts @@ -0,0 +1,56 @@ +import { S3 } from '@aws-sdk/client-s3'; +import type { Readable } from 'stream'; + +let client: S3; +const region = process.env.AWS_REGION; +const endpoint = process.env.AWS_ENDPOINT || undefined; +if (region) client = new S3({ region, endpoint }); +const dir = 'sidekiq'; + +async function streamToString(stream: Readable): Promise { + return await new Promise((resolve, reject) => { + const chunks: Uint8Array[] = []; + stream.on('data', chunk => chunks.push(chunk)); + stream.on('error', reject); + stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8'))); + }); +} + +export async function set(key: string, value: string) { + try { + return await client.putObject({ + Bucket: process.env.AWS_BUCKET_NAME, + Key: `public/${dir}/${key}`, + Body: value, + ContentType: 'text/csv; charset=utf-8' + }); + } catch (e) { + console.log('Store cache failed', e); + throw e; + } +} + +export async function get(key: string) { + try { + const { Body } = await client.getObject({ + Bucket: process.env.AWS_BUCKET_NAME, + Key: `public/${dir}/${key}` + }); + const str = await streamToString(Body as Readable); + return str; + } catch (e) { + return false; + } +} + +export async function exist(key: string) { + try { + await client.headObject({ + Bucket: process.env.AWS_BUCKET_NAME, + Key: `public/${dir}/${key}` + }); + return true; + } catch (e) { + return false; + } +} diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index 4d4a74d1..fc7cd8cd 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -1,30 +1,22 @@ -import { existsSync, appendFileSync, renameSync } from 'fs'; import { fetchProposal, fetchVotes } from './snapshot'; +import { set, get, exist } from './aws'; import type { Proposal, Vote } from './snapshot'; -const CACHE_PATH = `${__dirname}/../../cache`; - class VotesReport { id: string; - path: string; - tempPath: string; + filename: string; proposal?: Proposal; constructor(id: string) { this.id = id; - this.path = `${CACHE_PATH}/snapshot-votes-report-${this.id}.csv`; - this.tempPath = `${this.path}.pending`; + this.filename = `snapshot-votes-report-${this.id}.csv`; } cachedFile = () => { - return existsSync(this.path) && this.path; + return get(this.filename); }; generate = async () => { - if (existsSync(this.tempPath)) { - return Promise.reject('PENDING_GENERATION'); - } - this.proposal = await fetchProposal(this.id); if (!this.proposal) { @@ -35,17 +27,14 @@ class VotesReport { return Promise.reject('PROPOSAL_NOT_CLOSED'); } - if (!this.cachedFile()) { + if (!exist(this.filename)) { this.#generateCachedFile(); } - return Promise.resolve(); + return true; }; #generateCachedFile = () => { - // Touch file to prevent race condition allowing file generation - // to be run multiple times - appendFileSync(this.tempPath, ''); return this.#saveVotes(); }; @@ -57,6 +46,7 @@ class VotesReport { let resultsSize = 0; const maxPage = 5; let headersAppended = false; + let content = ''; do { let newVotes = await fetchVotes(this.id, { @@ -79,7 +69,7 @@ class VotesReport { 'author_ipfs_hash' ].flat(); - appendFileSync(this.tempPath, headers.join(',')); + content += headers.join(','); headersAppended = true; } @@ -100,17 +90,12 @@ class VotesReport { page++; } - appendFileSync( - this.tempPath, - `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}` - ); + content += `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}`; votes = newVotes; } while (resultsSize === pageSize); - renameSync(this.tempPath, this.path); - - return this.path; + return set(this.filename, content); }; #formatCsvLine = (vote: Vote) => { diff --git a/yarn.lock b/yarn.lock index 26e0e10b..d837b75f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,6 +21,947 @@ tslib "^2.3.0" zen-observable-ts "^1.2.5" +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" + integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" + integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" + integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" + integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" + integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/sha256-js" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" + integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" + integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz#0da2d29b823daa03b7c1f0b43de1f030583b4f51" + integrity sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/chunked-blob-reader@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.310.0.tgz#2ada1b024a2745c2fe7e869606fab781325f981e" + integrity sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/client-s3@^3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.316.0.tgz#29aba140acc3466b17e1b2dea61afd2aaf10d788" + integrity sha512-nmlvXf7c1Nz9VR/VlplgsZqPqe7eg5RYuuIb70rX/4Joe5x98sJqz72hyLblwQTB47lwPLK+qvHps9aVOY2QhA== + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.316.0" + "@aws-sdk/config-resolver" "3.310.0" + "@aws-sdk/credential-provider-node" "3.316.0" + "@aws-sdk/eventstream-serde-browser" "3.310.0" + "@aws-sdk/eventstream-serde-config-resolver" "3.310.0" + "@aws-sdk/eventstream-serde-node" "3.310.0" + "@aws-sdk/fetch-http-handler" "3.310.0" + "@aws-sdk/hash-blob-browser" "3.310.0" + "@aws-sdk/hash-node" "3.310.0" + "@aws-sdk/hash-stream-node" "3.310.0" + "@aws-sdk/invalid-dependency" "3.310.0" + "@aws-sdk/md5-js" "3.310.0" + "@aws-sdk/middleware-bucket-endpoint" "3.310.0" + "@aws-sdk/middleware-content-length" "3.310.0" + "@aws-sdk/middleware-endpoint" "3.310.0" + "@aws-sdk/middleware-expect-continue" "3.310.0" + "@aws-sdk/middleware-flexible-checksums" "3.310.0" + "@aws-sdk/middleware-host-header" "3.310.0" + "@aws-sdk/middleware-location-constraint" "3.310.0" + "@aws-sdk/middleware-logger" "3.310.0" + "@aws-sdk/middleware-recursion-detection" "3.310.0" + "@aws-sdk/middleware-retry" "3.310.0" + "@aws-sdk/middleware-sdk-s3" "3.310.0" + "@aws-sdk/middleware-serde" "3.310.0" + "@aws-sdk/middleware-signing" "3.310.0" + "@aws-sdk/middleware-ssec" "3.310.0" + "@aws-sdk/middleware-stack" "3.310.0" + "@aws-sdk/middleware-user-agent" "3.310.0" + "@aws-sdk/node-config-provider" "3.310.0" + "@aws-sdk/node-http-handler" "3.310.0" + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/signature-v4-multi-region" "3.310.0" + "@aws-sdk/smithy-client" "3.316.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/url-parser" "3.310.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.316.0" + "@aws-sdk/util-defaults-mode-node" "3.316.0" + "@aws-sdk/util-endpoints" "3.310.0" + "@aws-sdk/util-retry" "3.310.0" + "@aws-sdk/util-stream-browser" "3.310.0" + "@aws-sdk/util-stream-node" "3.310.0" + "@aws-sdk/util-user-agent-browser" "3.310.0" + "@aws-sdk/util-user-agent-node" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + "@aws-sdk/util-waiter" "3.310.0" + "@aws-sdk/xml-builder" "3.310.0" + fast-xml-parser "4.1.2" + tslib "^2.5.0" + +"@aws-sdk/client-sso-oidc@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.316.0.tgz#b9de52249ed2503d54a5647232c2faae75a9dfd7" + integrity sha512-e2fvC7o42YV+LcZYfXCcvBn4L7NM9oNccnZ7T+pS6SFpHZlaqkw4uuQMRE6iUAof+Id7Mt7xDrz1x2yGlP+8GA== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.310.0" + "@aws-sdk/fetch-http-handler" "3.310.0" + "@aws-sdk/hash-node" "3.310.0" + "@aws-sdk/invalid-dependency" "3.310.0" + "@aws-sdk/middleware-content-length" "3.310.0" + "@aws-sdk/middleware-endpoint" "3.310.0" + "@aws-sdk/middleware-host-header" "3.310.0" + "@aws-sdk/middleware-logger" "3.310.0" + "@aws-sdk/middleware-recursion-detection" "3.310.0" + "@aws-sdk/middleware-retry" "3.310.0" + "@aws-sdk/middleware-serde" "3.310.0" + "@aws-sdk/middleware-stack" "3.310.0" + "@aws-sdk/middleware-user-agent" "3.310.0" + "@aws-sdk/node-config-provider" "3.310.0" + "@aws-sdk/node-http-handler" "3.310.0" + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/smithy-client" "3.316.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/url-parser" "3.310.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.316.0" + "@aws-sdk/util-defaults-mode-node" "3.316.0" + "@aws-sdk/util-endpoints" "3.310.0" + "@aws-sdk/util-retry" "3.310.0" + "@aws-sdk/util-user-agent-browser" "3.310.0" + "@aws-sdk/util-user-agent-node" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/client-sso@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.316.0.tgz#819a6d74b04d1a20175693f309befcaffe8cf128" + integrity sha512-wGXfIhR0lJGB8QTT0fwSwwklHePHxd2GW3IQt3trXnEYe0frmJ7vYRnVL5CSRKsikLDmaU7ll3SdsshMzQzo3w== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.310.0" + "@aws-sdk/fetch-http-handler" "3.310.0" + "@aws-sdk/hash-node" "3.310.0" + "@aws-sdk/invalid-dependency" "3.310.0" + "@aws-sdk/middleware-content-length" "3.310.0" + "@aws-sdk/middleware-endpoint" "3.310.0" + "@aws-sdk/middleware-host-header" "3.310.0" + "@aws-sdk/middleware-logger" "3.310.0" + "@aws-sdk/middleware-recursion-detection" "3.310.0" + "@aws-sdk/middleware-retry" "3.310.0" + "@aws-sdk/middleware-serde" "3.310.0" + "@aws-sdk/middleware-stack" "3.310.0" + "@aws-sdk/middleware-user-agent" "3.310.0" + "@aws-sdk/node-config-provider" "3.310.0" + "@aws-sdk/node-http-handler" "3.310.0" + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/smithy-client" "3.316.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/url-parser" "3.310.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.316.0" + "@aws-sdk/util-defaults-mode-node" "3.316.0" + "@aws-sdk/util-endpoints" "3.310.0" + "@aws-sdk/util-retry" "3.310.0" + "@aws-sdk/util-user-agent-browser" "3.310.0" + "@aws-sdk/util-user-agent-node" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/client-sts@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.316.0.tgz#7c660e8a9bedc3336a10dc4d526950678cba60aa" + integrity sha512-5SD59+DRVy1mKckGs/5J8OwWpRS3E5v4BX19XaX/s9JJ5Rw9aZd9DP4SZVpeNXztIPjkQSEzHgrUVlZFB1QJgg== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.310.0" + "@aws-sdk/credential-provider-node" "3.316.0" + "@aws-sdk/fetch-http-handler" "3.310.0" + "@aws-sdk/hash-node" "3.310.0" + "@aws-sdk/invalid-dependency" "3.310.0" + "@aws-sdk/middleware-content-length" "3.310.0" + "@aws-sdk/middleware-endpoint" "3.310.0" + "@aws-sdk/middleware-host-header" "3.310.0" + "@aws-sdk/middleware-logger" "3.310.0" + "@aws-sdk/middleware-recursion-detection" "3.310.0" + "@aws-sdk/middleware-retry" "3.310.0" + "@aws-sdk/middleware-sdk-sts" "3.310.0" + "@aws-sdk/middleware-serde" "3.310.0" + "@aws-sdk/middleware-signing" "3.310.0" + "@aws-sdk/middleware-stack" "3.310.0" + "@aws-sdk/middleware-user-agent" "3.310.0" + "@aws-sdk/node-config-provider" "3.310.0" + "@aws-sdk/node-http-handler" "3.310.0" + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/smithy-client" "3.316.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/url-parser" "3.310.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-body-length-browser" "3.310.0" + "@aws-sdk/util-body-length-node" "3.310.0" + "@aws-sdk/util-defaults-mode-browser" "3.316.0" + "@aws-sdk/util-defaults-mode-node" "3.316.0" + "@aws-sdk/util-endpoints" "3.310.0" + "@aws-sdk/util-retry" "3.310.0" + "@aws-sdk/util-user-agent-browser" "3.310.0" + "@aws-sdk/util-user-agent-node" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + fast-xml-parser "4.1.2" + tslib "^2.5.0" + +"@aws-sdk/config-resolver@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz#c02dce96546d5cd25551bc89907b27224e16ca7f" + integrity sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g== + dependencies: + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-config-provider" "3.310.0" + "@aws-sdk/util-middleware" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-env@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz#c52694fb276341db6ce4e816cf9ca90fa5830dad" + integrity sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A== + dependencies: + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-imds@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz#d8fb1223fee7e289a81e28177fe55dedf4d2745e" + integrity sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w== + dependencies: + "@aws-sdk/node-config-provider" "3.310.0" + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/url-parser" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-ini@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.316.0.tgz#0e5a33034a5d51e298a146fc94148ceb25002592" + integrity sha512-ZADkpdEjFCAXyzEpYbCRENlZ/AQEwevWdPd2yshjNo7xvOcepv4pPIBpYd8h9LvRafSLGA7zlWDz84hkIt+HKA== + dependencies: + "@aws-sdk/credential-provider-env" "3.310.0" + "@aws-sdk/credential-provider-imds" "3.310.0" + "@aws-sdk/credential-provider-process" "3.310.0" + "@aws-sdk/credential-provider-sso" "3.316.0" + "@aws-sdk/credential-provider-web-identity" "3.310.0" + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/shared-ini-file-loader" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-node@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.316.0.tgz#b74575d9710d091c895e696fcb9a5c39235511cd" + integrity sha512-oE1LTXP8XZp4bT8LhBeolMRiz0RwnmHDC2XpUmWO8LTmbDNrQO0mVzxEvXDLeKaN5BIFIJqNFlMgjWUMa9Kwcw== + dependencies: + "@aws-sdk/credential-provider-env" "3.310.0" + "@aws-sdk/credential-provider-imds" "3.310.0" + "@aws-sdk/credential-provider-ini" "3.316.0" + "@aws-sdk/credential-provider-process" "3.310.0" + "@aws-sdk/credential-provider-sso" "3.316.0" + "@aws-sdk/credential-provider-web-identity" "3.310.0" + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/shared-ini-file-loader" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-process@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz#0b2ee77f0c48262442d2768044d72332a4ad8884" + integrity sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA== + dependencies: + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/shared-ini-file-loader" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-sso@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.316.0.tgz#56a0d773dc281501336077aceb1a92ba6a881e6e" + integrity sha512-8/O2twlsoV1bDkZ9jd7JCMWsftfyoTyRT1UYscsKZGUDEgZRAxRkzS3GLYuLXEWNuxb1OB9rYk/cEJoxwy7T9g== + dependencies: + "@aws-sdk/client-sso" "3.316.0" + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/shared-ini-file-loader" "3.310.0" + "@aws-sdk/token-providers" "3.316.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-web-identity@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz#c9fa09b0068027e58d31178e3fa06bf4e9ae9d36" + integrity sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw== + dependencies: + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-codec@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.310.0.tgz#a5def3633f7ccdc3d477fd0b05e2eb31c5598ed9" + integrity sha512-clIeSgWbZbxwtsxZ/yoedNM0/kJFSIjjHPikuDGhxhqc+vP6TN3oYyVMFrYwFaTFhk2+S5wZcWYMw8Op1pWo+A== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-hex-encoding" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-serde-browser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.310.0.tgz#02aef0262b5f740a1c8ffbdeb8459542f90c14dd" + integrity sha512-3S6ziuQVALgEyz0TANGtYDVeG8ArK4Y05mcgrs8qUTmsvlDIXX37cR/DvmVbNB76M4IrsZeSAIajL9644CywkA== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-serde-config-resolver@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.310.0.tgz#e4e2358f36b9eb6d37da0a0f0d3fc32da91ad6b4" + integrity sha512-8s1Qdn9STj+sV75nUp9yt0W6fHS4BZ2jTm4Z/1Pcbvh2Gqs0WjH5n2StS+pDW5Y9J/HSGBl0ogmUr5lC5bXFHg== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-serde-node@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.310.0.tgz#6e0fbc400bac677c77b946fd2a5cb00b57503c0e" + integrity sha512-kSnRomCgW43K9TmQYuwN9+AoYPnhyOKroanUMyZEzJk7rpCPMj4OzaUpXfDYOvznFNYn7NLaH6nHLJAr0VPlJA== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/eventstream-serde-universal@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.310.0.tgz#d0f95eaafb8fd09d9a21aec8f23b7f3cee2bb19a" + integrity sha512-Qyjt5k/waV5cDukpgT824ISZAz5U0pwzLz5ztR409u85AGNkF/9n7MS+LSyBUBSb0WJ5pUeSD47WBk+nLq9Nhw== + dependencies: + "@aws-sdk/eventstream-codec" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/fetch-http-handler@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz#f31006b7b3103683d72e177cd27d80354f7a37c4" + integrity sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/querystring-builder" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-base64" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/hash-blob-browser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.310.0.tgz#762a56ae655e3bcd0ba46bbc39e8b370b1067629" + integrity sha512-OoR8p0cbypToysLT0v3o2oyjy6+DKrY7GNCAzHOHJK9xmqXCt+DsjKoPeiY7o1sWX2aN6Plmvubj/zWxMKEn/A== + dependencies: + "@aws-sdk/chunked-blob-reader" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/hash-node@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz#4c1c89b9a2da3bb9783de84f0b762cc055b90d67" + integrity sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ== + dependencies: + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-buffer-from" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/hash-stream-node@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.310.0.tgz#3845d813a7de476c56fac492a50ffa8af265f120" + integrity sha512-ZoXdybNgvMz1Hl6k/e32xVL3jmG5p2IEk5mTtLfFEuskTJ74Z+VMYKkkF1whyy7KQfH83H+TQGnsGtlRCchQKw== + dependencies: + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/invalid-dependency@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz#b96da9b9f63b12d1c390f9a06eeb28840fcb5b3c" + integrity sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/is-array-buffer@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz#f87a79f1b858c88744f07e8d8d0a791df204017e" + integrity sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/md5-js@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.310.0.tgz#14e3d570d92808e68ccc0db8d7492ebdb93f15b5" + integrity sha512-x5sRBUrEfLWAS1EhwbbDQ7cXq6uvBxh3qR2XAsnGvFFceTeAadk7cVogWxlk3PC+OCeeym7c3/6Bv2HQ2f1YyQ== + dependencies: + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-bucket-endpoint@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.310.0.tgz#5dd9b028498a0492c3e773c0aca10d6ded929fc6" + integrity sha512-uJJfHI7v4AgbJZRLtyI8ap2QRWkBokGc3iyUoQ+dVNT3/CE2ZCu694A6W+H0dRqg79dIE+f9CRNdtLGa/Ehhvg== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-arn-parser" "3.310.0" + "@aws-sdk/util-config-provider" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-content-length@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz#cc9b6c25c10736cec41d0219c94b57cfdb4582a3" + integrity sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-endpoint@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz#d4bf8ac3cd4800af789d6bcb469b7e8cfa10badb" + integrity sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg== + dependencies: + "@aws-sdk/middleware-serde" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/url-parser" "3.310.0" + "@aws-sdk/util-middleware" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-expect-continue@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.310.0.tgz#0b5421d5fddb2c0ebf8e5c9c6122d01b159dad45" + integrity sha512-l3d1z2gt+gINJDnPSyu84IxfzjzPfCQrqC1sunw2cZGo/sXtEiq698Q3SiTcO2PGP4LBQAy2RHb5wVBJP708CQ== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-flexible-checksums@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.310.0.tgz#1bebffe42c4109e255716507b63dc964f84b16a5" + integrity sha512-5ndnLgzgGVpWkmHBAiYkagHqiSuow8q62J4J6E2PzaQ77+fm8W3nfdy7hK5trHokEyouCZdxT/XK/IRhgj/4PA== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/is-array-buffer" "3.310.0" + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-host-header@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz#bdd4fbffb58b331bda517df8340aa8b44ce55550" + integrity sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-location-constraint@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.310.0.tgz#6a24fa717bff47932d22071861c55421766ecca7" + integrity sha512-LFm0JTQWwTPWL/tZU2wsQTl8J5PpDEkXjEhaXVKamtyH0xhysRqd+0n92n65dc8oztAuQkb9xUbErGn5b6gsew== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-logger@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz#8cc6381f49ef867cae1364b8517f939629e4dd9d" + integrity sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-recursion-detection@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz#020c986ed8da751bd613fd84c8c8a805c89e0952" + integrity sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-retry@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz#12e95e962875d44af4acbdebe02db337a1ad5c35" + integrity sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/service-error-classification" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-middleware" "3.310.0" + "@aws-sdk/util-retry" "3.310.0" + tslib "^2.5.0" + uuid "^8.3.2" + +"@aws-sdk/middleware-sdk-s3@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.310.0.tgz#9f060e961ccc462ea5ca8c24cb0845d655b00d24" + integrity sha512-QK9x9g2ksg0hOjjYgqddeFcn5ctUEGdxJVu4OumPXceulefMcSO2jyH2qTybYSA93nqNQFdFmg5wQfvIRUWFCQ== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-arn-parser" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-sdk-sts@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz#2001b421f317404ca98d4a1cfea408b7a64c35f5" + integrity sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ== + dependencies: + "@aws-sdk/middleware-signing" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-serde@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz#e334031b66a1a155375ec901478b26570fbe1783" + integrity sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-signing@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz#bd62d5623c80f6318b0d738c44780875500c911a" + integrity sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ== + dependencies: + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/signature-v4" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-middleware" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-ssec@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.310.0.tgz#6a1da92cbc1734604295149c0d8cfed47f6e0fd3" + integrity sha512-CnEwNKVpd5bXnrCKPaePF8mWTA9ET21OMBb54y9b0fd8K02zoOcdBz4DWfh1SjFD4HkgCdja4egd8l2ivyvqmw== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-stack@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz#06c83963998fbdc83e99b67a7a138529312a6224" + integrity sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/middleware-user-agent@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.310.0.tgz#2aa3982cbc5e9c137024cec47914e86610ab0a09" + integrity sha512-x3IOwSwSbwKidlxRk3CNVHVUb06SRuaELxggCaR++QVI8NU6qD/l4VHXKVRvbTHiC/cYxXE/GaBDgQVpDR7V/g== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-endpoints" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/node-config-provider@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz#ba8fb41af2db0316291ba9002267627553ec65ac" + integrity sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng== + dependencies: + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/shared-ini-file-loader" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/node-http-handler@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.310.0.tgz#bd8e72c1c7cf4b48c2a21851f638ad5e63001787" + integrity sha512-irv9mbcM9xC2xYjArQF5SYmHBMu4ciMWtGsoHII1nRuFOl9FoT4ffTvEPuLlfC6pznzvKt9zvnm6xXj7gDChKg== + dependencies: + "@aws-sdk/abort-controller" "3.310.0" + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/querystring-builder" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/property-provider@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz#5fae8a4c11bda052afa9747d47b031f1c4f0f246" + integrity sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/protocol-http@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz#855c3314cba7ff3024a9a9701ca3c641691d997e" + integrity sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/querystring-builder@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz#5307ea52c3a4a1ae6818bbb6987cc6fce68b043f" + integrity sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A== + dependencies: + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-uri-escape" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/querystring-parser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz#438183927e0b06e7c2ee004a1681b8d37c22e104" + integrity sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/service-error-classification@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz#352c1db426dcf54a44393bc9a0607dde796b2abb" + integrity sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw== + +"@aws-sdk/shared-ini-file-loader@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz#07e9c8e8e8bb0de7ed19b8cea908c920a493c9c9" + integrity sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/signature-v4-multi-region@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.310.0.tgz#36eb96aa9170994ed1c5551952d2ec2d5e40c4c7" + integrity sha512-q8W+RIomTS/q85Ntgks/CoDElwqkC9+4OCicee5YznNHjQ4gtNWhUkYIyIRWRmXa/qx/AUreW9DM8FAecCOdng== + dependencies: + "@aws-sdk/protocol-http" "3.310.0" + "@aws-sdk/signature-v4" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/signature-v4@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz#ad26426d3f72fa18e6808a36f827beb72d12bf2d" + integrity sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q== + dependencies: + "@aws-sdk/is-array-buffer" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-hex-encoding" "3.310.0" + "@aws-sdk/util-middleware" "3.310.0" + "@aws-sdk/util-uri-escape" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/smithy-client@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.316.0.tgz#8ee751d7f396179ccf52d323eb34fa7d9508aeb9" + integrity sha512-6YXOKbRnXeS8r8RWzuL6JMBolDYM5Wa4fD/VY6x/wK78i2xErHOvqzHgyyeLI1MMw4uqyd4wRNJNWC9TMPduXw== + dependencies: + "@aws-sdk/middleware-stack" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/token-providers@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.316.0.tgz#353a5564ee3b551d1af50359eb8667e053b819e5" + integrity sha512-foJ2YmB8A/mtp52riO2zdmBgzA3IpASNgUhY9FZg1BKpGcjqLQDGYP+BY3BA0H7CFsMa4PCf13M5wWwn1onyBA== + dependencies: + "@aws-sdk/client-sso-oidc" "3.316.0" + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/shared-ini-file-loader" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/types@3.310.0", "@aws-sdk/types@^3.222.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.310.0.tgz#b83a0580feb38b58417abb8b4ed3eae1a0cb7bc1" + integrity sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/url-parser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz#928c9eac2e3d74c3c5db4c6e364a1de00185dcaa" + integrity sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw== + dependencies: + "@aws-sdk/querystring-parser" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-arn-parser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz#861ff8810851be52a320ec9e4786f15b5fc74fba" + integrity sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-base64@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz#d0fd49aff358c5a6e771d0001c63b1f97acbe34c" + integrity sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg== + dependencies: + "@aws-sdk/util-buffer-from" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-body-length-browser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz#3fca9d2f73c058edf1907e4a1d99a392fdd23eca" + integrity sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-body-length-node@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz#4846ae72834ab0636f29f89fc1878520f6543fed" + integrity sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-buffer-from@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz#7a72cb965984d3c6a7e256ae6cf1621f52e54a57" + integrity sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw== + dependencies: + "@aws-sdk/is-array-buffer" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-config-provider@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz#ff21f73d4774cfd7bd16ae56f905828600dda95f" + integrity sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-defaults-mode-browser@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.316.0.tgz#053d8061e51dbb8e6fd009130942c09de3ed18f2" + integrity sha512-6FSqLhYmaihtH2n1s4b2rlLW0ABU8N6VZIfzLfe2ING4PF0MzfaMMhnTFUHVXfKCVGoR8yP6iyFTRCyHGVEL1w== + dependencies: + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/types" "3.310.0" + bowser "^2.11.0" + tslib "^2.5.0" + +"@aws-sdk/util-defaults-mode-node@3.316.0": + version "3.316.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.316.0.tgz#5649af63804a552cd53609e4e16a63be2b3b8b3e" + integrity sha512-dkYy10hdjPSScXXvnjGpZpnJxllkb6ICHgLMwZ4JczLHhPM12T/4PQ758YN8HS+muiYDGX1Bl2z1jd/bMcewBQ== + dependencies: + "@aws-sdk/config-resolver" "3.310.0" + "@aws-sdk/credential-provider-imds" "3.310.0" + "@aws-sdk/node-config-provider" "3.310.0" + "@aws-sdk/property-provider" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-endpoints@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.310.0.tgz#fea8757038b62d49dacd653061ba04a2ea102a36" + integrity sha512-zG+/d/O5KPmAaeOMPd6bW1abifdT0H03f42keLjYEoRZzYtHPC5DuPE0UayiWGckI6BCDgy0sRKXCYS49UNFaQ== + dependencies: + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-hex-encoding@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz#19294c78986c90ae33f04491487863dc1d33bd87" + integrity sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz#b071baf050301adee89051032bd4139bba32cc40" + integrity sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-middleware@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz#713c5bfa296f4cf707150a0a1e911afd50dcf939" + integrity sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-retry@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz#4cdc35e2dfdacf2d928ab474ba8b67bbadd6be3c" + integrity sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA== + dependencies: + "@aws-sdk/service-error-classification" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-stream-browser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-browser/-/util-stream-browser-3.310.0.tgz#223e60f7711f7a20fdc944e1b72c8dd4c1da28cf" + integrity sha512-bysXZHwFwvbqOTCScCdCnoLk1K3GCo0HRIYEZuL7O7MHrQmfaYRXcaft/p22+GUv9VeFXS/eJJZ5r4u32az94w== + dependencies: + "@aws-sdk/fetch-http-handler" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/util-hex-encoding" "3.310.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-stream-node@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-node/-/util-stream-node-3.310.0.tgz#088c59b7f346669f501ce0ad08cda7e88de0ba1f" + integrity sha512-hueAXFK0GVvnfYFgqbF7587xZfMZff5jlIFZOHqx7XVU7bl7qrRUCnphHk8H6yZ7RoQbDPcfmHJgtEoAJg1T1Q== + dependencies: + "@aws-sdk/node-http-handler" "3.310.0" + "@aws-sdk/types" "3.310.0" + "@aws-sdk/util-buffer-from" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-uri-escape@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz#9f942f09a715d8278875013a416295746b6085ba" + integrity sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-browser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz#48d463a93351b78b678df324f3518a9798029c44" + integrity sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw== + dependencies: + "@aws-sdk/types" "3.310.0" + bowser "^2.11.0" + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-node@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz#ebefbedc5a4759adc958885741628ec0de1ab197" + integrity sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg== + dependencies: + "@aws-sdk/node-config-provider" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz#4a7b9dcebb88e830d3811aeb21e9a6df4273afb4" + integrity sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA== + dependencies: + "@aws-sdk/util-buffer-from" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-waiter@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.310.0.tgz#a410739cfc637af9ccea21de079d00652e9b8363" + integrity sha512-AV5j3guH/Y4REu+Qh3eXQU9igljHuU4XjX2sADAgf54C0kkhcCCkkiuzk3IsX089nyJCqIcj5idbjdvpnH88Vw== + dependencies: + "@aws-sdk/abort-controller" "3.310.0" + "@aws-sdk/types" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/xml-builder@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz#f0236f2103b438d16117e0939a6305ad69b7ff76" + integrity sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw== + dependencies: + tslib "^2.5.0" + "@babel/code-frame@^7.0.0": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" @@ -551,6 +1492,11 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1114,6 +2060,13 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-xml-parser@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz#5a98c18238d28a57bbdfa9fe4cda01211fff8f4a" + integrity sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg== + dependencies: + strnum "^1.0.5" + fastq@^1.6.0: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" @@ -2155,6 +3108,11 @@ strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2246,12 +3204,12 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.3.0: +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== @@ -2327,6 +3285,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + 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" From 399c8d44158868ec8c145070ed947d84c9440745 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Apr 2023 19:15:10 +0400 Subject: [PATCH 011/103] feat: separate cache fetcher and generator in API endpoint --- .env.example | 3 ++- src/api.ts | 21 ++++++++++++++++- src/helpers/aws.ts | 47 +++++++++++++++----------------------- src/helpers/votesReport.ts | 16 +++++-------- 4 files changed, 47 insertions(+), 40 deletions(-) diff --git a/.env.example b/.env.example index 1e92c2f7..609a8f3a 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ HUB_URL=https://hub.snapshot.org +AWS_ACCESS_KEY_ID= AWS_REGION= -AWS_ENDPOINT= +AWS_SECRET_ACCESS_KEY= AWS_BUCKET_NAME= diff --git a/src/api.ts b/src/api.ts index f8f719bd..28c35f29 100644 --- a/src/api.ts +++ b/src/api.ts @@ -4,6 +4,25 @@ import VotesReport from './helpers/votesReport'; const router = express.Router(); +router.post('/votes/generate/:id', (req, res) => { + const { id } = req.params; + const votesReport = new VotesReport(id); + + try { + votesReport + .generateCacheFile() + .then(() => { + return rpcError(res, 'PENDING_GENERATION', id); + }) + .catch(e => { + return rpcError(res, e, id); + }); + } catch (e) { + console.log(e); + return rpcError(res, 'INTERNAL_ERROR', id); + } +}); + router.post('/votes/:id', async (req, res) => { const { id } = req.params; const votesReport = new VotesReport(id); @@ -16,7 +35,7 @@ router.post('/votes/:id', async (req, res) => { } votesReport - .generate() + .canBeCached() .then(() => { return rpcError(res, 'PENDING_GENERATION', id); }) diff --git a/src/helpers/aws.ts b/src/helpers/aws.ts index 0ca1659f..a6dd4960 100644 --- a/src/helpers/aws.ts +++ b/src/helpers/aws.ts @@ -1,55 +1,46 @@ -import { S3 } from '@aws-sdk/client-s3'; -import type { Readable } from 'stream'; +import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; -let client: S3; +let client: S3Client; const region = process.env.AWS_REGION; -const endpoint = process.env.AWS_ENDPOINT || undefined; -if (region) client = new S3({ region, endpoint }); -const dir = 'sidekiq'; +const accessKeyId = process.env.AWS_ACCESS_KEY_ID; +const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; -async function streamToString(stream: Readable): Promise { - return await new Promise((resolve, reject) => { - const chunks: Uint8Array[] = []; - stream.on('data', chunk => chunks.push(chunk)); - stream.on('error', reject); - stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8'))); +if (region && accessKeyId && secretAccessKey) { + client = new S3Client({ + region, + credentials: { + secretAccessKey, + accessKeyId + } }); } +const dir = 'sidekiq'; export async function set(key: string, value: string) { try { - return await client.putObject({ + const command = new PutObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, Key: `public/${dir}/${key}`, Body: value, ContentType: 'text/csv; charset=utf-8' }); + + return await client.send(command); } catch (e) { console.log('Store cache failed', e); - throw e; + throw 'Unable to access storage'; } } export async function get(key: string) { try { - const { Body } = await client.getObject({ + const command = new GetObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, Key: `public/${dir}/${key}` }); - const str = await streamToString(Body as Readable); - return str; - } catch (e) { - return false; - } -} + const response = await client.send(command); -export async function exist(key: string) { - try { - await client.headObject({ - Bucket: process.env.AWS_BUCKET_NAME, - Key: `public/${dir}/${key}` - }); - return true; + return response.Body?.transformToString() || false; } catch (e) { return false; } diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index fc7cd8cd..849f7cea 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -1,5 +1,5 @@ +import { set, get } from './aws'; import { fetchProposal, fetchVotes } from './snapshot'; -import { set, get, exist } from './aws'; import type { Proposal, Vote } from './snapshot'; class VotesReport { @@ -16,7 +16,7 @@ class VotesReport { return get(this.filename); }; - generate = async () => { + canBeCached = async () => { this.proposal = await fetchProposal(this.id); if (!this.proposal) { @@ -27,18 +27,14 @@ class VotesReport { return Promise.reject('PROPOSAL_NOT_CLOSED'); } - if (!exist(this.filename)) { - this.#generateCachedFile(); - } - return true; }; - #generateCachedFile = () => { - return this.#saveVotes(); - }; + generateCacheFile = async () => { + if (!(await this.canBeCached())) { + return false; + } - #saveVotes = async () => { let votes: Vote[] = []; let page = 0; let createdPivot = 0; From f7e88091a32a873b2f92a56e2a8b6f9ae11e1bb3 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Fri, 21 Apr 2023 13:01:24 +0400 Subject: [PATCH 012/103] fix: do not return an error code on cache generation success --- src/api.ts | 18 +++++------------- src/helpers/utils.ts | 8 ++++++++ src/helpers/votesReport.ts | 4 +--- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/api.ts b/src/api.ts index 28c35f29..4ad0d595 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,5 +1,5 @@ import express from 'express'; -import { rpcError } from './helpers/utils'; +import { rpcError, rpcSuccess } from './helpers/utils'; import VotesReport from './helpers/votesReport'; const router = express.Router(); @@ -11,12 +11,8 @@ router.post('/votes/generate/:id', (req, res) => { try { votesReport .generateCacheFile() - .then(() => { - return rpcError(res, 'PENDING_GENERATION', id); - }) - .catch(e => { - return rpcError(res, e, id); - }); + .then(() => rpcSuccess(res, 'Cache file generated', id)) + .catch(e => rpcError(res, e, id)); } catch (e) { console.log(e); return rpcError(res, 'INTERNAL_ERROR', id); @@ -36,12 +32,8 @@ router.post('/votes/:id', async (req, res) => { votesReport .canBeCached() - .then(() => { - return rpcError(res, 'PENDING_GENERATION', id); - }) - .catch(e => { - return rpcError(res, e, id); - }); + .then(() => rpcError(res, 'PENDING_GENERATION', id)) + .catch(e => rpcError(res, e, id)); } catch (e) { console.log(e); return rpcError(res, 'INTERNAL_ERROR', id); diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index e4adbba1..11ca51cb 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -6,6 +6,14 @@ const ERROR_CODES: Record = { PENDING_GENERATION: -40010 }; +export function rpcSuccess(res: Response, result: string, id: string | number) { + res.json({ + jsonrpc: '2.0', + result, + id + }); +} + export function rpcError(res: Response, e: Error | string, id: string | number) { const errorMessage = e instanceof Error ? e.message : e; diff --git a/src/helpers/votesReport.ts b/src/helpers/votesReport.ts index 849f7cea..a4b5ca93 100644 --- a/src/helpers/votesReport.ts +++ b/src/helpers/votesReport.ts @@ -31,9 +31,7 @@ class VotesReport { }; generateCacheFile = async () => { - if (!(await this.canBeCached())) { - return false; - } + await this.canBeCached(); let votes: Vote[] = []; let page = 0; From dbe874b71d9f279cfe502e4b79869cb6a6018cf4 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Fri, 21 Apr 2023 14:06:33 +0400 Subject: [PATCH 013/103] feat: add additional file storage engine For easier tests --- .gitignore | 1 + src/api.ts | 14 ++++--- src/helpers/aws.ts | 47 ----------------------- src/lib/storage/aws.ts | 58 +++++++++++++++++++++++++++++ src/lib/storage/file.ts | 26 +++++++++++++ src/lib/storage/types.ts | 8 ++++ src/{helpers => lib}/votesReport.ts | 14 ++++--- 7 files changed, 109 insertions(+), 59 deletions(-) delete mode 100644 src/helpers/aws.ts create mode 100644 src/lib/storage/aws.ts create mode 100644 src/lib/storage/file.ts create mode 100644 src/lib/storage/types.ts rename src/{helpers => lib}/votesReport.ts (86%) diff --git a/.gitignore b/.gitignore index 075750ec..28e723b3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ dist build .env coverage +tmp # Remove some common IDE working directories .idea diff --git a/src/api.ts b/src/api.ts index 4ad0d595..4a4d9dfb 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,15 +1,15 @@ import express from 'express'; import { rpcError, rpcSuccess } from './helpers/utils'; -import VotesReport from './helpers/votesReport'; +import VotesReport from './lib/votesReport'; +import StorageEngine from './lib/storage/aws'; // file | aws const router = express.Router(); router.post('/votes/generate/:id', (req, res) => { const { id } = req.params; - const votesReport = new VotesReport(id); try { - votesReport + new VotesReport(id, StorageEngine) .generateCacheFile() .then(() => rpcSuccess(res, 'Cache file generated', id)) .catch(e => rpcError(res, e, id)); @@ -21,13 +21,15 @@ router.post('/votes/generate/:id', (req, res) => { router.post('/votes/:id', async (req, res) => { const { id } = req.params; - const votesReport = new VotesReport(id); + const votesReport = new VotesReport(id, StorageEngine); try { - const file = votesReport.cachedFile(); + const file = await votesReport.cachedFile(); if (typeof file === 'string') { - return res.download(file); + res.header('Content-Type', 'text/csv'); + res.attachment(votesReport.filename); + return res.send(Buffer.from(file)); } votesReport diff --git a/src/helpers/aws.ts b/src/helpers/aws.ts deleted file mode 100644 index a6dd4960..00000000 --- a/src/helpers/aws.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; - -let client: S3Client; -const region = process.env.AWS_REGION; -const accessKeyId = process.env.AWS_ACCESS_KEY_ID; -const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; - -if (region && accessKeyId && secretAccessKey) { - client = new S3Client({ - region, - credentials: { - secretAccessKey, - accessKeyId - } - }); -} -const dir = 'sidekiq'; - -export async function set(key: string, value: string) { - try { - const command = new PutObjectCommand({ - Bucket: process.env.AWS_BUCKET_NAME, - Key: `public/${dir}/${key}`, - Body: value, - ContentType: 'text/csv; charset=utf-8' - }); - - return await client.send(command); - } catch (e) { - console.log('Store cache failed', e); - throw 'Unable to access storage'; - } -} - -export async function get(key: string) { - try { - const command = new GetObjectCommand({ - Bucket: process.env.AWS_BUCKET_NAME, - Key: `public/${dir}/${key}` - }); - const response = await client.send(command); - - return response.Body?.transformToString() || false; - } catch (e) { - return false; - } -} diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts new file mode 100644 index 00000000..369832ba --- /dev/null +++ b/src/lib/storage/aws.ts @@ -0,0 +1,58 @@ +import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; +import type { IStorage } from './types'; + +const DIR = 'sidekiq'; + +class Aws implements IStorage { + client: S3Client; + + constructor() { + const region = process.env.AWS_REGION; + const accessKeyId = process.env.AWS_ACCESS_KEY_ID; + const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; + + if (!region || !accessKeyId || !secretAccessKey) { + throw 'AWS credentials missing'; + } + + this.client = new S3Client({ + region, + credentials: { + secretAccessKey, + accessKeyId + } + }); + } + + set = async (key: string, value: string) => { + try { + const command = new PutObjectCommand({ + Bucket: process.env.AWS_BUCKET_NAME, + Key: `public/${DIR}/${key}`, + Body: value, + ContentType: 'text/csv; charset=utf-8' + }); + + return await this.client.send(command); + } catch (e) { + console.log('Store cache failed', e); + throw 'Unable to access storage'; + } + }; + + get = async (key: string) => { + try { + const command = new GetObjectCommand({ + Bucket: process.env.AWS_BUCKET_NAME, + Key: `public/${DIR}/${key}` + }); + const response = await this.client.send(command); + + return response.Body?.transformToString() || false; + } catch (e) { + return false; + } + }; +} + +export default Aws; diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts new file mode 100644 index 00000000..984e5866 --- /dev/null +++ b/src/lib/storage/file.ts @@ -0,0 +1,26 @@ +import { appendFileSync, existsSync, mkdirSync, readFileSync } from 'fs'; +import type { IStorage } from './types'; + +const CACHE_PATH = `${__dirname}/../../../tmp`; + +class File implements IStorage { + constructor() { + if (!existsSync(CACHE_PATH)) { + mkdirSync(CACHE_PATH); + } + } + + set = async (key: string, value: string) => { + return await appendFileSync(this.path(key), value); + }; + + get = async (key: string) => { + return await readFileSync(this.path(key), 'utf8'); + }; + + path = (key: string) => { + return `${CACHE_PATH}/${key}`; + }; +} + +export default File; diff --git a/src/lib/storage/types.ts b/src/lib/storage/types.ts new file mode 100644 index 00000000..ffbbb469 --- /dev/null +++ b/src/lib/storage/types.ts @@ -0,0 +1,8 @@ +export interface IStorage { + set: (key: string, value: string) => Promise; + get: (key: string) => Promise; +} + +export interface IStorageConstructor { + new (): IStorage; +} diff --git a/src/helpers/votesReport.ts b/src/lib/votesReport.ts similarity index 86% rename from src/helpers/votesReport.ts rename to src/lib/votesReport.ts index a4b5ca93..b98fda0a 100644 --- a/src/helpers/votesReport.ts +++ b/src/lib/votesReport.ts @@ -1,19 +1,21 @@ -import { set, get } from './aws'; -import { fetchProposal, fetchVotes } from './snapshot'; -import type { Proposal, Vote } from './snapshot'; +import { fetchProposal, fetchVotes } from '../helpers/snapshot'; +import type { Proposal, Vote } from '../helpers/snapshot'; +import type { IStorage, IStorageConstructor } from './storage/types'; class VotesReport { id: string; filename: string; proposal?: Proposal; + storage: IStorage; - constructor(id: string) { + constructor(id: string, storage: IStorageConstructor) { this.id = id; this.filename = `snapshot-votes-report-${this.id}.csv`; + this.storage = new storage(); } cachedFile = () => { - return get(this.filename); + return this.storage.get(this.filename); }; canBeCached = async () => { @@ -89,7 +91,7 @@ class VotesReport { votes = newVotes; } while (resultsSize === pageSize); - return set(this.filename, content); + return this.storage.set(this.filename, content); }; #formatCsvLine = (vote: Vote) => { From 8d78400c690b66d1f58ad2bed3f14f42c5d7df75 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Fri, 21 Apr 2023 14:16:14 +0400 Subject: [PATCH 014/103] chore: update README --- README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README.md b/README.md index 7e6c70ff..e9fd73fa 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,24 @@ Edit the hub API url in the `.env` file if needed HUB_URL=https://hub.snapshot.org ``` +If you are using AWS as storage engine, set all the required `AWS_` config keys. + +#### Storage engine + +This script is shipped with 2 storage engine: + +- `AWS`: All cached files will be stored on Amazon S3 storage +- `File`: All cached files will be stored locally, in the `tmp` folder (used for dev environment and testing) + +You can toggle the cache engine in `src/api.ts`, when importing the storage engine + +``` +// For AWS (default) +import StorageEngine from './lib/storage/aws'; +// For File +import StorageEngine from './lib/storage/file'; +``` + ## Compiles and hot-reloads for development ``` @@ -45,6 +63,10 @@ yarn typecheck ## Usage +Retrieving and generating the cache file have their own respective endpoint + +### Fetch a cache file + Send a POST request with a proposal ID ``` @@ -73,6 +95,17 @@ On all other cases, it will respond with a [JSON-RPC 2.0](https://www.jsonrpc.or | When the file is pending generation | -40010 | PENDING_GENERATION | | Other/Unknown/Server Error | -32603 | INTERNAL_ERROR | +### Generate a cache file + +Send a POST request with a proposal ID + +``` +curl -X POST localhost:3000/votes/generate/[PROPOSAL-ID] +``` + +- On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message +- On error, will respond with the same result and codes as the `fetch` endpoint above + ## Build for production ``` From a523f2acd297107a748b03f51b81f43d105c1db8 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Fri, 21 Apr 2023 15:50:41 +0400 Subject: [PATCH 015/103] fix: use inferred env variables for S3 client setup --- src/lib/storage/aws.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 369832ba..d6150ad3 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -15,13 +15,7 @@ class Aws implements IStorage { throw 'AWS credentials missing'; } - this.client = new S3Client({ - region, - credentials: { - secretAccessKey, - accessKeyId - } - }); + this.client = new S3Client({}); } set = async (key: string, value: string) => { From 57cb712f72b5b4994c7a7662dbce3b83315eef5e Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Fri, 21 Apr 2023 16:00:56 +0400 Subject: [PATCH 016/103] feat: custimize location of cached files --- src/lib/storage/aws.ts | 10 +++++----- src/lib/storage/file.ts | 12 ++++++++---- src/lib/storage/types.ts | 4 +++- src/lib/votesReport.ts | 2 +- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index d6150ad3..eb2b63f0 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -1,12 +1,11 @@ import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; import type { IStorage } from './types'; -const DIR = 'sidekiq'; - class Aws implements IStorage { client: S3Client; + folder: string; - constructor() { + constructor(folder: string) { const region = process.env.AWS_REGION; const accessKeyId = process.env.AWS_ACCESS_KEY_ID; const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; @@ -16,13 +15,14 @@ class Aws implements IStorage { } this.client = new S3Client({}); + this.folder = folder; } set = async (key: string, value: string) => { try { const command = new PutObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, - Key: `public/${DIR}/${key}`, + Key: `public/${this.folder}/${key}`, Body: value, ContentType: 'text/csv; charset=utf-8' }); @@ -38,7 +38,7 @@ class Aws implements IStorage { try { const command = new GetObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, - Key: `public/${DIR}/${key}` + Key: `public/${this.folder}/${key}` }); const response = await this.client.send(command); diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index 984e5866..548e51e9 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -4,9 +4,13 @@ import type { IStorage } from './types'; const CACHE_PATH = `${__dirname}/../../../tmp`; class File implements IStorage { - constructor() { - if (!existsSync(CACHE_PATH)) { - mkdirSync(CACHE_PATH); + folder: string; + + constructor(folder: string) { + this.folder = folder; + + if (!existsSync(`${CACHE_PATH}/${this.folder}`)) { + mkdirSync(`${CACHE_PATH}/${this.folder}`); } } @@ -19,7 +23,7 @@ class File implements IStorage { }; path = (key: string) => { - return `${CACHE_PATH}/${key}`; + return `${CACHE_PATH}/${this.folder}/${key}`; }; } diff --git a/src/lib/storage/types.ts b/src/lib/storage/types.ts index ffbbb469..7d196255 100644 --- a/src/lib/storage/types.ts +++ b/src/lib/storage/types.ts @@ -1,8 +1,10 @@ export interface IStorage { + folder: string; + set: (key: string, value: string) => Promise; get: (key: string) => Promise; } export interface IStorageConstructor { - new (): IStorage; + new (folder: string): IStorage; } diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index b98fda0a..ad46e728 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -11,7 +11,7 @@ class VotesReport { constructor(id: string, storage: IStorageConstructor) { this.id = id; this.filename = `snapshot-votes-report-${this.id}.csv`; - this.storage = new storage(); + this.storage = new storage('votes'); } cachedFile = () => { From c7bd2cd9ddc135d96a204d78c96bfb4e9b2215a7 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Fri, 21 Apr 2023 16:11:17 +0400 Subject: [PATCH 017/103] feat: protect generate endpoint behind authentication --- .env.example | 1 + src/api.ts | 4 ++++ src/helpers/utils.ts | 8 +++++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 609a8f3a..7b9227e0 100644 --- a/.env.example +++ b/.env.example @@ -3,3 +3,4 @@ AWS_ACCESS_KEY_ID= AWS_REGION= AWS_SECRET_ACCESS_KEY= AWS_BUCKET_NAME= +WEBHOOK_AUTH_TOKEN= diff --git a/src/api.ts b/src/api.ts index 4a4d9dfb..840b7d5f 100644 --- a/src/api.ts +++ b/src/api.ts @@ -8,6 +8,10 @@ const router = express.Router(); router.post('/votes/generate/:id', (req, res) => { const { id } = req.params; + if (req.headers['authenticate'] !== process.env.WEBHOOK_AUTH_TOKEN?.toString()) { + return rpcError(res, 'UNAUTHORIZE', id); + } + try { new VotesReport(id, StorageEngine) .generateCacheFile() diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 11ca51cb..0927a7f8 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -3,7 +3,8 @@ import type { Response } from 'express'; const ERROR_CODES: Record = { PROPOSAL_NOT_FOUND: -40001, PROPOSAL_NOT_CLOSED: -40004, - PENDING_GENERATION: -40010 + PENDING_GENERATION: -40010, + UNAUTHORIZE: 401 }; export function rpcSuccess(res: Response, result: string, id: string | number) { @@ -16,11 +17,12 @@ export function rpcSuccess(res: Response, result: string, id: string | number) { export function rpcError(res: Response, e: Error | string, id: string | number) { const errorMessage = e instanceof Error ? e.message : e; + const errorCode = ERROR_CODES[errorMessage] ? ERROR_CODES[errorMessage] : -32603; - res.status(500).json({ + res.status(errorCode > 0 ? errorCode : 500).json({ jsonrpc: '2.0', error: { - code: ERROR_CODES[errorMessage] ? ERROR_CODES[errorMessage] : -32603, + code: errorCode, message: errorMessage }, id From cc31a4dc71b4dba6af002d6cf8e124283674e0cf Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 12:15:41 +0400 Subject: [PATCH 018/103] chore: add LICENCE file --- LICENCE | 21 +++++++++++++++++++++ README.md | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 LICENCE diff --git a/LICENCE b/LICENCE new file mode 100644 index 00000000..a0bb1250 --- /dev/null +++ b/LICENCE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Snapshot Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index e9fd73fa..393e039a 100644 --- a/README.md +++ b/README.md @@ -115,4 +115,4 @@ yarn start ## License -[MIT](https://github.com/snapshot-labs/envelop-ui/blob/bootstrap-app/LICENSE) +[MIT](https://github.com/snapshot-labs/snapshot-sidekick/blob/main/LICENCE) From d83e00a5640dccc4ecc2f8853eee162840c65815 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 12:46:30 +0400 Subject: [PATCH 019/103] feat: add webhook support for `generate` endpoint --- src/api.ts | 14 ++++++++++++-- src/helpers/utils.ts | 1 + src/index.ts | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/api.ts b/src/api.ts index 840b7d5f..5e018f69 100644 --- a/src/api.ts +++ b/src/api.ts @@ -5,13 +5,23 @@ import StorageEngine from './lib/storage/aws'; // file | aws const router = express.Router(); -router.post('/votes/generate/:id', (req, res) => { - const { id } = req.params; +router.post('/votes/generate', (req, res) => { + const body = req.body || {}; + const event = body.event.toString(); + const id = body.id.toString().replace('proposal/', ''); if (req.headers['authenticate'] !== process.env.WEBHOOK_AUTH_TOKEN?.toString()) { return rpcError(res, 'UNAUTHORIZE', id); } + if (!event || !id) { + return rpcError(res, 'Invalid Request', id); + } + + if (event !== 'proposal/end') { + return rpcSuccess(res, 'Event skipped', id); + } + try { new VotesReport(id, StorageEngine) .generateCacheFile() diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 0927a7f8..736794b7 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,6 +1,7 @@ import type { Response } from 'express'; const ERROR_CODES: Record = { + 'Invalid Request': -32600, PROPOSAL_NOT_FOUND: -40001, PROPOSAL_NOT_CLOSED: -40004, PENDING_GENERATION: -40010, diff --git a/src/index.ts b/src/index.ts index 5bc93af8..2b8cc811 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ import api from './api'; const app = express(); const PORT = process.env.PORT || 3000; +app.use(express.json({ limit: '4mb' })); app.use(cors({ maxAge: 86400 })); app.use(compression()); app.use('/', api); From 8d0a8edd35579902567935045f26caf502298433 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 18:38:22 +0400 Subject: [PATCH 020/103] feat: add basic queue system to handle cache file generation Queue system enable back the cache file generation on demand when cache is not available on fetch --- package.json | 3 +- src/api.ts | 35 +++++--- src/helpers/log.ts | 9 ++ src/helpers/utils.ts | 12 +++ src/index.ts | 4 +- src/lib/queue.ts | 29 +++++++ src/lib/storage/aws.ts | 11 ++- src/lib/storage/file.ts | 18 +++- src/lib/votesReport.ts | 7 ++ yarn.lock | 179 +++++++++++++++++++++++++++++++++++++++- 10 files changed, 283 insertions(+), 24 deletions(-) create mode 100644 src/helpers/log.ts create mode 100644 src/lib/queue.ts diff --git a/package.json b/package.json index 8f5a1c6b..a43eb062 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "compression": "^1.7.4", "cors": "^2.8.5", "express": "^4.18.2", - "graphql": "^16.6.0" + "graphql": "^16.6.0", + "winston": "^3.8.2" }, "devDependencies": { "@snapshot-labs/eslint-config": "^0.1.0-beta.0", diff --git a/src/api.ts b/src/api.ts index 5e018f69..564118d9 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,11 +1,13 @@ import express from 'express'; -import { rpcError, rpcSuccess } from './helpers/utils'; -import VotesReport from './lib/votesReport'; -import StorageEngine from './lib/storage/aws'; // file | aws +import { voteReportWithStorage, rpcError, rpcSuccess } from './helpers/utils'; +import log from './helpers/log'; +import { queues } from './lib/queue'; const router = express.Router(); -router.post('/votes/generate', (req, res) => { +router.post('/votes/generate', async (req, res) => { + log.info(`[http] POST /votes/generate`); + const body = req.body || {}; const event = body.event.toString(); const id = body.id.toString().replace('proposal/', ''); @@ -23,19 +25,20 @@ router.post('/votes/generate', (req, res) => { } try { - new VotesReport(id, StorageEngine) - .generateCacheFile() - .then(() => rpcSuccess(res, 'Cache file generated', id)) - .catch(e => rpcError(res, e, id)); + await voteReportWithStorage(id).canBeCached(); + queues.add(id); + return rpcSuccess(res, 'Cache file generation queued', id); } catch (e) { - console.log(e); + log.error(e); return rpcError(res, 'INTERNAL_ERROR', id); } }); router.post('/votes/:id', async (req, res) => { const { id } = req.params; - const votesReport = new VotesReport(id, StorageEngine); + log.info(`[http] POST /votes/${id}`); + + const votesReport = voteReportWithStorage(id); try { const file = await votesReport.cachedFile(); @@ -48,10 +51,16 @@ router.post('/votes/:id', async (req, res) => { votesReport .canBeCached() - .then(() => rpcError(res, 'PENDING_GENERATION', id)) - .catch(e => rpcError(res, e, id)); + .then(() => { + queues.add(id); + return rpcError(res, 'PENDING_GENERATION', id); + }) + .catch((e: any) => { + log.error(e); + rpcError(res, e, id); + }); } catch (e) { - console.log(e); + log.error(e); return rpcError(res, 'INTERNAL_ERROR', id); } }); diff --git a/src/helpers/log.ts b/src/helpers/log.ts new file mode 100644 index 00000000..9b547110 --- /dev/null +++ b/src/helpers/log.ts @@ -0,0 +1,9 @@ +import winston from 'winston'; + +const log = winston.createLogger({ + transports: new winston.transports.Console({ + format: winston.format.combine(winston.format.colorize(), winston.format.simple()) + }) +}); + +export default log; diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 736794b7..376578e2 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,3 +1,5 @@ +import VotesReport from '../lib/votesReport'; +import StorageEngine from '../lib/storage/aws'; import type { Response } from 'express'; const ERROR_CODES: Record = { @@ -29,3 +31,13 @@ export function rpcError(res: Response, e: Error | string, id: string | number) id }); } + +export async function sleep(time: number) { + return new Promise(resolve => { + setTimeout(resolve, time); + }); +} + +export function voteReportWithStorage(id: string) { + return new VotesReport(id, StorageEngine); +} diff --git a/src/index.ts b/src/index.ts index 2b8cc811..cdc2278f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,8 @@ import express from 'express'; import compression from 'compression'; import cors from 'cors'; import api from './api'; +import log from './helpers/log'; +import './lib/queue'; const app = express(); const PORT = process.env.PORT || 3000; @@ -12,4 +14,4 @@ app.use(cors({ maxAge: 86400 })); app.use(compression()); app.use('/', api); -app.listen(PORT, () => console.log(`Listening at http://localhost:${PORT}`)); +app.listen(PORT, () => log.info(`[http] Start server at http://localhost:${PORT}`)); diff --git a/src/lib/queue.ts b/src/lib/queue.ts new file mode 100644 index 00000000..45be72ff --- /dev/null +++ b/src/lib/queue.ts @@ -0,0 +1,29 @@ +import log from '../helpers/log'; +import { sleep, voteReportWithStorage } from '../helpers/utils'; + +export const queues = new Set(); + +async function process(id: string) { + log.info(`[queue] Processing queue item: ${id}`); + try { + await voteReportWithStorage(id).generateCacheFile(); + } catch (e) { + log.error(`[queue] Error while processing item`, e); + } finally { + queues.delete(id); + } +} + +async function run() { + try { + log.info(`[queue] Poll queue (found ${queues.size} items)`); + queues.forEach(async item => process(item)); + } catch (e) { + log.error(e); + } finally { + await sleep(15e3); + await run(); + } +} + +run(); diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index eb2b63f0..8b007d10 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -1,4 +1,5 @@ import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; +import log from '../../helpers/log'; import type { IStorage } from './types'; class Aws implements IStorage { @@ -11,7 +12,7 @@ class Aws implements IStorage { const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; if (!region || !accessKeyId || !secretAccessKey) { - throw 'AWS credentials missing'; + throw '[storage:aws] AWS credentials missing'; } this.client = new S3Client({}); @@ -27,9 +28,12 @@ class Aws implements IStorage { ContentType: 'text/csv; charset=utf-8' }); - return await this.client.send(command); + await this.client.send(command); + log.error(`[storage:aws] File saved to public/${this.folder}/${key}`); + + return true; } catch (e) { - console.log('Store cache failed', e); + log.error('[storage:aws] Store file failed', e); throw 'Unable to access storage'; } }; @@ -44,6 +48,7 @@ class Aws implements IStorage { return response.Body?.transformToString() || false; } catch (e) { + log.error('[storage:aws] Create file failed', e); return false; } }; diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index 548e51e9..430fbee1 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -1,4 +1,5 @@ import { appendFileSync, existsSync, mkdirSync, readFileSync } from 'fs'; +import log from '../../helpers/log'; import type { IStorage } from './types'; const CACHE_PATH = `${__dirname}/../../../tmp`; @@ -15,11 +16,24 @@ class File implements IStorage { } set = async (key: string, value: string) => { - return await appendFileSync(this.path(key), value); + try { + appendFileSync(this.path(key), value); + log.info(`[storage:file] File saved to ${this.path(key)}`); + + return true; + } catch (e) { + log.error('[storage:file] Create file failed', e); + throw e; + } }; get = async (key: string) => { - return await readFileSync(this.path(key), 'utf8'); + try { + return readFileSync(this.path(key), 'utf8'); + } catch (e) { + log.error('[storage:file] Store file failed', e); + return false; + } }; path = (key: string) => { diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index ad46e728..57586193 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -1,4 +1,5 @@ import { fetchProposal, fetchVotes } from '../helpers/snapshot'; +import log from '../helpers/log'; import type { Proposal, Vote } from '../helpers/snapshot'; import type { IStorage, IStorageConstructor } from './storage/types'; @@ -41,9 +42,12 @@ class VotesReport { const pageSize = 1000; let resultsSize = 0; const maxPage = 5; + let totalResults = 0; let headersAppended = false; let content = ''; + log.info(`[votereport] Generating cache file for ${this.id}`); + do { let newVotes = await fetchVotes(this.id, { first: pageSize, @@ -89,8 +93,11 @@ class VotesReport { content += `\n${newVotes.map(vote => this.#formatCsvLine(vote)).join('\n')}`; votes = newVotes; + totalResults += newVotes.length; } while (resultsSize === pageSize); + log.info(`[votereport] File cache ready to be saved with ${totalResults} items`); + return this.storage.set(this.filename, content); }; diff --git a/yarn.lock b/yarn.lock index d837b75f..12fb474e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -983,6 +983,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@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" @@ -990,6 +995,15 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1212,6 +1226,11 @@ "@types/mime" "*" "@types/node" "*" +"@types/triple-beam@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8" + integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g== + "@typescript-eslint/eslint-plugin@^2.33.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" @@ -1464,6 +1483,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1584,7 +1608,7 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -1603,11 +1627,35 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -1763,6 +1811,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2074,6 +2127,11 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -2150,6 +2208,11 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -2341,7 +2404,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2370,6 +2433,11 @@ ipaddr.js@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== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + 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" @@ -2409,6 +2477,11 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -2449,6 +2522,11 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -2482,6 +2560,18 @@ lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +logform@^2.3.2, logform@^2.4.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" + integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg== + dependencies: + "@colors/colors" "1.5.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -2667,6 +2757,13 @@ once@^1.3.0: dependencies: wrappy "1" +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + onetime@^5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -2858,6 +2955,15 @@ react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -2936,11 +3042,16 @@ safe-buffer@5.1.2: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1: +safe-buffer@5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-stable-stringify@^2.3.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3040,6 +3151,13 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + 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" @@ -3066,6 +3184,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -3089,6 +3212,13 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -3142,6 +3272,11 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -3178,6 +3313,11 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +triple-beam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== + ts-invariant@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" @@ -3280,6 +3420,11 @@ uri-js@^4.2.2: 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" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -3319,6 +3464,32 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +winston-transport@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" + integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== + dependencies: + logform "^2.3.2" + readable-stream "^3.6.0" + triple-beam "^1.3.0" + +winston@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50" + integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew== + dependencies: + "@colors/colors" "1.5.0" + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.4.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.5.0" + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" From e18cc3b524216bdb2eedc48af02af1cdcc61efd9 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 18:51:46 +0400 Subject: [PATCH 021/103] chore: update README --- README.md | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 393e039a..2be0c130 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Install the dependencies yarn ``` -_This project does not require a database, but may need larger server storage capacity for the cached files_ +_This project does not require a database, but requires a [storage engine](#storage-engine)_ ### Configuration @@ -39,13 +39,13 @@ This script is shipped with 2 storage engine: - `AWS`: All cached files will be stored on Amazon S3 storage - `File`: All cached files will be stored locally, in the `tmp` folder (used for dev environment and testing) -You can toggle the cache engine in `src/api.ts`, when importing the storage engine +You can toggle the cache engine in `helpers/utils.ts`, when importing the storage engine ``` // For AWS (default) -import StorageEngine from './lib/storage/aws'; +import StorageEngine from '../lib/storage/aws'; // For File -import StorageEngine from './lib/storage/file'; +import StorageEngine from '../lib/storage/file'; ``` ## Compiles and hot-reloads for development @@ -95,17 +95,26 @@ On all other cases, it will respond with a [JSON-RPC 2.0](https://www.jsonrpc.or | When the file is pending generation | -40010 | PENDING_GENERATION | | Other/Unknown/Server Error | -32603 | INTERNAL_ERROR | +Furthermore, when votes report can be cached, but does not exist yet, a cache generation task will be queued. This enable cache to be generated on-demand. + ### Generate a cache file -Send a POST request with a proposal ID +Send a POST request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). ``` -curl -X POST localhost:3000/votes/generate/[PROPOSAL-ID] +curl -X POST localhost:3000/votes/generate \ +-H "Authenticate: WEBHOOK_AUTH_TOKEN" \ +-H "Content-Type: application/json" \ +-d '{"id": "proposal/[PROPOSAL-ID]", "event": "proposal/end"}' ``` - On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message - On error, will respond with the same result and codes as the `fetch` endpoint above +The endpoint has been designed to receive events from snapshot webhook service. + +Do not forget to set `WEBHOOK_AUTH_TOKEN` in the `.env` file + ## Build for production ``` From 3eae76949c5394a55f201d5b3a3be34e2fd36c2c Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 23:04:24 +0400 Subject: [PATCH 022/103] chore: add tests --- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 15 + jest.config.ts | 20 + package.json | 7 +- src/helpers/snapshot.ts | 2 +- src/helpers/utils.ts | 4 +- src/lib/storage/file.ts | 10 +- src/lib/votesReport.ts | 12 +- ...d62851ea47f6072f2296ca53a48fce1b87cdef.csv | 47 + test/unit/lib/votesReport.test.ts | 86 + yarn.lock | 1749 ++++++++++++++++- 11 files changed, 1918 insertions(+), 36 deletions(-) create mode 100644 .github/workflows/test.yml create mode 100644 jest.config.ts create mode 100644 test/fixtures/snapshot-votes-report-0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef.csv create mode 100644 test/unit/lib/votesReport.test.ts diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index fb2f63c2..11e621e2 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,4 +1,4 @@ -name: Build and Run Tests +name: Build and Run Lint on: [push] jobs: build-test: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..8cadb0c5 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,15 @@ +name: Build and Run Tests +on: [push] +jobs: + build-test: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'yarn' + - run: yarn install + - run: yarn build + - run: echo -en "HUB_URL=https://hub.snapshot.org" > .env + - run: yarn test diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 00000000..b0068138 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,20 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +export default { + clearMocks: true, + collectCoverage: true, + coverageDirectory: 'coverage', + coverageProvider: 'v8', + + // An array of regexp pattern strings used to skip coverage collection + coveragePathIgnorePatterns: ['/node_modules/', '/dist/', '/test/fixtures/'], + + preset: 'ts-jest', + testEnvironment: 'jest-environment-node-single-context', + setupFiles: ['dotenv/config'], + //setupFilesAfterEnv: ['src/setupTests.ts'], + moduleFileExtensions: ['js', 'ts'] +}; diff --git a/package.json b/package.json index a43eb062..142a7447 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "build": "tsc -p tsconfig.json", "dev": "nodemon src/index.ts -e js,ts", "start": "node dist/src/index.js", - "typecheck": "tsc" + "typecheck": "tsc", + "test": "jest" }, "eslintConfig": { "extends": "@snapshot-labs" @@ -31,12 +32,16 @@ "@types/compression": "^1.7.2", "@types/cors": "^2.8.13", "@types/express": "^4.17.17", + "@types/jest": "^29.5.1", "@types/node": "^18.15.11", "@typescript-eslint/eslint-plugin": "^5.59.0", "dotenv": "^16.0.3", "eslint": "^8.38.0", "eslint-plugin-prettier": "^4.2.1", + "jest": "^29.5.0", + "jest-environment-node-single-context": "^29.0.0", "nodemon": "^2.0.22", + "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "typescript": "^5.0.4" } diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts index 321fd8e4..d2e2e5de 100644 --- a/src/helpers/snapshot.ts +++ b/src/helpers/snapshot.ts @@ -65,7 +65,7 @@ const VOTES_QUERY = gql` export async function fetchProposal(id: string) { const { data: { proposal } - }: { data: { proposal: Proposal } } = await client.query({ + }: { data: { proposal: Proposal | null } } = await client.query({ query: PROPOSAL_QUERY, variables: { id diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 376578e2..81e2324a 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,5 +1,5 @@ import VotesReport from '../lib/votesReport'; -import StorageEngine from '../lib/storage/aws'; +import StorageEngine from '../lib/storage/file'; // aws | file import type { Response } from 'express'; const ERROR_CODES: Record = { @@ -39,5 +39,5 @@ export async function sleep(time: number) { } export function voteReportWithStorage(id: string) { - return new VotesReport(id, StorageEngine); + return new VotesReport(id, new StorageEngine('votes')); } diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index 430fbee1..f0d1df63 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -1,4 +1,4 @@ -import { appendFileSync, existsSync, mkdirSync, readFileSync } from 'fs'; +import { writeFileSync, existsSync, mkdirSync, readFileSync } from 'fs'; import log from '../../helpers/log'; import type { IStorage } from './types'; @@ -17,7 +17,7 @@ class File implements IStorage { set = async (key: string, value: string) => { try { - appendFileSync(this.path(key), value); + writeFileSync(this.path(key), value); log.info(`[storage:file] File saved to ${this.path(key)}`); return true; @@ -29,9 +29,13 @@ class File implements IStorage { get = async (key: string) => { try { + if (!existsSync(this.path(key))) { + return false; + } + return readFileSync(this.path(key), 'utf8'); } catch (e) { - log.error('[storage:file] Store file failed', e); + log.error('[storage:file] Fetch file failed', e); return false; } }; diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index 57586193..270d6c46 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -6,13 +6,13 @@ import type { IStorage, IStorageConstructor } from './storage/types'; class VotesReport { id: string; filename: string; - proposal?: Proposal; + proposal?: Proposal | null; storage: IStorage; - constructor(id: string, storage: IStorageConstructor) { + constructor(id: string, storage: IStorage) { this.id = id; this.filename = `snapshot-votes-report-${this.id}.csv`; - this.storage = new storage('votes'); + this.storage = storage; } cachedFile = () => { @@ -20,7 +20,7 @@ class VotesReport { }; canBeCached = async () => { - this.proposal = await fetchProposal(this.id); + this.proposal = await this.fetchProposal(); if (!this.proposal) { return Promise.reject('PROPOSAL_NOT_FOUND'); @@ -115,6 +115,10 @@ class VotesReport { return [vote.voter, choices, vote.vp, vote.created, vote.ipfs].flat().join(','); }; + + fetchProposal = async () => { + return await fetchProposal(this.id); + }; } export default VotesReport; diff --git a/test/fixtures/snapshot-votes-report-0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef.csv b/test/fixtures/snapshot-votes-report-0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef.csv new file mode 100644 index 00000000..655d7396 --- /dev/null +++ b/test/fixtures/snapshot-votes-report-0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef.csv @@ -0,0 +1,47 @@ +address,choice,voting_power,timestamp,author_ipfs_hash +0x9c1b73E80D992389078a8ABc8B6039665C4846e7,1,20.992980242869496,1681954050,bafkreicfll75wtsmsvjk2oksmvfrwxtdduf72hfygcouwnkjitrzkx34ci +0x5fb1E3A4b8968f6D0B276514A22eDF3a88B3FdD6,1,323.2730220659731,1681954081,bafkreiho66x5sasd3h5bfs3on7bnoxiwn55x2gx4kcvq7el44mkqf257fi +0x44c80295d194cf25BDc3454b4016966ac319E848,1,0.3,1681959291,bafkreie2hie4f3lgv3vx3nocdq3v553qmbsgjnqcbc7ezcda4kk3h7yzua +0xa1ab28131CdFeca1eC167045C8DFb9d2Ae75Ad0C,1,817.3041281237311,1681960650,bafkreigigiii3euxs6vcxrocy3rexs63gurpgnjbwgeb52zpr5jsqlbo74 +0xb6d17997Af674EF938BB3ead45bcbb54284A9a9F,1,4.876577470815307,1681960739,bafkreifoyraw5pz7d2j22bgqepzvo6gx4kyxgxzx7riavtkl2uozhax4ve +0x843146d71d57af0E731F85dB1F094643776C8E91,1,1.0076503593247748,1681960828,bafkreig6gdyx5lkx6sxqxxfs5ab4n7recafwzmwhcgzysplh5j4aocxhf4 +0x7683c36e3067aD69e2ac06DDB21250EAF4e4Ffed,1,39.08821671397446,1681961100,bafkreifrbmteh7tzfptlmf5sl6or7hw4jffugchd4aentjmupniwlfhtye +0xF860AaC8d4D61370FAED243C6C4C7c93dEe65679,1,0.00855293507004935,1681961562,bafkreidnd5qbsblyihevuyvziccinghipzkgymrzkliq7o62sehh2riltu +0x9261FB273d1ACcBe2f15df1C254E7fCC971468aC,1,10.759693759553794,1681962445,bafkreig4yznqgixw3r2wkfga7mgsn3ggoec4f3ks37yldcdmefxosx7tny +0xb24869a014065b2255797f98DdF72c8244f6F476,1,1.1945708804510298,1681962867,bafkreidelkqkm2s7vyt4uappt4df55t3a6pi7gr7rux3cmscconrc2tqrq +0x4C9640a65af420A339cD2D5B2cE8D55ae83BED1e,1,9543.953905227729,1681965054,bafkreifmgrtoczi32b5b4oy7egfynuc5m6thcsycpkfcaqibmnd6mtamge +0x4214C3DD58651fdC5d4a52aB69cB16433408A169,1,0.056,1681966678,bafkreigkuyfxej53rid5sa3v5ihimgjbxhjxesqfl7eckkpiutk7yjjte4 +0xB5A65a7b0373e3d6385f5DE7F583c299982B865B,1,0.03526254356347258,1681968420,bafkreifc2yrjrl5nx54y7yzh3heidiqqzenbqvuvbvoasqeq7ev4wsxscq +0x5BBC261De4Ffd714585d75B242575A2C55e7d89f,2,0.2676423905614063,1681970107,bafkreidacjzj7g3r5umsatw2ltreq444e43oe4w56a5nxhcngcjbgkdpby +0x4895bd5Fc670D3c657064bed13A5180e9a3C2C39,1,0.363410151520198,1681971330,bafkreiexqahvhexvznntpp36rtcnow4fbwap2zuu4wjahfkh77uubnm3x4 +0xF943437C351aCeD31c5a5Eb224B107E99DCebaf6,1,0.008783680598275861,1681974497,bafkreihgagmyp2f2x3s5gr72g5tk3fkabkt7ukvhb7oc3wglwrtoamfzpe +0xD41cEF4f79a2cF4b9Ceb670E64029A93a62b8FB6,2,0.047011016629204774,1681974851,bafkreib7elmyi6rkjszq3exymo7dlogqqzo5fefsgmvoxlbgphbcsblp3i +0x6c07619AdB26f83b81B1DC8e5AA4B71444F50053,1,1.0101487431893934,1681975703,bafkreiadzxyi26lfvtf5h33ebyexd24lkps5urmvjpsuxpwannkgbqgsxy +0xC1d02aBAdc2fed2619512ADeA1418Bd83490E66d,1,0.25336116942241244,1681977973,bafkreicfowvl6tad4u6olez335tw3lrj3kqfm2b37jipgfzvsoorkbglb4 +0xd3AEb3A729EF9713847696E1363DAeB378474c06,1,0.007117064411653239,1681979081,bafkreiae6iwec7hbnrjctazlqo6wuw5tuphygnxt7aqtpm64wukpinjw3a +0x614168aa18fB121833Ec9E55f9a038D4bC2E2Dfe,1,0.04257576529766999,1681980827,bafkreidywpmusf2mp374rgryu43z23aghfhw2xfs3nu6mbnnmsfqtjh6yq +0x3A3495A75167C40C29F7f4cc8b844A418aB0b927,1,0.1187,1681981769,bafkreiahqnyrtm53kd4iydjodxfbc6iy7f5jskabaubg5ufl5izenwmnxm +0x43Ed9D9120fb7e9E2de1A9dEb7BE2A8B75230DEf,1,1.0370890131067922,1681982003,bafkreighxdofakupv34s5bmmqfo2psn2uywjnghjw5mx4vee6zvyzuasce +0x241202A851dBb3cBE68a42Ac2c7f11aB2628a5dA,1,1,1681982459,bafkreifavlrhpqophevdy2kjeor7bexo24bm2miwhyi4elmyole5qa4vqm +0x6Dd540Cae53fFD24928595520bEc73cf08A5748d,1,0.008782925857173447,1681985862,bafkreic67yn2cxo4ooxaltrco3cyzoujbrk2jdzh36pbfczwbmqg2ten7y +0x11f07f91C8965f4C1fdB37E9896751CF6CBa420c,1,0.00878217121334398,1681986298,bafkreigmmthvsfvq66r33btcegrrg3jlmaez3jltryr5zbnk65bose6fee +0xA73adAAe3C6924977f9950212B688558c87b65bb,1,0.008781416666770745,1681986584,bafkreibjxwkoyxxrortdxl26lscnrturqvgw5ntccvqa4pxijk3lkeszl4 +0xB35b2d4366f8405036F28411c2d224C53EF8D828,1,0.008780662217437028,1681986977,bafkreienxpc4lkklcxszybrlnc6ch2dexaamjqoaerohuotpmr22zgpqb4 +0x5CD53625FBB43139155301fBC75E19C654633696,1,0.008779907865326123,1681987839,bafkreihiqnf2wak6wn24l7pcncpbum2egnldkhxnqlmqp57j5f2mx2cqdi +0xC1fF3BA04eC76EBc5554819197780008C52C6Ad4,1,0.008779153610421328,1681988247,bafkreie5d3s4dzvkcu6jpkhclyeoiai73nllgbuzii2gdxigmur57anlwq +0x89B105cA091FE2fC6121259B4C69eB5eED590ab9,1,0.008778399452705936,1681988556,bafkreidygkhpkbzekjbl7kprfvep7hkdqdi6llmhfd77xfj7fsi7onmceq +0x92877E5da60931df93aaAa0709976bCCBCC10457,1,370.53966786102785,1681989124,bafkreidmva3qi4r26wgybo4zr5eulx2tsdmtpp5dkyfahzco2wprahi2vi +0x944F885101d75e559B3C67892a816274e67fC93E,1,102.17540817044627,1681990551,bafkreicivjdmeuyzsen5z44xsa53d52zdpcprv6htrky5ssdnk5shaxchy +0xf69f3f81f9f99B183fDeAD8266F5DE10D91a2A36,1,0.596635891413412,1681997019,bafkreihlkotx27nkgsaudeauqu247iaevj4efwe7usvkdslrxxevyivb54 +0x0b5CC691fBF7923da8a30DB4A8bb8c9F9CE9f7d5,1,1266.6242669607032,1681997081,bafkreic4zlczi7qpvtjqzppskw2gde7rism7hx67nhi45b2suwn3abvyla +0x4D11AAA69158595085D13D5e1a2b22c1d0D5F348,1,4.113974105568486,1681997257,bafkreigjujlu2njxinfxx7xm47akv2qpvgwgcfs5kjv3gbzokvhkgcjdai +0x40a82a3aC2bb08E82133E25cBC6Ca128dc7162aa,1,1.102770884550539,1681997819,bafkreihsyljqnqxianweveqs55gp2ohcelc6jn2qyb3b2b2wteefmqc7qm +0x4a27BfD91B30EfAf08706d2105e5D8A1ad09fF0C,1,0.8802996349326384,1681998881,bafkreie77oi7v5cruoomb4mcmyjpl2pgcambu7mfhdr6cumep6awcjmibm +0xBc9a6eA3E32B05e87f3e3e0DdbB23FC0C62c61f3,1,0.15,1681999125,bafkreiaqa233efqbmrazhuafob7m6j3bekzrftiufssyghcw5hgh5t7tom +0xf094C2406f91E946d8C4757A2F8c00D9Ec4D703E,1,0.14105291551394503,1681999487,bafkreic7e6pnt5kvzhmbcuz3i7gz5frlwgsi5mb34zzovixppedhctdjwe +0xf967817B892F82da16eE21fdd0667fcF9Cc9caf1,1,0.09029066083725476,1681999968,bafkreic3f6wv3xpgs23fvwjeacihokohyt5xewvtfgbe6vkmeb2q6a7asq +0x87430f80f12ce92eaADD51D26e26dA71F4dCa41e,1,4.994,1682013194,bafkreidykcj2ix27k6em2tiyxnv5oybgkwcew5o5ioktxejx5vvlzx3jwy +0x96BE7245790Cf38ab589ce2a3a908C4c70be15bd,1,1131.2047418585335,1682019336,bafkreietpxjvzxmfaoq4c5p5x44lsoeu3ybzrslpayzoiz47tlu6mi5bry +0x6336808ABFc29A6168A15B72D6BEDC6562a3Cd82,1,420.575758599564,1682020613,bafkreia24ib6wv6ofskajn4fyedvmnak4txjalr7id6dferxttlvezw3ja +0xce6364C714bfDF453f01b0A5E6EBA500392976fF,1,7.135262207754166,1682030293,bafkreideeoh3ehrrscsgewa5nnli44mftnefvvpsm3ldpakqrravmohspy +0x6c35bBEa907A5E653199ba885a7D9abd5Cb3a2f3,1,0.2,1682040019,bafkreiafjencjrmwj4b6otsebkkygh7sw76dcpjhdrbz2vi6jrc44eybn4 \ No newline at end of file diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts new file mode 100644 index 00000000..58cac24e --- /dev/null +++ b/test/unit/lib/votesReport.test.ts @@ -0,0 +1,86 @@ +import { copyFileSync, existsSync, readFileSync, rmSync, mkdirSync } from 'fs'; +import VotesReport from '../../../src/lib/votesReport'; +import FileStorage from '../../../src/lib/storage/file'; + +describe('VotesReport', () => { + const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; + const fixtureFile = `${__dirname}/../../fixtures/snapshot-votes-report-${id}.csv`; + let cacheFolder: string; + let cachePath: string; + let cachedFile: string; + let storageEngine: FileStorage; + + beforeEach(() => { + cacheFolder = `votes-test-${Math.floor(Math.random() * 1e6)}`; + cachePath = `${__dirname}/../../../tmp/${cacheFolder}`; + cachedFile = `${cachePath}/snapshot-votes-report-${id}.csv`; + storageEngine = new FileStorage(cacheFolder); + + if (!existsSync(cachePath)) { + mkdirSync(cachePath); + } + }); + + afterEach(() => { + if (existsSync(cachePath)) { + rmSync(cachePath, { recursive: true }); + } + }); + + it('caches a votes report', async () => { + const report = new VotesReport(id, storageEngine); + + await report.generateCacheFile(); + + return expect(readFileSync(cachedFile)).toEqual(readFileSync(fixtureFile)); + }); + + describe('canBeCached()', () => { + it('raises an error when the proposal does not exist', () => { + const report = new VotesReport('test', storageEngine); + const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce(null); + + expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_FOUND'); + expect(votesReportSpy).toHaveBeenCalled(); + }); + + it('raises an error when the proposal is not closed', async () => { + const report = new VotesReport(id, storageEngine); + const votesReportSpy = jest + .spyOn(report, 'fetchProposal') + .mockResolvedValueOnce({ state: 'pending', id: '', choices: [] }); + + expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_CLOSED'); + expect(votesReportSpy).toHaveBeenCalled(); + }); + + it('returns true when the proposal can be cached', async () => { + const report = new VotesReport(id, storageEngine); + const votesReportSpy = jest + .spyOn(report, 'fetchProposal') + .mockResolvedValueOnce({ state: 'closed', id: '', choices: [] }); + + expect(await report.canBeCached()).toBe(true); + expect(votesReportSpy).toHaveBeenCalled(); + }); + }); + + describe('cachedFile()', () => { + describe('when the cache exists', () => { + it('returns a votes report', async () => { + copyFileSync(fixtureFile, cachedFile); + const report = new VotesReport(id, storageEngine); + + expect(await report.cachedFile()).toEqual(readFileSync(fixtureFile, 'utf8')); + }); + }); + + describe('when the cache does not exist', () => { + it('returns false', async () => { + const report = new VotesReport(id, storageEngine); + + expect(await report.cachedFile()).toEqual(false); + }); + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index 12fb474e..28b28c77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@apollo/client@^3.7.12": version "3.7.12" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.7.12.tgz#9ddd355d0788374cdb900e5f40298b196176952b" @@ -962,18 +970,144 @@ dependencies: tslib "^2.5.0" -"@babel/code-frame@^7.0.0": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" -"@babel/helper-validator-identifier@^7.18.6": +"@babel/compat-data@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" + integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" + integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-compilation-targets" "^7.21.4" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.4" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.4" + "@babel/types" "^7.21.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/generator@^7.21.4", "@babel/generator@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" + integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== + dependencies: + "@babel/types" "^7.21.4" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" + integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== + dependencies: + "@babel/compat-data" "^7.21.4" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.18.6": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== + dependencies: + "@babel/types" "^7.21.4" + +"@babel/helper-module-transforms@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -983,6 +1117,148 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" + integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/template@^7.20.7", "@babel/template@^7.3.3": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4", "@babel/traverse@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" + integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.4" + "@babel/types" "^7.21.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" + integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -1060,11 +1336,243 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" + integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + +"@jest/core@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" + integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/reporters" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.5.0" + jest-config "^29.5.0" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-resolve-dependencies "^29.5.0" + jest-runner "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + jest-watcher "^29.5.0" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" + integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== + dependencies: + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + +"@jest/expect-utils@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== + dependencies: + jest-get-type "^29.4.3" + +"@jest/expect@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" + integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== + dependencies: + expect "^29.5.0" + jest-snapshot "^29.5.0" + +"@jest/fake-timers@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" + integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== + dependencies: + "@jest/types" "^29.5.0" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-util "^29.5.0" + +"@jest/globals@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" + integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/types" "^29.5.0" + jest-mock "^29.5.0" + +"@jest/reporters@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" + integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + jest-worker "^29.5.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + +"@jest/source-map@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" + integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" + integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" + integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== + dependencies: + "@jest/test-result" "^29.5.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + slash "^3.0.0" + +"@jest/transform@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" + integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + "@jridgewell/resolve-uri@^3.0.3": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -1078,6 +1586,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1099,6 +1615,25 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + "@snapshot-labs/eslint-config@^0.1.0-beta.0": version "0.1.0-beta.0" resolved "https://registry.yarnpkg.com/@snapshot-labs/eslint-config/-/eslint-config-0.1.0-beta.0.tgz#3a04ebe1edf3b91ffa7b9f903358d5135bd23f2d" @@ -1135,6 +1670,39 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== +"@types/babel__core@^7.1.14": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" + integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== + dependencies: + "@babel/types" "^7.3.0" + "@types/body-parser@*": version "1.19.2" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" @@ -1188,6 +1756,40 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.1": + version "29.5.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" + integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -1203,6 +1805,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== +"@types/prettier@^2.1.5": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + "@types/qs@*": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -1226,11 +1833,28 @@ "@types/mime" "*" "@types/node" "*" +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + "@types/triple-beam@^1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8" integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g== +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" + "@typescript-eslint/eslint-plugin@^2.33.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" @@ -1436,14 +2060,19 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -anymatch@~3.1.2: +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -1488,6 +2117,66 @@ async@^3.2.3: resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +babel-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" + integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== + dependencies: + "@jest/transform" "^29.5.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.5.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" + integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" + integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== + dependencies: + babel-plugin-jest-hoist "^29.5.0" + babel-preset-current-node-syntax "^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" @@ -1536,6 +2225,35 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +browserslist@^4.21.3: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -1559,6 +2277,21 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001449: + version "1.0.30001481" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" + integrity sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ== + chalk@^2.0.0, chalk@^2.1.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1576,6 +2309,11 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -1596,6 +2334,16 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -1608,6 +2356,25 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1693,6 +2460,16 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -1727,7 +2504,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.2: +cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1750,18 +2527,28 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -1772,6 +2559,16 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -1801,6 +2598,16 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +electron-to-chromium@^1.4.284: + version "1.4.369" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.369.tgz#a98d838cdd79be4471cd04e9b4dffe891d037874" + integrity sha512-LfxbHXdA/S+qyoTEA4EbhxGjrxx7WK2h6yb5K2v0UCOufUKX+VZaHbl3svlzZfv9sGseym/g3Ne4DpsgRULmqg== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1821,6 +2628,18 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1831,6 +2650,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -2036,6 +2860,37 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== + dependencies: + "@jest/expect-utils" "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + express@^4.18.2: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" @@ -2103,7 +2958,7 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -2127,6 +2982,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + fecha@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" @@ -2173,6 +3035,14 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -2228,7 +3098,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@^2.3.2, 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== @@ -2243,6 +3113,16 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-intrinsic@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" @@ -2252,6 +3132,16 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.3" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -2266,7 +3156,7 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@^7.1.3, glob@^7.1.6: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -2278,6 +3168,11 @@ glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + globals@^12.1.0: version "12.4.0" resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" @@ -2304,6 +3199,11 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + grapheme-splitter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" @@ -2350,6 +3250,11 @@ hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -2361,6 +3266,11 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -2391,6 +3301,14 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2433,6 +3351,11 @@ ipaddr.js@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== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" @@ -2445,6 +3368,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-core-module@^2.11.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + dependencies: + has "^1.0.3" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2460,6 +3390,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -2487,6 +3422,416 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" + integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + +jest-circus@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" + integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.5.0" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + p-limit "^3.1.0" + pretty-format "^29.5.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" + integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== + dependencies: + "@jest/core" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" + integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.5.0" + "@jest/types" "^29.5.0" + babel-jest "^29.5.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.5.0" + jest-environment-node "^29.5.0" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-runner "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" + integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== + dependencies: + "@jest/types" "^29.5.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + jest-util "^29.5.0" + pretty-format "^29.5.0" + +jest-environment-node-single-context@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-node-single-context/-/jest-environment-node-single-context-29.0.0.tgz#1959273b6b33b6ec63605863d8768488a247b91d" + integrity sha512-/XB09Hje38Kl5k9ISUpXNom3M4DQo5ifEsnELPFP5r3yrJDRyNQCEjL/9ScUN6z6UeF4FCNZUsiJIX/tGtTXNw== + dependencies: + jest-environment-node "^29.0.1" + +jest-environment-node@^29.0.1, jest-environment-node@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" + integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + jest-util "^29.5.0" + +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + +jest-haste-map@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" + integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== + dependencies: + "@jest/types" "^29.5.0" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + jest-worker "^29.5.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" + integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== + dependencies: + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-matcher-utils@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== + dependencies: + chalk "^4.0.0" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-message-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.5.0" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" + integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-util "^29.5.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== + +jest-resolve-dependencies@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" + integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== + dependencies: + jest-regex-util "^29.4.3" + jest-snapshot "^29.5.0" + +jest-resolve@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" + integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.5.0" + jest-validate "^29.5.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" + integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/environment" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.4.3" + jest-environment-node "^29.5.0" + jest-haste-map "^29.5.0" + jest-leak-detector "^29.5.0" + jest-message-util "^29.5.0" + jest-resolve "^29.5.0" + jest-runtime "^29.5.0" + jest-util "^29.5.0" + jest-watcher "^29.5.0" + jest-worker "^29.5.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" + integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/globals" "^29.5.0" + "@jest/source-map" "^29.4.3" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" + integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.5.0" + graceful-fs "^4.2.9" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + natural-compare "^1.4.0" + pretty-format "^29.5.0" + semver "^7.3.5" + +jest-util@^29.0.0, jest-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" + integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== + dependencies: + "@jest/types" "^29.5.0" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + leven "^3.1.0" + pretty-format "^29.5.0" + +jest-watcher@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" + integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== + dependencies: + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.5.0" + string-length "^4.0.1" + +jest-worker@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" + integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== + dependencies: + "@types/node" "*" + jest-util "^29.5.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" + integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== + dependencies: + "@jest/core" "^29.5.0" + "@jest/types" "^29.5.0" + import-local "^3.0.2" + jest-cli "^29.5.0" + js-sdsl@^4.1.4: version "4.4.0" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" @@ -2512,6 +3857,16 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -2522,11 +3877,26 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + kuler@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -2543,6 +3913,18 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -2550,6 +3932,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -2579,6 +3966,13 @@ loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -2586,11 +3980,25 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-error@^1.1.1: +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -2601,6 +4009,11 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -2700,6 +4113,16 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + nodemon@^2.0.22: version "2.0.22" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" @@ -2728,6 +4151,13 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + object-assign@^4, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2764,7 +4194,7 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -2808,13 +4238,27 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -p-limit@^3.0.2: +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -2822,6 +4266,11 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -2829,6 +4278,16 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -2849,11 +4308,16 @@ path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +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" @@ -2864,11 +4328,28 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -2891,11 +4372,28 @@ prettier@^2.6.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== +pretty-format@^29.0.0, pretty-format@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prop-types@^15.7.2: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -2923,6 +4421,11 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +pure-rand@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.1.tgz#31207dddd15d43f299fdcdb2f572df65030c19af" + integrity sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg== + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -2955,6 +4458,11 @@ react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -2981,11 +4489,42 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.20.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + response-iterator@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" @@ -3057,23 +4596,23 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +semver@7.x, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7: + version "7.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + semver@^5.5.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.1.2: +semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.7: - version "7.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" - integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== - dependencies: - lru-cache "^6.0.0" - semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -3146,7 +4685,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2: +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -3165,6 +4704,11 @@ simple-update-notifier@^1.0.7: dependencies: semver "~7.0.0" +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -3179,6 +4723,19 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -3189,11 +4746,26 @@ stack-trace@0.0.x: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -3203,7 +4775,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3233,6 +4805,16 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -3257,6 +4839,18 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.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== + symbol-observable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" @@ -3272,6 +4866,15 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-hex@1.0.x: version "1.0.0" resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" @@ -3294,6 +4897,16 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + 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" @@ -3325,6 +4938,20 @@ ts-invariant@^0.10.3: dependencies: tslib "^2.1.0" +ts-jest@^29.1.0: + version "29.1.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.0.tgz#4a9db4104a49b76d2b368ea775b6c9535c603891" + integrity sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" + make-error "1.x" + semver "7.x" + yargs-parser "^21.0.1" + ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" @@ -3375,6 +5002,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -3413,6 +5045,14 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +update-browserslist-db@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -3445,11 +5085,27 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +v8-to-istanbul@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3495,11 +5151,28 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -3507,11 +5180,39 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" From d0c773395cc015d2326bf64d194866a9e03527da Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 23:06:29 +0400 Subject: [PATCH 023/103] chore: fix github worflow --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8cadb0c5..84385ae2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,6 +10,5 @@ jobs: node-version: '18' cache: 'yarn' - run: yarn install - - run: yarn build - run: echo -en "HUB_URL=https://hub.snapshot.org" > .env - run: yarn test From dee6171b2b856fe5784e46fe5d454d1abd7b6e83 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 23:14:49 +0400 Subject: [PATCH 024/103] fix: fix folder creation --- src/lib/storage/file.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index f0d1df63..d8def1c1 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -11,7 +11,7 @@ class File implements IStorage { this.folder = folder; if (!existsSync(`${CACHE_PATH}/${this.folder}`)) { - mkdirSync(`${CACHE_PATH}/${this.folder}`); + mkdirSync(`${CACHE_PATH}/${this.folder}`, { recursive: true }); } } From 9821586398527a6518a3a523262dc177af7cabae Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 23:18:37 +0400 Subject: [PATCH 025/103] chore: rename github workflow --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 11e621e2..4e684e4f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,4 +1,4 @@ -name: Build and Run Lint +name: Run Lint on: [push] jobs: build-test: From fbdefa38f6c8f68891d9786189fada7641a227b9 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 23:21:03 +0400 Subject: [PATCH 026/103] chore: update README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2be0c130..a5cfc345 100644 --- a/README.md +++ b/README.md @@ -54,11 +54,12 @@ import StorageEngine from '../lib/storage/file'; yarn dev ``` -## Linting and typecheck +## Linting, typecheck and test ``` yarn lint yarn typecheck +yarn test ``` ## Usage From 519a49974da374e7677ac81b02b7d47dc98d9af2 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 22 Apr 2023 23:55:55 +0400 Subject: [PATCH 027/103] chorel; add test for weighted votes --- ...451459ddd18d4b0bce37c22aae601128efe927.csv | 1176 +++++++++++++++++ test/unit/lib/votesReport.test.ts | 25 +- 2 files changed, 1193 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/snapshot-votes-report-0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927.csv diff --git a/test/fixtures/snapshot-votes-report-0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927.csv b/test/fixtures/snapshot-votes-report-0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927.csv new file mode 100644 index 00000000..8f53acdd --- /dev/null +++ b/test/fixtures/snapshot-votes-report-0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927.csv @@ -0,0 +1,1176 @@ +address,choice.1,choice.2,choice.3,choice.4,choice.5,choice.6,choice.7,choice.8,choice.9,choice.10,choice.11,choice.12,choice.13,choice.14,choice.15,choice.16,choice.17,choice.18,choice.19,choice.20,choice.21,choice.22,choice.23,choice.24,choice.25,choice.26,choice.27,choice.28,choice.29,choice.30,choice.31,choice.32,choice.33,choice.34,choice.35,choice.36,choice.37,choice.38,choice.39,choice.40,voting_power,timestamp,author_ipfs_hash +0xF41C5D9B2aef36ADB47F520380108eF5D67A290e,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,2045.601142949226,1671156046,bafkreidjlyexyhtjp2gl5kmtdvvalzl6ij7clwwvfsp6sp2y4a6exj52lq +0x5FB33d75A1cFcdC922e736c06e01c1505b4643Db,,,,,,,,,,,,,,,,,,,,,,32,,,,,,,,,,,,,,,,,,,550,1671156127,bafkreihkzws5igjgavsrzxj4tlqh7757gi3e36g5dkhxyohe2h7w7rpv6m +0xe99284ca6742f3d539dA5E7407997744059BD620,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,0.54218,1671156130,bafkreiet6iafkawlwj6fjbjacwidiwmled5crrgpzb4t2l2fvjjcbh6uxe +0xE896675803DA7Df23c9BbDA3646BBD82593B6668,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38481.23950989474,1671156255,bafkreiftjv75iiyhatazfir6vy3wqbeeas7clnodlthtedzsms7z3lgoqe +0xEAB974fae1582AA8707586B836C7B6313C47992F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,16168.355365777225,1671156310,bafkreidk7eizyyqio45d6elnq4ze5lhtdrotydtwcsxgps3rjmkrs33mca +0xE0f5AFBFa874cEF79E67deb4F9BDbf96F36c9083,,,,40000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,40224.34710385403,1671156328,bafkreifzs5aoz2ziuhd4rxbxkilgovka5vilu6j5gbfgihijgoeonkwhhu +0x831283A628f377Ccf760d885968c6A0b8019c22a,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3988,1671156624,bafkreig72h2egoxutikt66mshajq5glnuad2i6gsdqfwnc2kxcqhmimx6u +0xb7905247daA1E10CF2Ebc70A47DCFF5fDD498b40,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3323.6744889186693,1671156626,bafkreidox2axxhr7whwpxvu6qhl6q7evzenbdnhpxl3vydsiycvotv4fju +0xC49e8918ce75751D2fd072C185A489c375A3510a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,12365.31449161642,1671156756,bafkreiausx2dch43v6kuu3ou2xjgf3zanpd2wg3pej6i4jv3unw3gsz7i4 +0x97932301B956B8487132975D331b0A9aB1844AfE,,,,,1,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,1,1,,,,,,13772.633469978586,1671156778,bafkreiabrjtfqgh2ks6tb22ru3yv7y2hoaljz6swncct4iokymuilkak6a +0x636ba3Be5AB3a03FD164327C373d6eae15b0fc22,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,16065.77621448325,1671156830,bafkreiadu7s7sav46ullrvsgjzjbilt6bykeh3ekw5uovf2pdbbf5363ha +0xaf1807F545828845a37Bf1db6F6b25B45f37f7ac,,,,,,,,,,,,,,,,,,,,,,,2111,,,,,,,,,,,,,,,,,,2042.2131838269547,1671156915,bafkreif5c7sfpiuhwtgc4ocrqa3f7dy5jkuwewn5diq25hbvl7i26a52qi +0x89A1145FCCAC1a2a9350eC1A4A486E4458D26274,,1,,,1,1,1,,,,1,,1,,,1,1,1,,,,,1,,,,,,,,,1,,1,1,,,,,,3503.3620550703067,1671156970,bafkreig556hmvzgugsbh4c76f4lih3a3svz54kncc5nyhtosmpncv3wiki +0xE6e5F2dBE9C7999465A4369D785caa893009ec3f,,,,,,,,,,,,,,,,,,,,,,,,,,20000,,,,,,,,,,,,,,,12000.812044929484,1671157067,bafkreickn5oeqi5u3dncjpamlmwhlq3qwvmscl3nozh254pfcz6ogxx3im +0x893480D472bb4bFE04d3768e3c9e7a6E4Cfae7b6,,,,1,,,,,,,,,2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,4609.071407951126,1671157117,bafkreic5yx7ki5qzl7ppyoqh72w7v6afuyemvfiqwhurc64nln26y47goy +0x245719EDdF2d68ebf8AA54dB2550891128962B42,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2001.1510430544963,1671157126,bafkreidot5aegeqwt4kria3plri3jok57gnzodqt75z5syj7oixceozwcu +0x6e9078a3773a5035A710709901c41e1d9131db6a,,,,,,,,,,,,,,,,,,,,,,,,,,20001,,,,,,,,,,,,,,,164.43402023456864,1671157168,bafkreidpkge3qlzr4tv4ilnawhhlba2egsbik7ihs44rnylujlgts2avja +0x2A59d2927541d17C0fa19140703ECB4b697b765D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30000,,25984,1671157213,bafkreihgs573mvyippodxvicuob2r6lc2w64askbxg3lelhoujdnd7qnty +0x83BC34e69a7F79116787f2FCdcB22D655fFD9a5a,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,318.14657130215835,1671157276,bafkreib6puvqtoimggtaeyhznqyxiuquijayczswitru4egntvludhftdy +0xCb96594AbA4627e6064731b0098Dc97547b397BE,,,,1,,,,,,,,,1,,,1,,,,1,,,,1,,1,,,,,,,1,,1,,,,,,1,1671157302,bafkreidpjy6vvzmiwurb4yy4cw4yxmwuhoqt7nsh5mqy5rd5eyilwt5tq4 +0x34f0F1a9AC76e45211D42166346C4289258d7a10,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671157396,bafkreifjtpynswxncptf2gjtpl7inuj5is3hiya4qo7klokws6yyb7jwke +0xF51dD21fc5Ead51c10Cb6266628A39027492A65E,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,19390,1671157475,bafkreifrvvrdzbbawm65tnxicap2rrq5hhzodfhxkf2u7rm4soyvs4wjqm +0xBb08C0f067f80237636724e28e3414C4fef128B0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,3.485115172958701,1671157512,bafkreihuelyge6h4fq5ucjmbmgv2m25emduq5awcdplwcu5z4syhxf4yza +0x4B0107E73D2FE5F3aed35652452B0eB4cD121b89,,,,,,,,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,62.68404375615104,1671157512,bafkreidxdj7qxohr37g4x6ifdlu4htxwaxshxl5xjdcbx2glmiydr4suc4 +0xDf4C73730b431d64c4c2814bB9e77A4De8530216,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,9679.118307532808,1671157549,bafkreiae2e3pw4ivcjvuyu6zh6f4bxcfdi3mlvf7zafbuh5iruf3cjy46e +0x2Cf84928261F655A47d04EC714D3Bedf9375De46,,,,,,,,,,,3,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,13251,1671157588,bafkreiekfwutuvoml57fdygxt6pjhht6dns6rog3sb75iuzs5ofmsocz7m +0xA188A3b49d793568709Cb18d70Ff135FE3A4563B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2900,1671157704,bafkreigpkr5qahc2rokavs6vtwjzxmckufpdef3agitovmv3xnot6a54gm +0x5e7f2929c6020baF1aB53B2172AFB41Cc6F635FE,,,,200000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4886.813847712151,1671157832,bafkreifpc7qnqtdpbch4ubstgvikrfrqd4m4nngtcro6trjcvr63rtxbre +0x8B30540C770CCfcf4b86bc5478Ba1803eD313841,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.24266348,1671157966,bafkreihpiucq3oefvim2ca3ib4n7dhdoy7tl5pdy3o3yvnjaoew44ihhqi +0x9519D34cF0Dd9CDa22CF84d9b9f8dE5A7F22600c,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2011,1671158020,bafkreicm5zwnbzvtnuoodjyklpxgmge6ppqrl4azyqthje5vya6eh34qiq +0x2fff0F98909bAE74d00583e65DB3aDe8a4F634cA,,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,38967.045543921595,1671158118,bafkreih4frliaxk3hfzdgdv2ytqb4fmkwup7xk5fa7lgbxbn7ruhunimby +0xA0556E8e8b617f184c6948DF2c08AC795036DAA5,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1671158154,bafkreih7svldk6houayzyg4z2ittvt33s7yee6726uiq7zbospu727czb4 +0x38F0e547f6F617967b88043DD77195514eF85EDA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.0799744827364065,1671158391,bafkreiakl37r4mpofxcbsx5uprzc2ikkxx2vsynajmwx2hhyl5n75fcmzi +0x4278D3E39f25D690B2d060c119AB2478fa09AFf5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,22504.390309555856,1671158496,bafkreidnsjt63jqhgzryy5md32qzv7abmdxe36qzskuaqwlkp5cieit33m +0x770BEbe5946907CeE4DFE004F1648ac435A9d5bb,1,1,1,1,1,2,,1,1,1,,1,,1,1,,,,,1,1,,,1,4,,,,1,1,,1,1,,,1,1,,1,1,1,1671159224,bafkreicg7e7j7ynifsotgdgqhrj5h2xrgvyivm75wg56l2ebpzqirzp5zq +0xa61AC31A55690F3bf65fC7d67052693Da564882b,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159531,bafkreihtobnxqebtc2rfowddeaaecp52bxhxjhsozsi53accclcjt3x62y +0xE9b2CaDBc6cBE6E504C9d61F6Bf583D9AD15b14A,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00008,1671159553,bafkreibzezdavh23ffx4f7xsktv7qzpaekhrvybobs54vtrp4jswrtjhju +0x0d323D390C75E717e5807fc8B97ecF9C26741AB9,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,53943.464862442845,1671159571,bafkreifkvjz3vtjxb6xh3fgqjrhgp4r77pgkvhlce7br3ghfvg5fpzhgzm +0x0516cf37B67235E07aF38ad8E388d0E68089b0F2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159580,bafkreie57p6wgpsd5ocp3tthbftxpq3vtr33gc2pevdcuoql3gc5swvq3m +0xbDa0136ea391e24a938793972726f8763150c7C3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.2,1671159593,bafkreiavmk7uls2embdrgahx5lsq4tc4q3waropafmwt7xqb7kk2pxejaa +0x9Ba6baA919BAc9Acd901dF3Bfde848FE006D3caE,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.1,1671159605,bafkreiaipgdrqpryhh5c6oryurgq7odz4uesujhjpl3azkcfr4xe2ualj4 +0x35E6fc00e3F190A8dFe15faa219368a01028ec14,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.2,1671159618,bafkreibjmoufxtl4upgm2fahzgw4rzd32n65xcmmfh2lq2hh7suub3m22a +0x5E12C24d4564d7627B8357dc9e8337C1ca10808b,,,,1000000003,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50503.09109547703,1671159627,bafkreigupmrefwaauznmxpei23ltez5f46456ygtrj5eadwufrlmr6leha +0x0fF9B6AB6Ec58ceB6D5ae8a1690dd5a0959aD002,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159629,bafkreib6ueanlw2dfsi4oz4egxh5uf66bzblvh2asqmn4coevxhquqw4qm +0x344b1E4Ac175f16D3bA40A688cA928E3768E275a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159641,bafkreiduaqzgnexf6r5mdei7x7p2g22bqwlogvbeajpizwprdpv3j3h3sa +0x70Ddb5AbF21202602b57F4860eE1262a594a0086,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159653,bafkreifb6wrcm4pncqine4vtd5qg5bxkppoiciotoc35bhfmpgwfuopwj4 +0xc97370F22eD5ac4c7B24A8E1ca9D81FEbb3b9457,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159671,bafkreia6ycwco35ahzmf7uga76hct3gkcl6pjof632tibeqzsb4p4xcqa4 +0x707D306714FF28560f32bF9DAE973BD33cd851c5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159688,bafkreigatxnggwon7u5hit5npb3ga7qbnhjligmxmkwvkzlmosnqdc2coe +0x04029bAcA527B69247dbE9243DfC9b5d12C7Ba60,,,,,,,,,,,,,1082,,,7000,,,,,,,,,,,,,,,,,,,,,,,,,8082.236937330858,1671159707,bafkreiayr24uifpsaxpcslm445a2z3q7ibknt34dcguostxlz5arczf2su +0x15Fab1cC5262D69853b1196f74d38C7FC96Fc6D7,6,1,1,,,,,,,,1,1,,,,,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,4,1,1,6.175877050947295,1671159750,bafkreien4wr7dfnm7v4g3xmdvepi33gfs4udxxwmhnbzjo6kp4vgan7nly +0x1b5b4fCEDF1252cd92496a2fd5C593b39aC49b01,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159798,bafkreicngmnrmcq55fotduqqrlfbunihmnx422zqin7yt3eqpxno4a6dqq +0x2D5823E8e8B4dfbf599a97566ff2A121Cc141d60,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159812,bafkreiblfgddqmffh566sug4r2ux4mwhwb6e4ujvrbuioxhewbbuvc65ci +0x76AC6Ad4e4E7c2e0b4Ceeb30745bd53df3a85774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159824,bafkreidinkis2gynbjh45hts3o4p7xsim7f5lfxoohqdu3pvmnlcfugr64 +0x00432772Ed25d4Eb3C6EB26Dc461239b35cf8760,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.44,1671159837,bafkreiephpggvijly4eicufwjxrtzdeqlbkpkyrkp4tqs4tflqgpktlzmi +0x7A3BdeE62dd34faC317Ae61cd8B3bA7c27ada145,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159849,bafkreif5xdqlawjqpwbzcbzbkcgxzfnwvyagfm57stfcfrnwuc6eglka6u +0x972a8B7D891B88220780421fE4D11f174354cEEd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159862,bafkreiai7il5zodmd35slr5izedbfdfcd2l7peark45udmkwhdwubfulym +0x1B9DA462D07512Fa37021973d853B59dEbB761Dd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.01,1671159874,bafkreiaqmcq3ksalkxi2q5pl5a3iumltdbbm2qdvaqfv4inxbf7pfjstbq +0x79ccEDbEFbfE6c95570d85e65f8B0aC0D6bd017B,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.002,1671159886,bafkreicudnelr3aaitqehfv2v4a2jkjypni3zehkvzp4np3wclmxtx6yvi +0x119383B0051e920D6161cEe971247D625B8D69Cb,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0009,1671159898,bafkreiftfammhrgvmo3gdh47thhhb6qgp7do5himfvvn6n4gzvxwza5z2y +0xeEE5Eb24E7A0EA53B75a1b9aD72e7D20562f4283,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,106638,1671159911,bafkreif4pohigbg73eefcwtls36w6uw7kf6klnnlzswkn72sfx3xsdlyca +0xAEAf8371BF9Df3eDB08BDD7D05099D49965fDf59,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.000004,1671159911,bafkreifypwge2mbfzg7vminigdzjaqvsjj3xrjrxfz62xgjduxbbafmdua +0x787c8bE38E968Bd0b41eaAbe0b69d1c32ea09262,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00008,1671159923,bafkreial55xcylcrdxpchclubab3e7geakahkwzqxz2u5k55aeiwrvzatm +0x4AeF8B6CA98cA20087E6b0827a50868172A32AFd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00007,1671159935,bafkreigfeip4js46yjlades4bimpx2ftaofshobm5ciwtocozwz4i4d3ou +0x9FA7d42Ef9eb89ef6FAbDdE88207FbE6AfA70626,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0000001,1671159948,bafkreihexplhzdu2k5c2hz7hij6oxthdvt3rxxo4tdk72y6zf7ypvxyrsy +0xD03Ad690ed8065EDfdC1E08197a3ebC71535A7ff,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3.1468659,1671159962,bafkreid5x2u2pm37cxqtksnunpecrjvi4f7eekz3bzuvw3oidc3lrjulne +0xfD82C31929F370D00168DF5B5B0c9B8f80bC4315,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159974,bafkreialy5c7cf7f4optkif677ir5qhtkor2gtmu5pkt62giwd3gbxwnjq +0x0E26F5bd12EafaE9753E2741f2dc151bE894070A,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159988,bafkreigdjecwik53vifayvdxvhvie4owhgjrkwxh3d6llswuwtjysxj3qy +0xb00933F18388a77a85f00BAe9B50Af4299c4D0ba,,,,,,,,,,,,,2898,,,,,,,,,,,,,,,,,,,,,,,,,,,,2903.4796369864393,1671160036,bafkreif5qxgya7ubxmfoami5fgm7izt2wvr3huollum5xcucomsfveemem +0x68F516Cd11A1f8e49ec826fD5aB9D64114D2d31e,,,,1,,,,,,,,,2,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,2959.7394101397317,1671160145,bafkreiha2cx46nzsx7sbiva4ikveq4rq54cnb5ql545dq7h2kdnvkc5ovy +0x76E4f864bbEb60Bee66Ff5BbcD32dEcAF7FBDE71,,,,,,,,,,,,,,1,,,1,1,,,,,,1,,1,,1,,1,,,,,,,,,,,1.8733765535654587,1671160210,bafkreiax2kjiv2eiezvyq7p5biviwcgvxtzccokfd4wmp2qlr3ngp2asra +0x8Fffb08a892B348C3df82695F55F866D85BCD358,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.16,1671160363,bafkreidw3ubi7rmbgle2hqu2c5kkhr5dsroizbhnl7i7eaxutsu655mtuu +0xAe74399237E02458aa42283e7c3ef2929AD4896C,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11.770886492512252,1671160414,bafkreidihmmyvmezimhcrmf6t2ainekinqixy655f7xvhxlyx3tlaqaedu +0x4CcBD2273715c283490959081eAD820Dc297a121,,,,,,,,,,,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.11,1671160789,bafkreif3s5niz5jxl4rizfqlujau3hjvpnbgddp3khyfpofifk3oaoxh3u +0x3851F114819f93451cb0D1D45A89dff974aBB50f,,,,,,,,,,,,,,,,,,,69,,,,,,,,,,,,,,,,,,,,,,355.2900106802586,1671160816,bafkreicohrvkwgb2tvogedxkmn4xwndyqeonbsuyydiurxqwrm2vn3ukuu +0xc249858a122387d54b92191aC974E8628bCCe34c,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.249581110121209,1671160897,bafkreibek7q3edqu3rtdezhvgb3or2hur5elwhoa57mvlduve3bxz65xhq +0x3Da0B023110B73b50d1Ac5eDDF4D381102cb78b5,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.05,1671160907,bafkreigxpujrqdavbjzyw4gnjy7cvzrs2gxpbnzol46l2vmgt6k323as6q +0x6C2b9696627612FB7656ABEC3b0E9Ce4c6E98B64,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.05,1671160929,bafkreieevf3i6jg2a6sdi5qjcwmf7cmq27iiipazsowx5bt3yql4yy2ojy +0x0fE35CB5c7d2dfD63Eb4eb9e02A6f20117a3303b,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,119.84283184747311,1671160941,bafkreiar7w5rk3k5zssd4s5k4w3ivrk2b2s4ubti4ufujkeewk34fx6cee +0x1a2D03e71D96FD7e7389aF8C28E2DE834247061b,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671160968,bafkreigbmzptb6ufmmer5gvquvia7mzhsriweikevl54knmbiyhspsfgfm +0xF58DBd74f26E4bDBCF2A26e2F848E8348530f0e4,,,,,,,,,,,4,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38450,1671161091,bafkreib4m3x52epku3byvbg7dmjvmdzyw6nvjghwlr4plzpbrkgyueibca +0x298d0f26472e364Ea84090C80B09b187098F84b8,,,,,,,,,,,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.11,1671161093,Qmc6XWhytKx7yyu3UiaA1zYdHWedYzu6kfwCAYjAJonBnV +0x3DbaDc86d19416eC16D81aa07fF2609E6241E7E9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,0.023372655047747,1671161218,bafkreienxiocvz6jgr3omeeku5p5pkm2kw6htobvu4ko72fr6mcmqrjp4i +0x85488d8616Ba29219a8EB0E25229ff36E42ff1fd,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161258,bafkreigk5mpwwmwuyfrzulummqxppi4da7rj7tdhh7g6hmjazta2zoiuhm +0x48a19Ec96B8750B22dEb049Ae9916094aA03F3C3,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161263,bafkreifpobshktji4dfgsk3pzwhmm7uxotovk5whubtrdfnav4m4jyyn34 +0xbE4Eee9ffbD539FcBFD93686b703dFe200191Cc8,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1.2,1671161363,bafkreicrwhzcmfu5psggww5dxjwnczfxsm3hxj4lprexd2ail6n54ppsnm +0xb4093fD7b67b0048E8a72fe60a63a80AAc41D34f,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4094.6963333839544,1671161388,bafkreidrvmxzfl7xszngfn4t4hjbsny3pomkd2eycfxp273sdseh4tolga +0xA55aCEDb58B498fD1CA0a7287e3bF7044E592ea0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161407,bafkreieh5xubesu4aarrzfmcdrgynvgdcjjrpsrmz74dourkvarvwp5iwi +0x989fE87EE8c8DE837908D4AdcbE575aD8b349191,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161557,bafkreigudji33zhnhm4owjqiwqtqh2yuc6xpg4dtigzcqgtfatzmnc6nky +0xc2EA013e73E30BAd228774412fb611b5f481e378,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161604,bafkreif6bkrbqg5urusciwrbefws2qmmdfr73jfcmleulbwullklebdefi +0x9Ec98c18247Ce0d90de4613290EC8247186249e5,,,,,,,,,,,6600,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,25526,1671161605,bafkreich5dfkfunu33tzlxtcbtqqffxmzevafpegh2drluz3bntsg4qmiq +0xd18fbeFDDEA78Df614915234939619c9bAD0c18B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161650,bafkreiexug2fpfb7qye2pg2mqlwvruzwpxaljdg4rddwkkfcjyam4n25i4 +0xaf6346c448B9904a2af6Bf07E127E93d016f7B8D,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.2,1671161667,bafkreibompceqxf6hn22zaey53igosegzd23hccy2wgkbhtcfd4iejzh3m +0x1be693074c32541919Bba91aC873464A29c09D68,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.20455238594870762,1671161714,bafkreiahi3by5xydabntvqnr55dtuagreb46sfiwswajfhfdewzpydnwae +0x808c9062C52bED82d09e7187E6b7B0eE75eE98F6,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161715,bafkreidvod3lhm3gdle7kkxhavllj7xbaxa5w2e5vsmbi55dr2rohls5qi +0x2855C893eff9A15236c293e8dF845a76CC325c49,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161846,bafkreicwmfnarlxwi442b6wyx7lvd5qtdufvltjseytzx5e5l4mzzhr7hu +0x31A95aDAa9435f6381Ab41b38C6C8150Bcb845E9,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.22,1671161965,bafkreihba5nrwtsava6qmumohhgokchtnvsq2satrktqqcknda35bsbqxi +0x38cC3b9e7f3A747958865cD95F1141Aa58A6Ab24,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671162031,bafkreicvggxrrddncgyszenwgoqs5v2e4ai3meyn5hp5wzvv3ukkscl25e +0xe58F5BBaB1Df889d399f21585404db24926c1D78,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.6,1671162054,bafkreiehv4arpwmqsefszeoz52uglfdzpmedktxqd7fwxvdwjw53jrrwla +0x1684C382352FA8992E2d12264b08CBFd8E06b7b1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671162071,bafkreibwqyrolwczc7ob4azlncaqadzq3yrpqkw3z2p5bxd6twmc2olluy +0xd23b06012790E2D8E01a7607127588b609C27f0C,,,,,,,,,,,,,1,,,1,,,,,,,1,,,1,,,,,,,,,1,,,,,,41649.92083053342,1671162153,bafkreihxwaj7kepcb2g5p72klgdfwznft3o4ssgzvmehiz5mqsnyaeaeda +0xDF6481be0eFDF8ADf562Ba86b00785dBdeeCaBC9,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.570583372048844,1671162172,bafkreihxlpz4pl4rnpioijiahf5qeaybdibnwp4kr5yycq3j73gbdkfowi +0x0D64212576F75b628F670B59b64A74580e24F0c2,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671162180,bafkreifx22opfj4oceylqysvucypujtpettihj7bhd3h5d3qzn4tvcd4bm +0xA78E6515db1986f3FE47C486Aa9177932106c769,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.24111167894688745,1671162203,bafkreie2npze3tw4jyws7rhrd4fomqdgoeioxy7yofrya6xpbmj6msf2ti +0x87f0b29265fd4C8bbB078CC9e1A1C88FAf83240a,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.47389991281222127,1671162271,bafkreic7v6zhmm446nwfx5dshpbqf3m5z57zbhim5ic45zges6oj2cn2he +0x1b858731cf2d0B1033768c49476e31B4f985ca75,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.52,1671162382,bafkreihom744ojq6zhrc3l2nbsiklyd6gtqtp2o2alngf4ftnhdmsa2h2y +0xbd95c7cE1c6FCA2cE0B7C1B86F79DeE0Be5Db7C8,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671162393,bafkreihv4zr6piqb62ouvw7wvxnxcs7jtpxigegnvfouaqmglm75pqj54e +0xa6D5D51F6df223778B169D63e0eD9AC017A055C9,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.5543750183298607,1671162412,bafkreia2omlwe64as2vspptpamlo57ohyvcbn6bfppoavza4yuqz6ufoje +0x9195b4af13394A76856b698bae738515E90d01d3,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.26400527713452,1671162480,bafkreihdalbxo2pnnfhqdqmipni4s6f5vwb2wkye7t4ne5jisiv2lmzjra +0x5Bf6d03fDA1Ff0f75F4C98AB7C48eA8c5f0556FE,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.44219984121561223,1671162570,bafkreihljj3i7auold2qhtetlbocwtyivcq5vk357zgfhwvrp33gfysg5e +0xBA3D4228b2Fc5b6751eEEcE88eae2Ebbb8008f42,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671162624,bafkreifjzmo7t4wozd5kapefc5bbiu6e7zolxdbmn336dy5tavij6ofxhe +0xd611A3350321558BDa7d15Da88e4b74eaF4c8986,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,166202.39188604843,1671162956,bafkreidjadjszwzfdrmapype4hvpyz2v5i3hujr57nyul4z5ukpcuwl6ku +0xeA5bbAD59C45A02AC0B0F48C9b4b7CcBCCd73c36,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1665766122894211,1671163039,bafkreicrfrpdllcgleyeyjczyrax4e77ikuhizwrhqnjcmlia2v5ftolj4 +0x2119973710DB14775d696Dc3664D623A1DdC2e10,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,31.748872879416236,1671163040,bafkreidgcxqclzp2si6cnzik3ivsyxvqhrcbgkzof2koaxvuc5d5uo6v3a +0xBAab83De8DbA764bF02a530cad33555bD23eba22,5,5,1,,1,,9,13,33,16,13,12,7,5,6,8,6,8,8,9,19,17,10,8,8,6,3,3,4,5,6,17,10,2,3,2,3,3,72,15,8.67,1671163045,bafkreickaymttvpi726asqbtpzlrhqvva6pi2wcnc473hilwa6lzwkbk5a +0xd49d7f4b390169C80F13a828198FDf6Adb7aa206,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,9296.76689959718,1671163286,bafkreietvx5rlzsjxgcckzoevam5m2atwyiojzehpfg6av3c7ulpv5yrvi +0x2C2FC2f6c1B1c2cB6d46ca0d66CFC372e5183C16,,,,,,,,,,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12812,1671163302,bafkreigxtp3xiorkzmyub7jdnjxfxjduglrgk3ab3s4xqbofaqifkkwdie +0xb30a154d44c97262cECc51E4c429B2D138a161CF,,,,,,,2700,,,,,,2700,,,2700,,,,,,,,,,,,,,,,,,,,,,,,,8437.596019286604,1671163323,bafkreigxsbrsw6igcs7tqb6bgvyp77zg2bdcsxeaqp6en56f6bv4tl3ete +0x13dDA63C28bB95FE9822FEA43ad5fEaA966636a9,,,,,,1,,,,,1,,,,,,,,1,,,,,,,,1,,,,,,,,,,1,,,,0.2772924544975298,1671163471,bafkreifjpgczs5gn4xnsxwhdt4zgwlohq555fvtctyijlyh6zycjed3ewm +0x08D816526BdC9d077DD685Bd9FA49F58A5Ab8e48,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,5200,1671163491,bafkreicph6j5fur2h4gxj5yj44qtiuep7m3hf7wefdbstjhnpqfaoesuqu +0x2744a205b3a599508295e53d0290b949104d57F4,1,,,,,,,,,,,,,,,,,,,1,,1,1,,1,,,,,,,,,,,,,,,,0.1,1671163639,bafkreiekeeb7w7um3h7d25lrglujiewouydj3auxi7sdezvjrn35b5nkke +0x13E35b33b929BD96A004ea88d1fec552B205a23B,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.2218586168842042,1671163771,bafkreift5jys24uadimllp5z6fqhmlznmur3yx4ho4zxvbxrglmd47jici +0x2259cC4ff58Bcb4A748e2143EE35BE3e0564fEb7,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,35360.863495716476,1671163800,bafkreiggxjetdtpzallbx3tvuokisygifrdjtgzgsrplcwlrrc3phj4ocy +0x8AdeA5A258F0e4E0bD02FD3a833Ec25f2A4672F4,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.26724951,1671163979,bafkreiagwyhzdj7cvrhjsiwqzoxkv4nf5kabqadqfx3dqt66oqfhi7hvvq +0xd7fcde28dfFa87790e2f0bB6fD0D1496A8e7cF0E,,,,,,,,,,,,,10,,,72,,,,,,,,,,,,,,,,,,,8,,,,,,12641.41,1671164204,bafkreibdfbrpny2qbhdcfc6kt37hu5hp6rhuuayqgi3wg7pluy6e5oa4iy +0x7Ea9b8ba0d889Ba42458f657Ed27244AD593dfe7,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,510.2899174529677,1671164369,bafkreigx2aej45op3mkeag5tfdloligqslw3eye7bmyjuj53c3pyzba45e +0xe2aC0fc8d6E1041BdDd90BD1C2156785bb5dcf4D,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,214.07882032374124,1671164403,bafkreieyb64lwfkcgxmebxupmzmmdkv6ef2ckzpvrnzqzdkabblbk2vbfa +0x1bea80C2b888a6A44fC43B87e5c84823E97Af614,,,,1,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,1671164488,bafkreiga3nxpnhimb4rhbdlidf7gnckpbugbsadvl5rpw3zfwhht4d72kq +0x7f6ca49D1e50671A586A76Bb082dD6b3F73feF17,,,,,,,,,,,,,250,,,3950,,,,,,,250,,,250,,,,,,,,,,,,,,,4021.594760011768,1671164540,bafkreicwqlr2xs46kyffxgti7qrsjvvmgxnnx34u6p4aojtdjopjley4be +0x8eEF779818Afa953b0652e45438423ebE089F55A,,,,1,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,1.1841165449058306,1671164556,bafkreidzosexbizketmz4wi4dc365mnftdql3icmap4ktttboj63hlty7m +0xdfBaeeF21396BF205D4B7D23345155489072Cf9B,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.25,1671164659,bafkreieopi66x2td7bbh46nqgq5xtct3cv3m3p4osqfp5nyqxm64u7y4re +0xa1aafb06268f3396c4683e3F635A4AFf0E040e46,,,,,,,,,,,8959,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8959.555626016387,1671165050,bafkreiexp7wz2aw4wash5ldzngtflqtpykg2lezr3vun2li7fkusfzahtq +0xbd7dbb5886786AF713eBb1841323C528699BD92D,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.060929189945934,1671165213,bafkreickbyztqywe3s76r4gjc3dba77e3dmpisq27qeyavq5fpuuqjooja +0xa2E455c0963643276473b58B320e5C75923F6DA0,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.14209028508370924,1671166934,bafkreiceyqfrpquuni7y2dykywuspbx4kupf4kimtr76dpyp6pj4g4offq +0xe10c8e331173484e8e296d6a68dD029Ad1489958,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4800,,,,,,4800.01,1671167039,bafkreiaje6mh6gsjgcmafspttgsq6tarfx3553mwjyd4wpnko2tacapikm +0x231De4975FA7ED182E4a83ADd1d1b5b69b40A41b,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671167168,bafkreiemzljpap3dx2l5u56poalirtue37mooryfyun3otzecraessylvy +0x44362d233C40E2Ef245581bC0b55A24545F20B35,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671167231,bafkreiexi6rr7dyi2xbj5w6grqo3ccnsvgejhjlfg5kejub7bk7cjbv3ge +0x623c04BbcCae0363d37a18f1B704DcBe1F9f5805,,,,22000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21834.541118435398,1671167289,bafkreia4g7etcmn7qpsyecgymuv7sonp33ajhab2gp3g6fv33njme4gdpm +0x046Bf094791e28aA7fc22c8ecC81b65a24b48219,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,40943.100085898885,1671167309,bafkreibglllefwtqseen5endlypgr3iqy3bjirtlhzcua7qogxqp2yqawu +0xBb81B5F1A5a7C604810FA719fab66Efa5Cf384fa,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.43377310132063157,1671167904,bafkreic7iwtsdcxlelnkomnt5mjv55u4aekm3bl3zel3htrw5poytdqa34 +0x4939C26C681706F0e780204C7414ae998758a12f,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.100160684025446,1671168053,bafkreid7hwyqwskuj355ufkb6tpk763xmfavoc3wnvedw5ee6x2ze2nzz4 +0xBac335098babC9a695dC059fBE5737949c5a24bB,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,,,,,,,,19.11,1671168148,bafkreidy244zxvg6cjladagk5wyxgu4rjs5bfsx6jwrwobtmvj2vbf4vhe +0x7fBdE8B27D2B4F164B66F2a9dc02bbD6697e5b19,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.240259,1671168166,bafkreig53tgffeez7vf2i5qhbuypet4kbr5ysem2epdgrodopaena2t3pq +0x4d477F1aabcFc2FC3FC9b802E861C013E0123AD9,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.19191703045671038,1671168176,bafkreidboqnfljmlldohxtcypzwbyrnvmj6h5damgtaxrvzipbudidqyva +0xCB45eCeF6780FCB4EeBBA8b08680a5b50568e258,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,6921.639122840744,1671168311,bafkreici7ijb67lh57rflt5v3w2b6iyhylmnhlsx5jf7zvzojgedey7ycu +0xde7104AA20770Dacc65a42Ae010707D9E51a2330,,,,,,,,,,,,,300,,,,,,,,,,300,,,,,,,,,,,,,,,,,,651.6093114664501,1671168406,bafkreicjwk65azrt2fcbgrejmhrhxxyppxnh277ez4hor6o2ejgv4jg4tm +0x9cD7D1981B3e15a2DEE4d512ac60E0579Ae18546,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.94,1671168500,bafkreiam4qpigxikt3wmyfegl4jqkwj2vu4co3ssooi72aedpay2i6vure +0x9516E80ba79b97D5085eA4553Df9E35022B1a656,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.09576919842496559,1671168661,bafkreihw65lcprrbcrrtgf5bz7oh4alxpbsk5kf64xnrzdq3ig2br3fvuu +0xDD3508149304F3868A993769F3911009abEa3660,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,0.2,1671168668,bafkreifhdgbnpx7v5tapzht4ufg7jxqiqempbhrkdxgkvcnkb24ks7ft4i +0x60663af31Be6Fb5F4c89cC2ccA07F0BF3B2CFA94,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671168729,bafkreic6gzdw342ihkjol7pepx3nqch3gz7vzvdxmmkytaupsfifndfx7m +0x894C933C4113fA86a84262F12610d4e8266e9194,,,,1,,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0544771196447604,1671168965,bafkreie3njhvzqsufuk2m24f3vmkzmcyomvfdjw7rsxhbobbfgjexpgslq +0x087Eae3a20901197F68bAb6fAD5966254c8Dd52e,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.12036483355126293,1671169029,bafkreifyf4jjjfrv4jhn3a56ir55b74ierdd4bxnclwubwvlykijzzan5i +0xA8169bfFCFc29643781d5d2d0d10cC7fD66ae377,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.070410461924732,1671169259,QmSJrvX4467cfMsUhM7ScuLigJDg95htCiFYyZFQvVM8Kp +0x4a4B920D19C6636311069355710C3201689E6d90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,44822.58864681473,1671169405,bafkreiamhxo5b3stda5ygpxrqdsqcpxomhphgsxnvzmr65dqfqkbewzmyi +0x4976F0788020c2C1A119f5251d0E53b0B757C3D2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1408.3785903313426,1671170081,bafkreigag4dkgd6ya5muk42zvhmgczt7f5x22astc4bul57nh564zadn6u +0x63d612Aa37942803ba62e03C2F6FDE6B061f6A6f,,,,,,,,,,,,,,1,,,,,1,,,,1,,,,,,,,,,,,,,,,,,2.007746658359618,1671170376,bafkreieeppp5o3ay7vcwfplrnij7phua7jtigi2jjr6alr4tfs4hkkhgiu +0x7E8ba3fA5f0102004e734437F18EB2de612C3187,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,5218.47836153045,1671170579,bafkreihmxigr2zjfk5fq7m5aluz4gqvvkpw3cqrb4oaeynqyje54tronee +0x994Cf01f34c51426bCB12bD30Ff7079E280E1140,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,1671170863,bafkreib7xblaxjawv3xw3bhi24nxk24fgcyrea5laoubairnlma3vtrq5e +0xb50edC59d7554d21A5a16b5a128BfcAF1279F2F0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,176197.72865468837,1671171455,bafkreidp2dmjhnppqxvy4kse3gy4izg3jjjyjjgk3qnkkfxvgawwx7q6r4 +0x5ab4bCf284031a67fd8cEf10d0Ef4388f0851401,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,15034,1671171587,bafkreidsbpednd4a5hxz564h6ruispockmf2szo6vg5io5u2orkbagc53i +0x20990BBf370e410898Ac4F5a9533a29b4f5fbd52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,21686,1671171691,bafkreib5xr727oibpyrkfbjmz54koxy2veuit4iz6mgbhi37ox4filnbpa +0x3F5D2058971DFd0103E3bF5E423620B5A42Db357,,,,1,1,1,1,1,,1,,,1,1,,,,1,,,,1,1,,1,1,1,1,1,,1,,,,1,1,,,1,,0.5801465730602591,1671171928,bafkreie5g23egl36acmmzsxrjspdx2tnpnvowug7umdsp4rpzs5ot73kri +0x079CB50A38e4A9b7AF49adA16201D00c25Ad965F,10,10,10,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.44439985715801,1671171957,bafkreidb2eahn7sudyyniew4ycbaht4bhotk2fmrv6an67drg6ttezlnxe +0x97432c12ea8C957C3aE2d59c9953CF8dF9CBc5b0,1,1,1,1,,1,,1,1,1,,1,1,,1,,,1,,1,,,,1,,1,1,1,1,,,1,1,1,1,1,1,1,1,1,0.5,1671172106,bafkreigoebxlu2y7oxxpte6sajhwud23qnd73ba7pnccsu723vsatd7dki +0x472F916934161Be833E924DA2F31b8100F321eD1,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,1,1,1,,1,1,1,1,1,0.4014177155344104,1671172191,bafkreichkgclz5klaiognzfiaxwzbnwdmwy3r457shurpvkbap4jmlfjni +0x2B29833a831207A3B92102b0708B32D624AA0F65,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.136459298893462,1671172200,bafkreiazw4fh4uprljvst4j3qubp3lgovzompdca7afzjevlwkl6brucxm +0x23fB34F91Ce9Dc6D8B0051BAaba39C16a1352222,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,1,0.20469285639342644,1671172304,bafkreihthtfna52sz67c4ecl3l7hoockjejqph5gena2zblv6izth3mdiu +0x47A76DF5F20b7116A33B9715bC73092Fb3690b36,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.131856012616721,1671172414,bafkreiaf27xy5nu5ycvudwws25rhxxeiqq5g32mqmx7nfjauv3stppgn4i +0x6071E91AA75f2D1ffd8ADF308D76bF3c97E3A108,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18384.21576496257,1671172566,bafkreigvskfhsj2deasrtonup56gicfdvndp3haiw6tffojbwwwy4g7wey +0x88F659b4B6D5614B991c6404b34f821e10390eC0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671172618,bafkreihn4h6mlg3gx56dptq3fhq3tbz4oypuau2pjafqfuyjxdk7iu4vsm +0xF3903BE7516c9e208bEc91854b3d9D35c709716b,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,10094,1671172889,bafkreifjyo6ip5pldwwisfyt7g7n56flozq3eqnx4mb3mhm237tkxv53oa +0x61Bc7Cd78a974bE5D19686142F2ee9AaEf247974,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,12992,1671172937,bafkreiee4i4euzw3yw7wjciwncxebrdfs5ctszpb7ylxpjlusilzft5mli +0x258855D09CF445835769F21370230652c4294a92,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,50372,1671172944,bafkreiepv3bfil3kz5awjo4o5gss2cnuluffpk4rcsf3ebmob4tacnqaca +0x768A836A225c6Fa3A570D74BA3d6375d965cB38A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,0.4320223149654717,1671172966,bafkreihaa4kui4423hjhfioiixlme5dkrlxmgvmzwjlixw725s6ifbtcpe +0x89C69e649EF9ADc6646Ae456A1D8D6e6022f4695,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,16034,1671173042,bafkreieinmbztcbjglurczntnwqj7ytkh277hob3xwhnl4zjcvycckavuu +0x7e651F5f597436cD0fa941F5FF2cD45Ef3F2Fda8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.049943,1671173059,bafkreibvagwuzubrel57a4ii4kxvz3wy2i6qhbhyzzrjtqjzzynjckja2y +0xa68aB6d6668745c4585667aE4a91c0032dBb932f,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2448246471012847,1671173085,bafkreieskkrqplv4qnq7wzatcdjujz22p5uoscd65s5pkkeqr44cbsfbma +0x4e8D75d8b17C0d7D7FD658040CaCD6aD6b206015,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,30282,1671173134,bafkreia2c54wrpjfmrfxc7lu4oplbcqgkxh456uvlu26gcmbdkrq62c7pq +0x07cBD4e4473140b6078Aa987907aafF5E500b9f1,,,,,,,,,,,,,50,,,,,,,,,,50,,,,,,,,,,,,,,,,,,28.755825145340467,1671173141,bafkreics4ohje7m76z66x5n5hliwyzyfrlwr4ojyvxp3jv5slgd4gp4qei +0xa928E40011D5991f9EA478c7532807Caf94d6859,,,,,,,,,,,,,50,,,,,,,,,,50,,,,,,,,,,,,,,,,,,15420.555049179296,1671173238,bafkreig4t4niorbfv4e2pbkzt74wsiged266ob6eucy7ujhjhg2cpse2q4 +0xF278b687d9D41DebDD34b4D4B3EebFd8bc198DF3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671173544,bafkreiazqxxhii3aa46gfgl2eet52zyab5fvrehlnr7o5uy7gbjntwk6yy +0x6a93693b70022b1d0D21E3ca4436dc748472367f,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.326225483390474,1671173605,bafkreiafbqqih2bwomxg3wzrulnkkyh3vggtqni2pl2ru5n3ki2vbnjb4i +0x4930D3d0A85848F25B6F89e99708909A82F853e8,,,,,,,,,,,,,,,,16192775,,,,,,,,,,,,,,,,,,,,,,,,,14274.13563035972,1671173606,bafkreiatqa4ozqecos444aj4h25olsb3qdmgcngtfptl6z6io3pckf2bsa +0x1d8c5303DfC01D3a486fC7133958B45720CB314a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671173673,bafkreibxoror4sq53fdldqdbt5swebxmybdjv7t6pg4iuyz4berzmndyiu +0xb60Bbb26C8fFa3f43D4a1276657d802DA5653d2c,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,6105.103482684887,1671173749,bafkreiex6b6ngsd737gnsplbjfb2cg2ykojkgrbiqywelvkftqog4mtarm +0x76D03242952F35260D6A5cc697192808c706d83d,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,8694,1671173809,bafkreigruianiaam77psde2nvazodlx7226fh5kirmikurkthxa5awcyky +0x216eAcf4A2aeF0008e5fF355d6d0F82bd30914e5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,14178,1671173900,bafkreigjpxu2sd5ruzd5lzvlzbsakpc3dtj3iqw5ga3m7mcliw2t7vrwtq +0x7bF8bF27e3F300FeCe90EB785e4F09aba827eDde,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,20206.816949543398,1671173917,bafkreifciu2pqdunckxklup2zedvtswzydgujv7e2nqsuumdujd7z7cqfa +0xE48608C7Da53A6481A46Bb247759b6d3B0eDc6AF,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3190776074289374,1671173987,bafkreig3mr7fpc2cpog3depg77p6jaqfqhcrysan4tguvef7yilgbmhhje +0x44C4107E53a5e5e483a9e528B6Ed54508aB0c812,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1062.2521370331406,1671174019,bafkreihvxz7fovk4steeif4vvx2xk4xryreemqkzi7uzunptg4cnbbtnni +0x6f07a26C7bF4ed24093944006C77733d06595666,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3259947039503073,1671174137,bafkreihjzblryag5pfio67bc32j6mozvm4dtei5lxap4wvmrcfus6druqq +0xB8B5709D1f161A353bb5e902c0FFd761Bc4d8074,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,31439.6198676,1671174167,bafkreia6uykopvsrw56xrqbmnnmnovrsjaxghemfdpsfijhgxwguntwpne +0xC6A7463A7Ee700d035Aff7BFD1EE198D680A4164,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,99900.99676724138,1671174200,bafkreigc72hhwahhm4enauslhgvt3wrycitcjlrsezjch5qagw3qxvteqq +0xbC7D1F081039acc7DC2C1e7C06ab3879db5CDd1B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,4558,1671174226,bafkreiarabslx5kraapkaclrex7ocuu6x4v42oum36g3zuhgs5ygclutcm +0xeA4B9b75CD563a9E003bb9c16Bb7a963D2fDc750,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174286,bafkreidswpe44ufo2pktgjh4btrj3d26vf2d3hi3suwlqjn3jbkxwynpme +0x55f09FB7566bA51d822f1Ac2617037C144209D9e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174339,bafkreibxw4wt36i34qznkk573efwdby5prfkkeebtvaj6fd3mryzl6roga +0x944a79aaf88C2E9eBC647a3314712BDA4d0f331E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174405,bafkreigit33ailfc5qddyr3wwlklonyuorzmkslsjiremkqv34v7sovazm +0x9BA8575C255c9D54836c579bEe5901aeB6623e2a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174454,bafkreidgmkt2t2ew3myrgo5ky2oizgv6tv3wzk3bbgggc7grfjnhvs3chu +0x0DFa5f2efC41DEb13b23163DD794613b40444509,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174500,bafkreifgwnpaywv7m6lfnd5ctta7o5crqbts2sanukzfgutcw75j56m7ou +0xF957A7e0698E356BE75e4A25Db6712c11e682a43,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174546,bafkreibyhbnqfmf3kvw7uifefhy4olrhezmuiamsftu2bpix62cdkfapza +0xcd0b67a61E5e8F4616c19e421e929813B6D947df,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.000230998494134902,1671174567,bafkreiccr4tcygzrtxezapdlrcisuzuvlhh2ey5s6la36zhbwo5q5b6qmi +0xC8960736Beb04804fbd1301033d6a98820c09A9a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174592,bafkreigggzp4eqpifgwwnp62rtcfew255kf4eennib7hituloxo6kz6z44 +0xF507dBEd7F75389cf3f45292E7Bb4C12e05932b9,,,,4500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4457.685865202084,1671174625,bafkreidqv7ubp7wx5f5brngwcsn2iizfvo3qs7jcymctrodagu6xw2qfam +0x0b1AcD141937C85FB4aaCe0622E20a37eA006693,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174644,bafkreihbdiopa2ii2q47oobos5752q5c7nsajbjytubffzvjitv7zcrwte +0x953d8D6419F8B0F7B7a15e7C8009B411011a8B5d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174692,bafkreid3u3d2eniudybfnut4km2yitidyr5nkthmtbddlzlzba7hl7azea +0xdDA4A35346B9a8B6fDfE349f4FfC85e94718697d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174762,bafkreifno4gynqzhjqzogkmh5yqv64xoxharubkj46jdxpzpf53nagnyxu +0xAB884368Ab49d771CCcDc3f5c9Ff682767e450d1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4744580884427233,1671174798,bafkreibqjwktwkryuynnjlcema33bqmdbesafyq2zclr577e65rkro4yyu +0x01A49bB89DB31C340BFBe474f944944b96B2eBfb,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174811,bafkreignafcmbgj5cibf7iuzqyybleubenaznxrpcos67fovneqpzdmsh4 +0x469DE767E44981fADB4b2FDAc578FaCdF017c613,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10088.054601893731,1671174875,bafkreicifdyewge4i2mqaapp2wz3naiqgmmf7qb5qby4dffaxojeisors4 +0xFb1626C0311392c62723D06Fd3c9160404DA0f33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1.3025737922489966,1671174929,bafkreihhbenq476jgngm32znhzuyjnlgr4t2vecj2la2xxbw3htlk2ieuu +0x7F7aD73518C490885723B425a998921Bb3Cd309A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.7513647337185243,1671175346,bafkreig3cihgg44shgrdgnsh5bj62mny3w6j62f54qfi4bmi6g4io6ruju +0x11B540e8C00ee1B1B383e8c463B3D98155360BAA,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,16038.7526067,1671175417,bafkreidwqq34auuncvkwwwmwidwz5fe77gxj4nrxpus7272jlax425nody +0xE2C7312d747C54eB6E476A2Bb79EC38835fc2568,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,3390,1671175697,bafkreigsmcinhza7hnjwcrkk6h76xbr5rg4ygjp6tft3hbyeq2wur5job4 +0x43dA2bd51A514b3a3c1F90B5B482E99b0F787669,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,9965.90788028,1671175754,bafkreibutehfrovwzv2wt6jnhoxyggiwqv5462ts72vx4jpq6uzmwvfkba +0x758A7D086917067ff956aAE0732e113Cdd9C1d94,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6183.2330408900225,1671175794,bafkreicxw7rjuwv3ihwikxztszwsbo5th7653pp3wmiep7uf2pjdgvno54 +0xcd5609511a931dd5dDA9edE146aC83FD40f0FD87,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,27,1,,,,,1.5920637061257905,1671176043,bafkreifiywl2i6cfmh6opqkhuvqlvxrofftpwxbp5yxkga6fkwlxuvloc4 +0x06d0f03416fBc95a69BfFA1374E597F8AEF752D8,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,22230,1671176136,bafkreiftprqpwkhnl74gux7nazazy4i5pd2q36ak6tarnuq6m77q3akfmi +0x821cC25a6b6E1d9b80b3Ed99Bb0B3f85cFc18693,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10093.23029,1671176198,bafkreihkmgopny2rzbd3elwzmeberhq7spyczuximo6uuqnshbqs4uql4q +0xa22D6bd7BFeca97C60063087265a9Fb2BB8cCd1b,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,19595.813010609876,1671176208,bafkreidxbgmerztacdfueyy6pyvvqesen7fchuqz53bb6ta7fjlidirqb4 +0xbB2844146f40689b1fE38460935e31830204c104,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38124.80816665569,1671176426,bafkreiggxo7sc5qya2y25ya2dsmqw7ompdulq6yxs6vbdkkgzm2wyqbljy +0xdd4098207aF1d675B690053F0057A5d97D8B1C88,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.46367385178273024,1671176431,bafkreigrnf35ozkkbagugtrxihnm3xv2ua4iobr3734mzthy553efv76ei +0x66DD2E46331219D1046B8452a04806EB6Ba07EF3,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671176436,bafkreigqg5ar3heprzulsk42ysyd7vxljvqrh767s7xscq36rt3nzaxinq +0x775FBdB2273511a864c3DF883BC3759b12474d26,,,,3,,,,,,,1,,1,,,4,,,,,,,2,,,,,,,,,,,,,,,,,,13925.806057133295,1671176563,bafkreietyhwm2p6qrsgqztvn3cd6gbw7nub74oqgj2p35txbappzjtnpbu +0xCcbb0F60620ce69f7AbE647D937d702694EA94A4,,,,,,,,,,,,,1,,,15,,,,,,,1,,,1,,,,,,,,,,,,,,,16746,1671176751,bafkreig6zxkdyjf6tdjn7giauqnz6a34clm6afxat2rymbti66jpouks4e +0x6Ac5a8D0203b9Cc4752647f2aA4aA87C7f290774,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1615107177892012,1671176999,bafkreiar3aw4ymsttbrtqdyizxiak3k3jxp2l35r4to56tjbzkudecy4xm +0x6B87616D8fe9eb216975D464F13A82f72114af2F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1671177180,bafkreiacx67tijlqye7dfemwm3b5k7u6tggjeczhvwrc4fnrxjshqzkjda +0x769641550a8fbCb68b5a6216BA7E14c32414Ff4d,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,192.14069689,1671177208,bafkreiacdu5l2urumtvbrjjyeldikykrke3hragsnwggc7k5l2khp3xa34 +0x4D16f58F0030C794c6bF5AD9676559946dfad550,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.301,1671177210,bafkreihurmvemgny3npe4brydr6lbgfuc4ksy4fijwiwqszgigtwcmyhne +0x9A44CA4fCD041062477360b77Da67401252f1752,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671177506,bafkreih35a2bhvudyvwtyc22rje24ub24x6wbjuxchwqynr35u3jk76vjy +0x896002E29FE4CDa28A3ae139b0bf7bAc26B33a8C,,,1,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.97260353323612,1671177781,bafkreiemhszecjf65ufsmm6bebfnyiqpcf6askwan6ploorxgoym7yw3r4 +0x81F7c3796f4b024B6700A0134A1C509ACF920324,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3945,1671177824,bafkreihxwvvrx3fltxnxpeu3jbhw7aupef6zroh3empvpvdphl4fwkjqai +0xA12deF0B79Aa8226984F8a26076Fec579A3972f8,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671177850,bafkreigamjuo7pkmxxnb7ohwmlb6xtcthfpy5avrfaj3olh7z3ciq7txi4 +0xD204e260ac2b6295298151E6AaadC2C6aF29f780,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49719.262714758515,1671177989,bafkreihk57la4hvrke37k3m3ogyvkluqg7wev2r7cv55lssrnflopmhkxm +0x88AbE5f4Cb006947662A058d6ed82D62B7839036,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.304,1671178006,bafkreifuojpnoc74o6wyccrymfuu54iyurn5ky4c357g6fq4bwjobccigm +0x79dA9Ed4E3226EfDADAEd613d488661A40F38b97,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.31,1671178365,bafkreie6tsu34vip7ktqvgh7kxe3feizth47teicquxpgik7sl3obqtq4i +0x6fa0B5cCA8F1009541Ff697955813D2AA0C8CEFB,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671178609,bafkreiav4lwszrke66hmslxru2ehlxn6pefcl2kc4zenjak3iy6utcxwpy +0x078Ad5270b0240D8529f600f35A271Fc6E2b2bD8,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,1.6143336387207583,1671178696,bafkreigwllsl4fcuplgkeyrjmj3g6hi2ww3ed2v7oonytu5orhtehxeyzq +0x71213a9C9504E406d3242436A4bf69c6bfE74461,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.1762588894795614,1671178755,bafkreidjyh4x7r4gcf655oe3h3iuqgt5rd5dmcyejjo7jkzw3sun6cgb6y +0x82053fa9505DFBAb217499C8205e55b135d25B01,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.32,1671178819,bafkreieeug443yobj7jhtgg3lsuuxuy67buubybfnaicqfoho42oyo7djq +0x06e6FC96De94E49b771898642831F370A07E0f8d,,,,,,,,,,,,,25,,,25,,,,,,,,,,,,,,,,,,,50,,,,,,0.20767793,1671178846,bafkreibjcy4uhegfn2rqiul7mxqy5qbmevgcfmrh5kqrbghzklil5btvxq +0x594C9Ad8D38Fd59daeAe8520Ab1E31B2A866C4f2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,615.38446,1671178914,bafkreicbgm4mbkz7betq5npdcxd5pdt3pkvibzfiprzetha2auazjs6ucu +0x3178fC052C3Cbfcd2Bd2008bC9787eDFD12cd6DC,1,1,,,,,1,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.74,1671178952,bafkreig7u5uomuriiabasupwc4g76kb4t7x4ds67u2nxksbfyjnidvvaoq +0x79270E3BEe26D802D8EE8BB905235DB9DD94A915,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671179080,bafkreigh7jnaqq2j42d2gaxvoyymtwd4l424l3pcituty4ic57hl6tiite +0x8F2A0c6BDd5c1f61552558D2C0D2Afe6d3dC5272,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0500000000000003,1671179272,bafkreiez7suizgsdqinsuor4tiv7d4mr5xk3kv4tpqrqgyasvizjzgxklq +0xe8Ee3A26083A76F22Cde45E67632a17a143A9d33,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671179295,bafkreie7jvvhniuixcorrd5aykoblyn236uk6kq3f4jx3jgqdhffq3n5iq +0x29ee39be789aDA5cBb2051f4bDd70Dd735Aed7d0,,,,1,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1,,,,,,,,1.25,1671179334,bafkreic4i5zub5i3l7deh75irh32jbxwr6xwb2og4sugn2iworgb6koc6y +0x1D784e25ccFBE50b1f4e118F97765DB6Bc44ea7a,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.335,1671179527,bafkreif7apxtluwraqbmyb5n2p73bb627yblr3p5ghru7dqu6vhrfd2mxa +0x5244736b3A8F898149aE33f013126A20cE7abc62,,,,2,,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,2.8357027802918684,1671179586,bafkreibngjszth5zegs33qbz4zeysrxcnewcd5mwg7wu76tuytzzntiria +0x9979ac671fFd09e49D22790Dc6588feE74fa777D,,1,,,,1,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1,,,,,0.256421529490551,1671179651,bafkreigbyq4vv2gdpf3gp3oondxeawsmhcphly525z27z2w3ggj4jg54ey +0xE159BA4717fdbEA5B45dC49FdF991534A71B8755,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.33,1671179941,bafkreidizi5x2pv6rul5cq54cjb26yjisbddvyq2grtz3pxyiic6iij4mq +0x8C155A38dF395Fc6C913e1Eed4463c03055FFBcA,2,1,,1,,,1,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671179956,bafkreidfdi2jmltscscgaym3eqi6oy26fu5rvta24ckjby3tmcqt6e5dp4 +0x74264aA892C5C4B596b91F961B1387f94ef3d5a1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671180022,bafkreiana7ihtzsqafr52hlubdxayzzmzf2i5jcilz55w23onk5erk3h6y +0x91882B545ED077354310BA2015Bbd0994Aa0c834,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180036,bafkreid42ppd7l64hlhlvrt3fwb7mn3depuqsk4wykopxvrxb5rgthnbxm +0x9b67271c40E6bc930530aE45272cBD56Bb014eD9,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180079,bafkreicspevxz47mmdidasfib5xmtto5ltl4xu77q6nnpq3xbvnq5fbify +0x3A770AA35DAF18c3dA763Cfd8A34Bb550097836b,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180185,bafkreidx4soysmf646lp3k5rwh2hizbwecl22smjebvccgsihwhl7ayefa +0xd41Cd94FBA987fD46d51Ab2104a4707822666666,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.54,1671180255,bafkreidyd2sf2ngve2xqpsaenokpozp2u4aako4dnekrox7s2s74nc6ktq +0xd7688428E60D2cba8a9c3979AD73a2A337a6556D,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180266,bafkreihh6642lll55itqju3vsudsgq5bl7nt7ksytabrogfghfngbstbcq +0x4712DF6d282c8830081cc1c172FF47E04Ec7aC60,1,1,1,1,1,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180290,bafkreihsozconifzbarwuftblgo3bwlieqkmuta4355tjfy4vodgfrfspe +0x2169Ec73eeB5287Ed3180b401B6383BEaf5a2011,1,1,,,1,1,,,,,1,1,2,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,0.05569815079381274,1671180296,bafkreiacwumhnsiyvfsw53v5entlr3cgw2rlskr33wrqgm67z26cem6jm4 +0xE2c1a36f6d39F3D1698078e6579fCAbb779B5a32,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180470,bafkreihcwp5dv7mnz5nrkhtiilnf7rdy7himj27sznjeh4lrz6gsxq37ei +0x1982bD37E91Fd7a8c88805E9a7aa009fA804b1f9,,,,,,,,,,,,25,,25,,,,,,,,,,,25,,,,,,,,,,25,,,,,,1.5505916398832649,1671180950,bafkreiakablm72qouqvpbqwaxcfdfwhr4rkb4qcf63aju5ihvleoek4dna +0x70B7454d7bA86666E9d29B551f2603a6acc8DaaC,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2813053252,1671180966,bafkreie6l2yjbiiftoyqglb6y7ukvcxkak3ailcex3iwmqji5awboxpjmy +0x10f04eA206ec0a82A268d4489365BBD02f6ab41C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,41.7774,1671181191,bafkreieumf4vu24ntzo76f5f3t4fs66filpk66x53r4phsn72gq4awt4xm +0x15c823B0e6c08FCc75c8DaA930dc8b693EB477FC,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5190385478508064,1671181220,bafkreih6xmwb4dv4amesk3czeuzgbxcnxzuuawb2rymwxumwgd3rscp4pq +0xAA32059AAAdE38e58948067cf9f62293323dE1E0,,,,,,,,,,,,,,,,,,,,,,,,,62000,,,,,,,,,,,,,,,,62001.32505863835,1671181315,bafkreighujdgxxsextoybgfe7pcmpqhiv5fmqh3akcyhe7q6j5zlstttqy +0xe337a9212E15bE28148A4188dDca858956ad19F4,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,36012,1671181427,bafkreia6bcrpk3uco2sw6gs3dzsh3qehcfn3w4mpexdaj2ugu5ncgknusu +0x4fb63D01Dc521FceeabAc44E57bC675077656DEB,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671181438,bafkreied3h6ovokeeoioarqeu7pkiuosld7qemfm5dnhvdbdnnchbqg3ri +0x9aE6B470D238a4ab42cAc5fEB27CAA5A19F89510,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7209248689,1671181448,bafkreibnagj3ks7swdn3wxpkiuf2dknxgwnugs2dl5cp5g2nccpz2qeozu +0xd0788c420418a1E5fEBBb6c210715F36Ca885C1B,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2727176937054279,1671181691,bafkreibf3spkynr5zqffaj2n6yakvz2cm3xgskbo6mju3rs36hlrepljrq +0xab62265D80c6B88A01FFe8a7Edd58C2a1a7B0db6,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10966104063272286,1671181725,bafkreidlqjgg4govacfchv5ta5uo3p2p5f54fkyc2oc65lgmuju4lkadlu +0x0e198F0c34A93aea5F6bD3967cbD1B8F8c8C8319,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,1,,1,1,,,,,,,,5,0.012568103118443086,1671181747,bafkreictksig3ms2sooa2q6dkpj5tytzbg5dayv33earbzy566i6g6mfva +0x1d202DAfF74d2a6F124A95b588fBd010b896D267,3,,1,,2,1,,1,1,1,,,,,,,,,,,1,1,,,,,,,1,,1,1,,,,,,,,5,0.3124127692296935,1671181785,bafkreic3b2ierg335ajcgk3dfxom7raiamme47fa53ffqfrm4axtnnmeq4 +0x4EFf2F739B1B0d5719662f9094A06A742ed99c43,1,1,1,,2,1,,,,1,,,,,,,,,1,,1,1,,,,,,,1,,,1,,,,,,,,2,0.29481846854028226,1671181815,bafkreiaeyxxkjhr7yeqhblnhztnqj6lhpfd7ixdf7cj34f5nvdg53wsgye +0xa94586fBB5B736a3f6AF31f84EEcc7677D2e7F84,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,4,1671181901,bafkreia3iwf2skjauoquzpe26vkxmrixorey6rqei62gceb275w7bnxeie +0x70a913620fEE00f6120FDaBABf5d65291fcE8899,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,0.4463176584293698,1671181939,bafkreih332re4icdzmvxp6pv7lniamxa42skdukribxjk2hibvpk6ptg5q +0x640E8A83Dd64E9d1CbbBe9c4a1433Aa736def624,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4032241994156843,1671181985,bafkreide54e52relwg4wcaggrjg63xi6dlg6345ltz3jqcbtvok2ir6bnq +0x3a45255D69c878Ef45e012BB03f2E31782104885,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,909.1304600333609,1671182205,QmRLGZHs5BET8hSU3FGg7GZaK7moUaR9AFXcCxsMNBYvcn +0x95D8Bc3ebcEc8A8F2D3BdAFe141EA118fBD7Ca3f,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6867252996,1671182210,bafkreib7oxlts3xrvqqtngcbq7ye4dzqlb2gaufk6k2qzlab57yj4agxjm +0x3f170496f84c11668e00c572F391DFC5Fbcd1db9,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1.27792,1671182273,bafkreig3qrjxxjntcwxjfl2i2ncxrhqtiqso57upfedmapiky3ox4ygnmy +0xb689D0813EF8d63aD619Ae5716229eD0D994c2ce,,,,,,,,,,,,,20,,,,25,,,,,,30,,,10,,,,,,,,,15,,,,,,13191.307280834013,1671182378,bafkreicbfw7a5dyyokrxtrmzq565pgwp4d4wmxxtmxfdedy4dgm4y5nxu4 +0xADa29d37eF1ac3Df5D76413eCF752013F7870202,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.016362355333957024,1671182584,bafkreig2hmwxqrsgnvhqp43letpsy7vb5tj6cxu5qfo4b355bc74n5x4ge +0x56B5f8825173527690340B14D6fABf129Ef5f1AA,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671182946,bafkreicgxoewzjd3cm7c2st3h6foqt4xqux5ya4udc5sqvo6i7ayj6w5hm +0xAB3F34994048c2714CF403fDBE38eF8BEE79b4BD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.8248329645,1671183071,bafkreie55r3m6ky6hbanpomi4qvhhytdctdj4bvd3h7vakzxcnzjh6tbim +0x88441DCD4Bc985965e69ecf5A454B04DC84eD876,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.8933402603,1671183135,bafkreig3kos26pj3nk3b4gb2brdrdiwmb2fa47grtrmauy3ejshyxlpexy +0x245b0A88060D9e992e7950922c86FEA91dD40FdE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.6072429401,1671183188,bafkreihk6dt6txudeqau4r5ly7ybtzuqxh27ex54euad224gdjbm4n4ngm +0x670f2a946F731C6A1Aede41f27f2Fd4a378AbB5D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.74257786,1671183242,bafkreihcjlclbcvdlzxmuo2ncyh2uyytsyijxl5ndbha74xxy3zsw6yowq +0x3DA952Ccef2b63bf708f7f78A0ED333FaA5cDaF7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.84787476,1671183300,bafkreidmgx3y4lmjj63bbr2lk65e7io6skl2l4pkfgtro6rjf5j3tnvdum +0xB5B44C678659035cb6ff87E9F1393b54A4d0A335,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.62555928,1671183358,bafkreicxb64zzfmauktfdh3h2dz3k2yqur4nufaonhbextmqcl7go4x2k4 +0x3516175B2922dC53A8607E94ad34aEC9506011F5,,,,,,,,,,,1,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,1000,1671183370,bafkreififookfdppqre33dqgfb5yz6fcvh5uxrhxsawrwi4vijopghmlvq +0x0064F043786e8c597d6565FCBF4F0989Bdd0F9A3,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,1,,,,,,,,,1,1,,,,,,43.40180377005323,1671183430,bafkreif25oppw4ul5ioazhguue5ya4ibhg5f4zj2je7xdw5vf2q63hv35a +0xA1118D2663D83857e858F12a9cE29D8FAa2ef62F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671183451,bafkreig42ea5oyczaly4uznoe3mfumlo6wkzumquaxxq3e6brbpi46opzq +0x608109470AfC9857561F9E33a3EfBE2547902302,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183508,bafkreicgotv6l5plb3ece2mvh2dok5kbt2pqtp2sbhbfpyrhgpnjbpx6pi +0xdAf45073A54CF4Afc3122BF39D26E9620192f1B4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.445030880635007,1671183556,bafkreiadnkzhc3ycedpeixrdhbl2rpamz3dvkvo5osudadguxpt37sld44 +0xccB5D53c4721c008a65Cc02F5dF10A9cE67C6044,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183562,bafkreiaq2ixtm7klzvkvtn4zkympbva2gevxdlljivqenoxj67j7abnzja +0x0426B2F8E43DeB95AD7A840F8c2a517Ee33c6FB1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183620,bafkreigbpuyaz4m26fa4v76yqjso6b3jheibkvwagwtoyrer33butpau4a +0x5acAd6E75bf6Ddd63aD5D88DbC9852bA401d8d02,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671183670,bafkreih6zv7hzvnxtq6ug5nzwsnchazv3ylblmnkjewbmwksnsaox5r5du +0xdc78107155918e230246439E4159FeA4c477eAE9,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,26000,1671183744,bafkreid7pvb57yuu5z7cn4kupfzxim7n33vnpxob4x4ohurord5yvid2s4 +0xD22C848BE105e341b8bbC2245B5492B02D6A11F4,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671183828,bafkreic273toi24okfnq4h5tn26cimdy6irm7sohpz7ndkzzll3osk4dhi +0xB49806Cf8DcDB108D318d6f4F7ab087851445D94,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,18360.64542231,1671183896,bafkreicdwaj2ymditjmpuc2neaco7eqh3lifjrbfcb6bvzpmndwos65bzy +0xf660623b6Cb27c161C7B98857b994362Cf58530d,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,0.5,1671183904,bafkreiconjfge7p6khsbe3hjzlxktrvg3wzv2fdmpbxqoydybzzyyxy2dm +0xA249ED6B533E811E3967205B49A82C6b092F8D25,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,0.5,1671183944,bafkreiag3zm6nzwpnigxrf6hmdm3aalt7znauqitxvka4nngnepmvjnbii +0x825df1f29aD0efbFA11E4175fc8a9Ef28136e6Ff,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,0.1074,1671184078,QmNtzUmK4H1MyWkUnWD8CMZXKaVySqYHDiV63vaP4M9Npb +0x637Bb85f830CFae4b5f1Ae83919cCA896c1fB6cC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,6,10,13,,0.004999028541701285,1671185054,bafkreietv46cubihtf2nm7l6a4rsmsozbuey4hleujye4cfn4wsus64cvm +0xCE95728d52bA3d54AD62959240c5eeccc2975B57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,5,,2,,,0.3762410339185059,1671185184,bafkreif7hc3ejo36jxaaseli5pgzxceqhdb5ulbpvx47ig3nbsks4z7zfm +0x1D04e429E74fb808767f40280F93a904ff091954,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671185224,bafkreibtbrof3pp5ukkpjdmooijr5vg5r374ipwdlqeiwheqlb7g7qanuq +0xEE2c2018eA41b7bF2F95E4Cc4cCD65d98f6945e0,,,,,,,,,,,50,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,0.648721518583398,1671185798,bafkreiddmibom43mrc52wdv6rtvgy2uudmr3hncfw4flie7ejfqvhao5d4 +0xcc16426C8a83AF0719C18bce84A7d66336A74507,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671185888,bafkreia2kb2u4ch4c5cg3hmddlr55z5hjciwzxdizbgcip3i7b6yjeun5u +0xb51494CF55127Ad1dcE2f0fBC2518FD51b43A3fF,,,,,,,,,70,,,10,,,,10,10,,,,,,,,,,,,,,,,,,,,,,,,0.7602896779573454,1671186037,bafkreieu3ltj4dsaybxakyc3qobvykvq7zwqgtpfvh3tjhxuif2tiyazxq +0x30bcF4C98e6967EB7e9A2166DF9A9b95848881f2,,,,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10746689,1671186824,bafkreigfy2ea7cyk4bzvo75txdea7zgyznq72un5j5tux66jvagm5nvuz4 +0xfC55274D4B5e885180403584Bc9A3B68022B8a25,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,2,,,,,,1,1671187134,bafkreie63m3s6kbpc37bph7rpms2bvc6hijmw7v7qzj62w6dxpvc27dfey +0x3be9909766f2D5c3bf3e587fF4E53790ba4E40aF,1,1,1,2,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671187208,bafkreifpoffbcxpjqe7kxfjsakklmddeka4ccpp774egg5jms5bntkxbm4 +0x6F0c3105444e9Ad288ed64674C12420593A1Efb2,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.08148075143835591,1671187233,bafkreien6bk6wudcvpsjo4c7oaiaezcbh5bcfwklifroby5muaqrycqhm4 +0x0D140f62E02879f8801a21B91CaC302aDe8bF7C0,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,514.40773427,1671187678,bafkreielvuqkmd7nkji3p62tt6cjph3urthgfdz3h45djt5kfn42bfwjhm +0x957e05840d80a31A26df11eE2DF13cc894b588bb,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.000067624977621013,1671188400,bafkreie3f3c3jet2inwxkinmltlwnaezhedpsfny2sfgnrejtzneek2y2i +0xe0a013A77C2eFEF233dBcF2175fc2681bAee47e5,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3007026484074228,1671188473,bafkreidrbs3e2oz2iwqvh6eyrddi5anheqoczhmegj3ja2ixih3zyofome +0x7d55507f7D96b373706C0131FFFbc4Ffdcb3B6f6,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671188520,bafkreiezw5pscevdn4j25bgztpivccdhfmaafhnvntmaliomuwz2zkxhzy +0x66373b380ee7ef78541ed93dA685E41Df47a96Fc,,,,,,,,,,,15000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13761.295,1671188554,bafkreibpuyy5gkyda5shgy44y4ywn6dfgctbtetjshlpsqsbj3ilueoa6q +0xcb02Bd278Da4F0d2385aD47622A80c844EF355A7,,,,,,,,,,,4000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2998,1671188961,bafkreieuv4qwutsytjnbrxffklbakm3kwf7rcsdaxwzvr43v374of46khq +0xb0D11De0F31a33684FBdbA3dbf008992ff418810,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,525,,,,,,525.3397644421311,1671189524,bafkreihuu5nlmgqo3izb3thpfgplfpzlfg4rbbfwp3u6agco3ityzdgygm +0x9E080f9bbB6C1DC91A29056c6007A0A529Ca45Bc,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,,,0.74,1671189697,bafkreicmihiu53q7xm6xaop4365wnffvptchvoihqgc3q7tkcpchti5e7a +0x492b4a8e71E4072d59d93B127f246055BbE82A5B,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,1.26,1671190424,bafkreibau3paldtg67wlj4te736x2ea3ad65fdem6hmryq3bvgasnt2ioi +0x77259366bA576CB32c3cCaa211192d276352E3AD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,0.03277019550513782,1671190581,bafkreig4z346by6ivtwuu7gv7smbkhtru5ljavc7qgr465prze7mwphpqu +0xed3e1B62ab2E4E0CD42EEa5F3CC8Fda33dBccaD6,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,3601.0846721207517,1671190814,bafkreiefl5v26b7wjfbbtm75bndsu2h7znzdnakgosaqsg255zgnbxcvqq +0x48A9789428F2067338D02B1EF3612DF64F05FeB7,1,1,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.94976,1671191147,bafkreigb2wt3wljvdwgualqoxx4id2mjkrm52p3pwapal4usngeclk6e4u +0x80131e57f111F2354A86Bc2Af2fEA414eA9C66AF,1,1,,,1,1,1,2,3,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,0.86,1671191183,bafkreiff6rcxe7h6iktjgdlvvzwnuxlrvjm5z53u3b3xhu75wozyvrc5ha +0xd007058e9b58E74C33c6bF6fbCd38BaAB813cBB6,,,,,,,,,,,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,101344,1671191820,bafkreifzikuiyfdxqmqx3dsvjjatnqm32u4breqrlqjddapzplgqo6lnky +0x7D5A56B2BF39D8B35DF46905EDf069B6E49A0265,4,2,3,5,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.03777777,1671192137,bafkreihrxawsug5lc375ekxtyt7a2bka5ghfs44nqkmxfehdkgue2k4dda +0xE73052aA21B655c70F4Aaa1F947f793C4bF7a95D,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0042322436732152,1671192345,bafkreidjo4srjmzh5qekeiwnmb3xirms2iapv6ranmf5ukp5g6hp3l7lbi +0x15668eEE7F45387ffF4020A7E9dcD3d3d2968477,,1,1,1,1,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.74,1671192573,bafkreiemnksg6wfvnmuz33gybujhw2wipsindwdcbhgmykprhlvflj5ffa +0xafb46441AEc7a2c9625c5c89edCB863671e310C8,2,,,1,,1,2,1,1,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.32786783305669553,1671192960,bafkreigyb53it4cy6scxewnot65bm7lkpkhzx26ufbedvhsehvu3e55pfm +0x400b06b7236F51Bc2B4a3e88C3bCc0E8cca04202,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5387.433149710227,1671193157,bafkreiegppwlhpy4amtxbgr2un5lz5mdr4qeavzjgwqo7kobu3ywfbggrm +0x0b4eE1BDA25C3aA420b74acb6E3877D6DC868a6c,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.09265654519532524,1671193385,bafkreihpkdfwz2f3kpl2fboa67l7txsugdpumvudtvjwvk6ukho3kdwhyq +0xA635196147B6e53cF8f1C48D28b887F45A8A4e4d,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671193519,bafkreicg7wpz3yab4jybf2ecoaaahtd5bi2m6qflfll7uatqmkfsyakqki +0xe7710D16410ec069f66d5bA3e5E700278e18B22a,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10733246908675693,1671193560,bafkreib65iltaw5z3cylrm2y2qlr354jv4guwe5xkqdtc5zbqa5gpj7lji +0x05087ADd640Eecad416E66e6DdD97A0c085F96d8,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671193592,bafkreif4btv6hrkhkfti36sjc3n4ylj5zv77se2acuplf5tenbb2pyy4y4 +0xbC1500dAafF721f626Ef1a4F1a8C4e333648c5A4,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5.373783960563614,1671193601,bafkreidhfzy4gnruzjyzj37dac5cjvstzeyae75rgieizzedu33djcu6om +0x59cc785DAD9E98a84Ce47388E09220Ab0E4396a4,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,630.8813065135042,1671193655,bafkreifdxrjk53u6xbndmkvr5si63qo4j6blueugypomfansxfoaoyqs5a +0x088A38c2C22D4766f3864D1309A4bE4d5573712C,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671193700,bafkreicfzcw4xvjsowghaml7milphyug7ruov4qbr7ymlaljq4dqdpqoym +0xd020E6a76bBe0139ec231Cc2C3160810048df405,,,,,,,,,,,,,100000,,,,,,,,,,,,,,,,,,,,,,,,,,,,15339.84392112661,1671193873,bafkreieaus7cvnoel6bapvwbqiuhhlkfdylioe553vghtimyopmxzrak3i +0x6A8ae9F1EBEfd842DC7E9eA68d48D0a9a753D5b4,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.2453614711826217,1671194551,bafkreigfqd4ni3op5cmg3vff7juundgf5j2ksmdefhmwuvk3remtchtury +0x6882726dfcC0fc223B63227270da89BD5e559e37,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.016950803702227735,1671195080,bafkreiej7ophru3thgy2hlmlsl4gmipntmytugfiwnp2sacfs23zxioati +0xBaC7fF48e7c958644258b8451e7392d229024BE8,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.04256805584064915,1671195159,bafkreidhph4e7snw5pgzvyvzyaw337m5regc3mswu5zkjkmtket46ksjou +0x2B6E0ccff545c428CeB31C539d00Acf7aC9b00B1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10977578776915364,1671195458,bafkreidtlmb2s6smie2cdai4x4bostj7v347zm75zs4qhwph4ritjo3o6e +0x09b6fB5d910d675c6B12CE7906CB6cA30BCBFDb3,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.517242280040473,1671195522,bafkreifdqbn7s6k2j6mvze5vlytyvfp6aepjbatvetaokk6esjbeyxptoq +0x7bcdf76694d630F32Cc156520D94ea8398F94571,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.13620112,1671195660,bafkreidtofy3c4jdvribo2xpuepk44wqwazfsuvko2wddl2om2ckbn6wym +0x3420C19BCd121E6fEbCC20Fd502B14A71C2F857B,1001,1,1,,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.19504697,1671196018,bafkreif4qilfrgjj7ktpcoftpuwshpetbhi2ywvubbiupttf7kl6lqdpee +0x8d58eA8a2BdFC72B5F0C0cfd2473a4D92F998902,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,109.277396454534,1671196038,bafkreidasjivvpwvlowerj6peggtexbmp6l5q53btus34wmiuydamdnqoe +0xa8fA325872A3929fa7a3BBB6bc7CcfCBAAdF2Cfb,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.52,1671196040,bafkreihvuij4ou5umozxosmlxmvnsrok3hwpf2aszkp3fo4l4kh47ee6yq +0x6C7f3cdd089fcFF4F24C78157A92C488D011d91B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1.001786591030274,1671196218,bafkreicevdzb52zcbpwt3vtnijyia7ob7isen2uhevom2owqdslxcn5opu +0x05f7F81Ef8b158be44b96A3a3Bd5351BdF28946c,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.3973101599657906,1671196406,bafkreiedzjwgjyounmqdqwzs6kovgudvofwbqmrcsuf4i3avabrg2x7ocu +0xCBb54Eda2048b57d1b0Afb19a73948E9D58B6973,,,,,,,,,,,1,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,316.54980272731285,1671196589,bafkreighyui76vogs4jqcp2m66tc5lxt4l5hi7hrs5roy2cvav3h2th2mi +0x3664aDf16C2a4691E21EFdFCDde334891c136AbF,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,388.856234024717,1671197379,bafkreialyqcqeof2656agglyabof3l3gdljn735wrnnwoinxgjs7wm22e4 +0x5B0c276E9Dc16B113b1EE36bfA4f1113750A35a3,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,5,,3,,105.942079609764,1671197785,bafkreiggynsquq666rq56qhnt2i47pwtnvbvkquwgb6hrrse3drz5vqgwm +0xE2294705AA121D149F04d3c5916019BF3A403169,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11974.363363923994,1671197999,bafkreif5fln5ndppf547zx2rkmvzqtuoxoh5gygpi2qk7u2slymk7nvl6y +0x9ECb420c8177FD28495052439e0B032b94291c91,,,,,,,,,,,54,,46,,,,,,,,,,,,,,,,,,,,,,,,,,,,64357.6354,1671198144,bafkreifkt5y6l6knew3r4i7lvi4zooawayf6a7aermivs7i7jqgzznbxfm +0xfd12bCC3026B2BfBC42F7A2944450A9b2C3EcAC7,,,,,,,,,,,11,,,,,17,,,,,,,72,,,,,,,,,,,,,,,,,,115521.15,1671198299,bafkreih7e2ynoin5qoqiecb7z6tgdmfipehwai3owgwd5giij3bj22kgqu +0x5d977C17b93cF836f63e3E38751f8E52afA711A5,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,58926.21,1671198375,bafkreib7gghlssksjsnxkyjlor6j4ku762d3vdo3gr6o3fbd4yeslg3oje +0x0678e836C26AbcFcd2b7e49559aA1a8B0f3ad36A,3,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,,1,1,,,1,,,,,,,,,,,,,,,0.14547604914987,1671198464,bafkreigjjmdn5fh4i5dj4vfts2sjrqkzsptek54orjz3dmg5lqxsiiirdm +0x82F23De5A474fC904041c357576aFE53c30dD250,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,5097.333167065434,1671198564,bafkreid4um3t7akealkk3ajqqda2g65y4dwmz2mcvqj6h3f3ztnmhoexbu +0xca833FCC545c8678F23514907e4CDB31073fAE41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,4940,1671199891,bafkreifqgg45vg5yjiadg3gdaujspdbukg4h5iao3c7x2sg5yn53emzlh4 +0xF8e9a3E9B4054D1ae3eEe530C1b558885cdC6D9F,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,21.73637850917692,1671199942,bafkreif4yxlo7nirjnnrjmhl2t2xu6egcwv2jhwgxeyqnb5svkvlshlpja +0x4cB7BB7B9606a0F03E46229963766cEDBde1880e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,11592.784020874786,1671199983,bafkreidrdg5inqn3antalp5v6rgyhcsoxksgh4fehmenzgerqrmkpl5vem +0x96e5478e73c4BEd24dd6ce1874105c3832b31a6B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7487.891795143783,1671201819,bafkreidndhp5outqg35mzxbygwmkue3knjv5cyia3xavagp5lqi56rror4 +0xE748d8aF8f0088dbF8CA7821929cAE297c1a5da1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7496358969248083,1671202408,bafkreibfgf2y4ukqw24anyuaiajlgz53hw3m77h46e2kcugcpt2jtuib5i +0x9F9EBCE72C0715CdbAD4d589986EB22F6782A1CE,1,1,1,1,,2,1,1,,,,,,,1,,1,,,,,1,3,,,,,,,,,,,,,,,,,,0.13509970429591345,1671202838,bafkreib7rzfwz6tzmzxa257eczrnxg2or3vns2ha7lhxinmbpxcg7cusiu +0x2FE2ceA1dc2Ad8Eb8a3913C91c33C338aafdFb40,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,29054.08837171794,1671203015,bafkreiecgnhndf4s4o27db4nzburk6sc3xv2run3o6y6qox6g6bpkpa6y4 +0x2127dBF1B8b7022Cba6Ddc600BA7CeaFfEfd451B,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50039.87127211457,1671203104,bafkreifhu2lxtxwvn4ztmlwm5vyjlx3lqcc7hgyqvkmjnuvicxhzkjkwki +0xeb0DA32C9d1aA1aAbf37798B347638E57bfc6a6a,,,,,,,,,,,2,,,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,500.26748064,1671203217,bafkreicxchux7ov226vh7ca3hfjcfu7weqfoeibdah3z5dimoal6zukap4 +0x2EFDA14A0bdF5629aC06Bb1fd70Aa09A7d382a3E,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,,,,,,,50,,,,,,1299.2708451203305,1671203697,bafkreicr5x6hh6ym47stqursqohrgdexxluktzbuhqpbvyc5gi6gkps5xu +0x5da896f87CA23a2A0c9b411274F997180618F1EB,,,,,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,637.5300101273529,1671203766,bafkreie5ine26mmqhjt4mqus6pqbrjcgm6aypvf533bfg65k4kqily65nq +0xf843B6F5E0376483273B92E88caa20b79aaB46eF,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,,,,,,,,847.6853764291736,1671203876,bafkreigyxcz3qr4lvzaicr7kabdz4uhyszegloygmpwnynmisvwcuek2j4 +0x79b6327487E1105E747656715b4cbbD38667EaEE,1,1,1,,,,1,,,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,2,0.04786973608421607,1671203886,bafkreia6344444536k2sv74h2fgziv54yvwlpnpv2htvdrpvrxwny4bioq +0xeAAB59269bD1bA8522E8e5E0FE510F7aa4d47A09,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,32.47867182247146,1671204183,bafkreic6k5zmo6niypkv7br3m7b52q4df4k6gw5ea32a6oymrxnekox2ru +0x44c616d081e728189d2c1afA794BBC8dC0972837,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,,,,,100.00163217743646,1671204283,bafkreie2de3yzr6leuf6dw3yq7bdrjipihfii4hnrjrkyd252sgxytekam +0x700B46F4CdA1d668920C105247291C640E521F0c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,0.4437556986248575,1671204298,bafkreig4kedegv7bvzazclochtj242gtgjna7z7z2s4g2fmlqf5vteumre +0xbA86E23E64828781A43b71647cC2D2a32BfE8890,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2.6612,1671204533,bafkreig5plza74fgtdzu3mye62h5ayc4g4icsmzymfp2snlriz5hovdbrm +0x0765b64e5c831b0DB47eB50689FAF27640581F46,,,,,,,,,,,1,,,,,1,,,,,,,1,,,,,,,,,,,,,1,,,,,1.34968,1671204583,bafkreifx7gu7pbchnrpu5akw4ypxzrgvx64kvqoakhtobes5jkmugntpza +0x56C0A595C18bfac8498f0a111321a6c13F0C6c8F,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,5,1671204683,bafkreiastp2xwn5oypk5o5vx3eqttpddeua3o7sxqqpmdbxcskrwpdhoae +0xC9fF715ff5fDE21a10c8054085a756ce098fE896,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.349027752954284,1671204748,bafkreibixdfitecyxgajrrbsezs66f73ivvkoax3oajvqf3lxa5gtmcpn4 +0x96cd55CDd63F1034591b11A9003eAf16e7fe715d,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2256.600830942315,1671205499,bafkreibcoznyjefxwfnzttx44ga6xs2ksifbh5rqqwzqdvq6wtpzysz7jq +0x429caDA80d5151BEe07478Aa3998d7fF662c934a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1975.1090068795834,1671205499,bafkreicrtzrdzlq2lzu52w3heqezoy2e2mvxpu4h6vncgpjbc7o3gxfi5i +0xcbf14703817ea9BcD920c45e073E43720220B971,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37347.998309205395,1671206097,bafkreibonnddz6utw3xyjlmubpblhoyirnyiusk2lcjuuvla43o7lzizvi +0xec47741B1102b74C51cd673Fe5572719aDd8a838,,,,,11550,,,,,,,,8700,,,5700,,,,5000,,,7500,,8700,,,,,5000,,,,,5000,,,,,,54130.600902104394,1671206339,bafkreicdkhc65eu3ggu5mhpmxvj4jneqwht6re4wwxfr4w6rjyiuorhsam +0x9b2445f17BDa06F29375feD1B00A966aC3EAeA6b,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6995075402796984,1671206651,bafkreibc3uxxmgrqobsaaiisqp3y4l6466fvkvfmnqltp4b45krfz5lnie +0xA8D57c23cD6709d47efa8760c50Cae13008e1BAf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,102,,,,,,1.1860387250983817,1671206730,bafkreiaqy4ubs2qktq2dyekc3ohih6ln6jb6wno3qxhp342iq7ezczwi6i +0xDB561628fcaC1f08Da4C3A0ab130705d542b2161,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,101.01022129,1671206739,bafkreigcoj4eddlu2t2we7ztdv4wscip2frlf2qh2zj4hgqvck4csawvwq +0xCBA711BEF21496Cfd66323d9AEA8C8EFd0F43e9d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.2553455619303106,1671206804,bafkreici4gqu3pz6xhyh2bgypwsn7sn3wz3i6pwyqs2pnmlxiw7h4o6cly +0x302Cb4B44dAD92448078e82C04b033704D558EF7,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,35.8684240097027,1671206959,bafkreico2ryn4gjzwu2rj7shkufti3lzzrscplvnra6ss4aov3zuonwocy +0x681a8d5212855d6953BA425f8D6E94cCCaF26D5C,,,,,,,,,,,,,25,,,,,,,75,,,,,,,,,,,,,,,,,,,,,5803.43,1671207283,bafkreiaf6yocmheoc3lesohiofhbcdwuy56nmsdpr4vyojhprl4qkrkh3q +0x46f374Ac4a4E6779973812e051e72d9d6379e756,,,,,,,,,,,,,25,,,,,,,75,,,,,,,,,,,,,,,,,,,,,2121.2305254048565,1671207422,bafkreifjfpojx2wyde4delt25c3xyikktfc3lpa5lhwuqbmbgz7ykl6wna +0x83C9440dc34DA00c47A0d4dC2b598d7BDB1b53F7,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,1.7676241269289703,1671207481,bafkreibzk4rrxfw7yo3wfjrjvgpntezi744numrlkfuonli3us2bivqfhe +0x2BBc8FC8DF4B96Bb0Ab8090C15e0128176328465,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,29.34747896430588,1671207506,bafkreigy4f6grqrofrcyswiy5w5yddjc26cc7semipqvnltc3s3d2wnime +0x919537727FB3fdb5D6646bE93D615122ffA6ed20,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,1825.5232547186997,1671207541,bafkreiebdt742x5gpayklwzzigm2t7my5tps3bcg2kgecc5az43zrlw2w4 +0x2D73dBD5C9b9CCc1AC273F155a7A335A88ED51c3,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,2898,1671207581,bafkreidqv3gazxorxlwkakhi6rowtf4odob2dp4mdk7r7lohswqo4tyh4a +0x40DE3299Bd8a10D8Ac3f32C1A55DE40640cF9B75,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.1837882513481409,1671208032,bafkreicqlak6qsrnr6zfdynznte2wrh5a5pcetpdhchkve5prhkf5zbvwu +0x49d1978DCe1a788A0e33Ac59C004e5fEe4093e95,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,0.51827,1671208076,bafkreiezajln4c7pbkmoblrafawsetza34jwtqtsalzsjieacvrdvrc4zy +0x36b8A824dce619575067A5a012dc4F7434953F43,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84.42308041,1671208403,bafkreihonvkvtf7muyb36d2xkvdpuyw4e3b2us24253lzy6rgj7apxuwnu +0xb197bcfd992ED6c07eFfe2ad662d63706bF10762,,,,,1,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.66434016,1671208579,bafkreih3eo6kijowmitcpgygvswoskuxskuwy3vinrztriz67knyo4es4i +0xfdc4ef8a7Be1ddfe918A0D4822273b5FB01a33f5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,69,,,,,0.0973639753565,1671209602,bafkreifxt5henn5zgdhq5jjenlqi2mai7mmrlz75wpzkyinmkr7oaesara +0xC4a0B44448C98f14a498e8BF98A1FC8f8Dbe2b66,,,,20,,,,,,,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671209681,bafkreib4e47kzx5fw4bmci4c7l5zmoslkdzuicxq2owehyq5pu62zrr4rq +0xed1426A8B06bD1328C3640d94e70E8c04f42F72e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671209886,bafkreifs2rpvvhbpft7yx2nefqgaiawohi4sq6fyw62ulqtfwmyhbpnqd4 +0xd73F607911967e716E9c275e71831d90C22E9bC2,,,1,,,1,,1,,,,,,,,,,,,1,3,,,,,,,,,,,,,,,,,,,,0.65,1671210151,bafkreih65e3jfde4nqlild2gb65wbgf4xwmdtrevp64cy2hl66bjobkhwq +0x26d82ECacE3eA30A8F61CEc406aD8b8df5c7DE2d,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.09437993920357,1671210162,bafkreie6rc6pidrcopqgkzuls2zjsplxkzq5utftnb4bamx2nlzay5wj2m +0xDc9C5e34959eC3643AF1e1D34A83D6b251AAb1eF,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.01381927,1671210212,bafkreialvjpvv3lnr243yesyb4jipehwb4b5qnywwl4jthiz2tdhd3prde +0x6bA11B425C35064D841088d2094Cf0A910E27064,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,,,,,12992,1671210759,bafkreicqbqgzn5zl6bxrbdga7eta4gv2zkmwlwd6lp57atchzgbrzsbtgy +0x2957C2968ebcB91f5683768a9bdC468d08C2a2C2,,,,1,,1,,,,,,,,1,,,1,,,,,,,,,1,,,,,,,1,,,,,,,,1,1671210851,bafkreifqcoado2plvys5w2kvvlpjsamqt2hkjdvqxzh3vw25luz5m7fskm +0x90DF04c7C80FC13fCBd24d7bfd9E9D1DAb119F0d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,10950,1671210944,bafkreib6o5outdm5visjazhnc6e3etd74moxnco2cqu2fkdjj7eayep7ny +0x940B06e1deAB94a79545Fad26Fc80b0593Cf3ef6,,,,,,,,,,,,,,,,,,,,,,,,,,12363,,,,,,,,,,,,,,,12363.4388340838,1671210965,bafkreidv6lvhxwtfltonxmjgmutyvmmhvgchp6rsi75lct34jkqnj34icy +0x19D7A7086E3a96E0aa783E59594eFf743eb12aCf,,,,1,,,,,,,,,1,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,1,1671211085,bafkreigaggrsafg32z5bpvwzzdcqmzvzuxzqplw7lxl3ox3sukpspscmha +0x6EC03eE16bcD001A73B18331b954542368F79e45,10,8,,10,7,5,,,5,,,,,,,,4,,,,,,,2,,,,,,,,,,4,,1,1,1,1,1,0.1,1671211285,bafkreiaenjkfw7pwambzixambgx2t4qesavv4kflecvgf2p4hjgxrqhj6a +0xB13Ab448612ebDe40D25bA8E229760f70120C0Ab,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19617,,,,,19617.018208970716,1671211969,bafkreidsf2qwstcz2woo7zr5pwslcxblbwsudev3hyyh6gwadnmbiggnve +0xA24a81bCeBBEEB8E6687BABF99Bb4d0F72C22aF5,,,1,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,0.08572442165927624,1671212476,bafkreibsixdgifphw24zxdwitxozy7vh2lximv57jibkbfb56bnxsvrmb4 +0x7eb413211a9DE1cd2FE8b8Bb6055636c43F7d206,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,313559.07832660264,1671213805,bafkreib7iyr3i4yvt6zmyk7rycxrfma4mslgsq32qf7qcijufqfzu54vbi +0xbb59f8ce665d238A9e8D942172D283ba87061F6F,,,,,,,,,,,,,2900,,,,,,,,,,,,,,,,,,,,,,,,,,,,2904.598055979192,1671214214,bafkreihbambspg2k45tfqcv3wiexqpgtpu2pxxinjcawru5aof7gdpnkr4 +0x9740F84Ff965f13Cd8C64B3E375CDf4dD5079e4A,,,,,,,,,66,,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,3016.0218223101856,1671214784,bafkreidiyyafmresrc2n2js3yaii2o6plphgihscva533aaoetqb36z6h4 +0xe26E7F7D5f8B554AaaA1564437708B0F73eF035D,,,,10,,,,,,,,,10,,,,,,,,,,,,,,,1,,,,,,,,,,,,,13696.87380755508,1671215035,bafkreig7jgmkt72mrr6u3a35dpb7667ed2qzs7izm7zuhoako7uifiarte +0x7AA46b228d0a865bA1Bb473f935079cECA20e107,,,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,,,,,,,,,,,10956.928028402404,1671215052,bafkreidepsiz34ttgbrhjd2sgtpvwbapjscz5vfmotofrhm2ylunk6bb5q +0x4650D0c9E3148A8f66AF374820AA2eCa0A47DAD4,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0657727312992504,1671215199,bafkreibtswbi2byxqcqcjsrbn3cgbc2pljpccnkeahjzeb2ugc7wrdlgta +0x92655644842aE1c96d4439a4eD9f56d57089CC74,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,100,1671215228,bafkreicmo2iy2o23whegbv6cb425p3x2crh6mxizuje7r2ndnmqah45z4u +0x5c149318E8295F398bB555dE04fe8753688782C8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2.053033639470262,1671215374,bafkreihl6z725qw3o5dg2qnitrdkq5qv75ari4mwzvbpozv5gzksqq32am +0x805C36F06e1f1233aA9617932431C425d5385Abc,,,,1,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,4033.7466748236775,1671215569,bafkreif4tdb3kou3bclcnmjgmlkjjvh6xepurvdb4e4nwsb4agipfapwqy +0x3FcD271Ef09476C4dE09Ac4e500a8E79008aeDcf,,,,3,,,,,,,2,,2,,,,,1,,,,,1,,1,1,,,,,,,,1,2,1,,,,,1.5,1671216275,bafkreihyyvnwjffkozur2kog4nmxljlkxxddtvpm7yo23fssoytaskghvq +0xF1A5e8075fBBDdF495a2A18E5De377B7741a6350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,1,1671216450,bafkreieclero74uy5eis5gbm62moms5fagx5x67nzir3ogtahuoh5gnjca +0x9550bFEbaa3a2b17be89B90c607ac07B3Ad8C630,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,14311.35,1671216529,bafkreiemr66h7eq6tgucxbds2lczffyo74acznqy4cxvhtypj3onkauz6e +0x2584Cd4EaC415B8fc5Acc02Cc6E552b13110592F,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0000889965265607,1671216690,bafkreiedc6pwsbjhmda7uxjuyxk7bmpxt66uflomm26uqcodlmiviqc5gi +0x6371D2309B7F79bB0FCaa6e7E8CeEEf8f1D4C484,,,,,,,,,,,,,,,,52,,,,,,,,,,,,,,,,,,,,,,,,,52.949334291317186,1671217202,bafkreibgcj5kjhkc66xq4lrsbjcwn2jjatrad433a44nkqk6dfylwjkj24 +0x268C824BE6856348A0c8A57F3F14573E16057FDD,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2.8724260212838457,1671217570,bafkreidfdqpwkvuz3udktngcnezcpgd6djaiu2mwflstcftbrfc7wyt2gu +0x2e8c4a0D5e0Ee4595e8c96B1570dfdEf77998A9A,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2064.616453126144,1671217669,bafkreic7omdlrehanp5y6ap6ryggmacir43hwrlprmezusyuhmwq4l6cni +0xe452D49486a37247040c7fE045eba3a55338FC70,,1,,,1,,,,1,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,1.0273526092158547,1671217945,bafkreif2oglvbrpd666xuffosfwt6ywo7xbaophpmskdoihwktakvg4soi +0xf3A11F948FfC1ec0becF7961d9A0C013249A573C,,,,,1,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,2.32908743782098,1671218184,bafkreihtglnngtpzbibrpvv6ngccso7cweovadwqqhpvvwtfdpvsbsmrvm +0x3A8D75b79a27d75107c697301E8120D6ee47535d,1,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.841923293145493,1671218482,bafkreicl5wzmsmodk75ruxclcwb2vsbpixvlxkz33b4c3gdcnnsqz6kun4 +0x7279F93A1C383743Fbcbb0730D9C7623BaC7e3A4,,,1,,,,,1,,1,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,1.2943157191481065,1671218789,bafkreieabmsvpxrxaz7roomehj4uvyqzjylp66c7mbxwwsykrnxcdd4ojy +0x547d7Ef04c005a44a3cC89109D2CC78c85679586,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671218822,bafkreickvg5pxxodjyj3nqgasqesct5d4d47fvalmvkzzjtgimllda76qq +0x27dc8063CAB466c901E554dA5113d0bE42D82D06,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671218907,bafkreicmzu6nvmai6tgya2esxujxymijzupiutb4jzlxlvnb4khspbzwi4 +0x9a74eC99Bd88ECA680485dA7F32FCa05Af375dcF,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1,,,,,0.43340849600165005,1671220292,bafkreicvlml6qumzcstg7evav34da47mdbtieuryryszi2rwr5tjkyyos4 +0x703746902985E6ca15d550B483Ae76DCf040B96f,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042.9156456662424,1671220419,bafkreicndvrfbwssrzkfq5ghneribptko4nhbabaysvhrec5qtxndg6you +0x747B4638BE368fad22139948f3f08a7Ed4244A8f,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.72549376671005,1671220530,bafkreibj4wq3tolfwzjtvuoas7fxgfouu2lrna3fop2ibankkctglmaueu +0x08e84a9fa044dadc4a2329834495eE12AD0845d9,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.8987945341781245,1671220782,bafkreihg7t7wr6uujnpeggodbadw2snkevcmvcelvousvjw3evkgyrsxra +0x38F0C7d7e92422B68f2d5b4a388c05Df6D531F52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.1538404847148487,1671220941,bafkreifg3okchlp3sodlsmicznsxcj7svbhbw7hr7raplbhgbi5d2aqydq +0xCC459846FF7587A972CaEFF28315c8D20390c4bd,,,,1,1,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1.1767782162315465,1671220946,bafkreifeo7yuhk5wxr4bqwrdpprqpyf7ch5mnv6o66nq7tpaaphcubcbma +0xA37FbD2264b48ED56Dd7dE8B9B83DB35561700eF,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,41052.657273307166,1671221046,bafkreige7bxuacdvmqiuxozm2kodoomofz3qoef2u4yaqphgdjyafqvvxy +0x78b74016f06EEA3D9b5498aa30f6981F2A01cC84,,,,,,,,,,,3,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,0.5561407619747151,1671221828,bafkreica7yun2nj5yu4fmdsx3phtu6rumeexjpzx4lmh42tt4hrjbkwcna +0x153321Cff12c46A8b94B916fF33DdC684182583c,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042.024008607839,1671222026,bafkreidfskudqvs6sjlat552iks2o7rtbbobebhnodvzimzgg7ina55wym +0x11b3637ab509Bd5F177d1382C8FAF41585edd108,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,51273.74947058975,1671222058,bafkreihjh5txyri6zlo5xhxj7c3wjltohjuooxf6yiltntkys66c6xcj2e +0x1CbD1cd53dD1a91b15adE97F5D78bb54dB598538,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,6,,,,,,,,1,1,7,,0.41018908201563425,1671222386,bafkreifklsek3gvq7mjjgijbrlfe7bv44ie3mhvbm42slmpr7lvlopleqa +0x6854FFFA71A4aE49df700d087D377a297C595386,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.02711050473202231,1671223146,bafkreihctcov2sajmkd5z4fnzpwgfiaavklhc6isojv2r5nk6kscav2tni +0x7baD8c1E1895F22cD594Bab7b0d5C6a2B1c02acA,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4987.378498674448,1671223493,bafkreidxzxzxid6bft2jsdb24lekacvyaiydjzpso73gck2qkgaatfdabe +0xacd32cf13855Db3A1e49e49e1b67206ae5561789,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2000.25,1671223700,bafkreiff2lxlbaojtou6odk7dtzcu3fcdj5vuyxlrxztgkdhnf6cqvdxza +0x66525cFdfE1438a1A130ac83BC7B9500912e31B0,,1,,1,,,,,1,,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,0.2168493754986168,1671224518,bafkreigzp22lfhdhpwtfql2yumonjjg77iddnduvjk3ddlqzlj4lpvxjmy +0x4453796B9cb9F43aeaFd511728Aa738569f6Cf93,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,9278.30676951538,1671227735,bafkreid6rn5mz73vkodkwrfik3x3goswlogx4az37xmirazea4rqvc2uwa +0x285d7b3C4Db8C27C9DfDb08D1808Df205f76866B,,,,,,,,,,,,,10000,,,2000,,,,,,,,,,,,,,,,,,,,,,,,,11743.882657884855,1671230055,bafkreihy6mlcduj3pvidppd52m3d4nu3tde6ptxkmyw6anndrempwuhjze +0x22811cbb477bd2E18313B7113Fc8b66ABe929861,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,24719.718437700954,1671230566,bafkreiaews6attbbqtvxqulkidl7c2yeiia6q74bdgt3grawy7gvyfwxji +0xa9f1efc2e4D79635B393cd35c5F4993A5fa36d8C,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,138.15225188541865,1671230749,bafkreihwshsipumv3ynbjlrwakirradwtsmsr3qet3wvg2qazamt26zqya +0xB083d214a934f556580f850B8dBCFECCEFe8ED8B,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,7530,1671231530,bafkreihqaoysbwan7z5agel36xvc2dpamrht37oig7vnyslfgopckzpqii +0x5af5b3f842fBDA3783C3fCeD36aE88E8A893848A,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2287.04180427728,1671231777,bafkreihdeax6ui6z6iswz5kwm5vzj2e4de2dzekkriu2s7pdljfkfplksi +0x1Db5628f9443A603615beb064106BB159bEdEebc,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,2,,,,,,8443.144801450919,1671232524,bafkreidtlawaneqsxphc54wkdo3yna7y3ab2p52vg2u7igclsaynab4dwy +0xa31c0D37b970B2aDF47ea2F606f4DF0b6D890bd0,,,,3000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898,1671232868,bafkreidqtvv6hwnikddpgv6qbv3js3z66jhbefuk7qvznahufg5ru5r22e +0x8eD57576E9219b2c6b966f966BA8dab65444E443,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671236086,bafkreihixnd6tcqbkmhfxgegd36icicmm5t6ccyya4k4g3xv4hnupzh3cq +0x0E98493285D6AbB9E2979C9A117C5C2Eb4EE3737,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,70610,1671236229,bafkreibgffkkdeycjgoa5x45gwsmws7rmho6qcdc3uilz4bdkec5o3cyxu +0x24749AedF18208aB74A8110E07E820286Bb5acf8,11,11,11,,,,,,,,11,,,,,,,,,,,,,,11,,,,,,,11,,,,,,,,,0.2428375704435186,1671236694,bafkreidnox5xotvx2njx4gch7t6iyum4f54q7j5htgxmimc445ov4lkp4q +0xd314cB3388D80236AC7111be118F86D8558dE8B5,1,1,1,1,,1,,1,1,,,,,1,,1,1,,,,,,,,,1,,,,,,,,,,,,,,,1.0331537342628272,1671236861,bafkreigg36d5xqysgw7p5kzbf73phhv7dhlo23k6yu7i5usev2uht5rvpi +0x8B9Cc341084337c0A5828BC0D5E20dADB197d991,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38646,1671236901,bafkreiavkd2gzepegfwr6wxqghish3odwwb7roqfjah46so5j72fk6cvae +0xE510058152640c40266D910eEA4c42bf58ceD7f2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,1,,,,,,1980.77669521,1671237143,bafkreib7pd4eibqlrxxoksczd2qyt6sck43mwxthlxhgbngslzrkcrtamy +0xd31A84c20bc430aD75E6a1903E7dDbee52211072,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3884820939313374,1671237659,bafkreias575h7nbp75tqcdhvdp6hbo3r3oualfnvkwsilabw3ermapw5nq +0xcB2940837b919e86899d62c19242fA49d3821F47,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3.5309229076074486,1671237864,bafkreiceuluoyexejtlttxibfth3u5j6hxaftqonbooy3fimjj7d6s2euq +0x63BDF2Cf160A53D38a08e69AEe860828c3a930C6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,62.95294118,1671238271,bafkreihzenfsxyj6l3xwt5myqlkua4oh26wvinayljmc2c5gl52p4wmjs4 +0x26e437baBD9388F20D00fDC7A45E26a516925f7f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,50,1671238345,bafkreieb36em4o7zz5zkpxokm44pctyxbotb7rn42y4qmx5adtnok7sh6m +0xB68D15Af9625Cc33BB7357c293CC0D82D449eC14,8,,,,,,,,,3,,3,6,2,2,3,,,,,,,,,,,,,,,,,,,,,,,,,1,1671240486,bafkreihjtjvvisl3ri6h7evdyz7zqb7dciri7ytyydaar7w227662urpiy +0x14DabD5b3BA60D97a22b01ea185c8124ADa6760e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,7854.519213651425,1671240758,bafkreif2drkjkklk2ec4ekx6nv5aa6jwcrfnoaak3llfy5k42rqwegoaj4 +0x510E74e9Cdc8Dd5627D652a26E49480A81264ED5,,,,,,,,,,,1,,,,,,1,,,,,,1,,,,,,,,,,,,1,,,,,,20926.185918820403,1671240977,bafkreif2fvd7qzngzuf537mg7nzlagyyfxp3m4vqcsonwh64bxmbu4732q +0xe3F97E97576b4EDAF30008a2586f9fDd417a745f,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671241798,bafkreieyo4srzkad3hyst3c34phjfxpgoc3k36nf7gluo44bkl2veojge4 +0x0928AE0e403514895B692476F052CeCBbDAd9EC8,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1461367596991081,1671242077,bafkreib5zuyuwe2cbhpzhr65bvl75giduzfelav2hks57vwqyv5xphkj2i +0x565Ef6Cd1d7aE856ff3D8A52607b8A0d81bF7E0C,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242213,bafkreihm5g22bkgh2g4zwol2enhacmpqwzutvtipkv7rjiz7h7bsgu4xhy +0xDf07b9f4394CbE97A8f1c89e910155c71fC1Ece7,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242392,bafkreidwpakks4szbfaj3uf57izbfdrd25rpf6v46tm2mxwfqmrz4mbqeq +0xD9b6bde79863135Ff29A5A5ec13DbadBa50eb3F6,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242517,bafkreickji7evtygfwhhyd2mkmrhqxaa4fwjj5l6vhuylcbyghwkcjwqo4 +0xabFD99A7DA59E8B96F1CEfA6E35FD03E6831Bc10,1,1,1,1,,1,1,,,,,,1,1,1,,,,15,,,,,,,,,,,,,,,,,,,,,,0.09448520374039082,1671245847,bafkreidxswxtiqycxtgzd3qgmu5qt5aegxguj2hqbmmz2kwgodr2kkbaei +0x4ECF4Bc90510794f5A4074136efb716485ae0dA1,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,57893.37653281102,1671247267,bafkreicl2qju3lzs7rfn7xub4m6hhfep4gtlqltv2v7fi6khdpvsv3ug7m +0x9b36cF890e350d4330F4E863bD2F20cec70Aa66A,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,17973.87520366447,1671249021,bafkreicpmi3pmbcmd63lffv4rdxe4g2pfozrse23dunrkvrcuvvh6lc5tq +0x64DC5abFE2147E1e361b64Bf7043867856fE548e,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1753.2158007959736,1671249129,bafkreib735tmt6ugb2xohtcy4pl6a532fmxzpceh3r4rrdjydnnpblez6e +0x671e4d58F407BE00fCC383732C020A7Ac1AFde73,,,,25,,,,,,,,,25,,,,,,,,,,25,,,,,,,,,,,25,,,,,,,14.004268150127198,1671249220,bafkreiabtpt3qjdsixsophkihgsuqhpckkj5bruhtrkrebka6m3w5q2tsq +0x33dfBf5aD72E69B9844c65801097501101B569ea,,1,,1,,,1,,,1,,1,,,,1,,1,,,,,,1,,,,,,,,,,,,,,,,,1.655324939038903,1671249381,bafkreiefjybnvz4ve5xtwka3pq7rq75uplah76m7gunuuoe2csgy7aw27a +0xA2201F091B2e8E5f8AdAf8b023b99322b9eA5E66,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,52859.62278816613,1671249466,bafkreiausin4uec5pltgmkdnfahcoydmi2ppxtqoxoo73ptah6j2hlv3dy +0xB3A26dc6dbBB8f4c7268Fd43Ca29338093d9eC7f,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1259.8842743322903,1671251797,bafkreidnkvaxbixewinhozwyhwkbmz6dmhveui3sgrbpij7q5kj3b525oi +0x50Da05bf3764a61908d5333B937Fa1f3d9900388,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2898.0500798374746,1671252101,bafkreig5bt6lrdwpkwjr6nn5djva5fdyorrwuf5wpjrxme463ehac5cciq +0x7F7ed74ba8d347640a0a4150751879eFA6a5c8CF,,,1,,1,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.01676514319611566,1671252818,bafkreialrwvm64tutakqosqxfls6feqveapf5ib3mnume423xmeo5zxrp4 +0xAC304C68737A133068230f0537B3E58c51E9dA30,,,,1,,1,1,,,,,,,,,1,,1,,,,,,,,,,,,,,1,,,,,,,,,0.0633398263693809,1671252893,bafkreigvl735puphjtwjygipactnj336y25rxcqazf5qemw7u3bwfx6kwu +0xC2d70fFE112d9b18c8e093B05C2f785B1CE7cfF2,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.23950044972721285,1671253024,bafkreidosuen6uri4htuogtwz4o6rgxgare634kp74fm7cqk7wbueasjui +0x974A4946bCE4dadB4F9d3B5c04121B41AfAF8e40,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,0.05118559999343897,1671253093,bafkreid5lob25jykybt42wjsnmtp5mxdgkyig4gjvrvym6af46ais6ka7m +0xbcD162B4a8063d72bF95A1f685D472a45B35d49b,,,,,1,,,1,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.05922929587951309,1671253182,bafkreieoxjkokbio6nubuhatxpiofbzgbbdm44jr7rjjknva6w6jgeyl2m +0x1111212AEd04902512911f9573FC146ddEc74CB5,,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,1,,,,,0.0430875194253828,1671253252,bafkreicn2e7tonk6vakceg23gzcbcplul2qg2nomuvnujamr3nfqance6u +0x5C42bDAE111098BA8E204D9Cf2692D4c861DCA95,,,,,1,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,1,1,1,,,,0.04635796911781609,1671253326,bafkreiaxaxujg2px3qawp6rb6btghvolzq4dzezzikxp6ga5ypaddkqi74 +0x72A7aeB720Aa7D5b3187757edcF4757fFdb506fc,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.05287214047356214,1671253389,bafkreieua6wufmbpq6jb6rhjbzck34464dnvevr4bzcaonvgq65dgcnuny +0xD45791D42C5dA0Df1AE44da5cDB99969595D24Fd,1,,,,,,,,,,,1,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,0.03685967796236578,1671253593,bafkreiekkmogbns2ccluqxzgwvez24fx22y7i7ufqlq725uaak6q5opq2a +0xac12BEbd2f2Ea732d18Ff1132062acF8a15C8E10,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.01020162168649319,1671253652,bafkreieqxuzh6recbleuzoy62blsksruw7hw25wlegtbdxtgma2exraptu +0x9A9De9D579Af85c5f23a06390078A5799887BD8C,,,,1,,1,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,1,,,,0.06979189808477027,1671253715,bafkreidfvalubtpwfae7f75cdqurhfu4s4zl4vudcexazht2l4fx2l4ylu +0x66d5d99C831D0222e1E4EFb990B75Dd5cA145068,,,,,,1,,,,,1,,1,,,,,,,,1,,,,,,,,,,,,,,,1,,,,,0.03757350005964388,1671253780,bafkreihswfyyv6si476vmlpxvm4jgtusgmk5t76cnzptpezoz3ha3qb3vy +0x1A74d0285a569120AA2836CB2b0fa58038ADB800,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5959737455390056,1671254285,bafkreiae6zzcwg5zsq4ulfgw3c2mkswlxz3gugwpp7vkbia7tak3gntb3q +0xFE274ff2846a414e690606c2ed2CCC4Ad6bB9C53,,,,,,,,,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,2044.957552074202,1671257221,bafkreihge3ngjjdx6gqbli6qfi2smvhpwlespg4726q3mqi2yorsta7yga +0xA884A2F1A5Ec6C2e499644666a5E6Ef97B988888,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1655957084693322,1671257888,bafkreieeoyi7f2oodebtacecmbakzqnqw4t2ugionjvklts5gkjjagkxyi +0x36fF5fF9a0311F7c15BBA1f377F66c48683FFe10,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2903.7911666851123,1671258558,bafkreidolbfbg2zxrxinoysicu3spnqh6qveaeuwidt7taoht736vz4o3m +0x654Ecf30edE43400D342Da2dCBc000d756882f64,,,,,5,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4272055,1671260680,bafkreidzq35y2wthjz4faelwpllvmkpxeygpeqkom4boxkb5cxr4c4nb5i +0x5574D6F75a59945A3D2e056D048816E11Ce12BF8,1,,1,1,1,1,1,1,1,,,,,,,,,,,1,,,,,2,,,,,,,,,,,,,,,,0.18917595580772317,1671260704,bafkreifpqwzidndg334h7qfiffbu5p2a7m7yqvjy56yusy35dvqolil3uu +0xdE1E4C3CFC5E2be601D7ABCd70a1167A3e0ABb7B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,30779.200290666053,1671260819,bafkreicjybqvcassefifkdaq7u6l2cdfeqpjorgoavu3o2pqldqiatrcxq +0x085ED975A8b6B860DE3C2b871da60a3f9F48A5B8,1,1,,1,1,1,1,1,,,,,,,,,,,,,,1,1,2,1,,,,,,,,,,,,,,,,0.17384810246927598,1671260997,bafkreiahzwzf276rxryq4yrvebjvxhkuh3axcqpuj65qxwtm2rxozlhgri +0x32791bbC7DDc9d0e6Bd914F3B7F73747132a3A5B,1,1,,1,1,,,,,,,,,1,1,,1,1,1,,,,,1,,1,,1,1,,,,,,,,,,,,0.3091705561948307,1671261099,bafkreiahjwtbl7ncewtjqeddwjf75pfuqgeb2tqjfg27bwghcvso65oo6u +0x17EbEe050C312567aD0038c0a703779401cb0fE0,,1,1,1,,1,,1,,,1,1,,1,1,1,1,,,,,,,1,1,,1,,1,,,,,,,,,,,,0.13382320122129726,1671261461,bafkreifgtvxlriutkndak3llzw6j466zjrc444scqfqbgiv2b6r7mkrmz4 +0xAbAeABC8d5e5bFf88579E5C5F434B56Ffbcde811,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,1,1671261559,bafkreifxddja56wtjcm5k2gidumstuzmznaqdnsu24recs2exnjt22lde4 +0xbCD8Fc34307CC53755b6082c41B6BA643FbC6f99,,1,1,,,1,1,1,,,1,1,,1,1,,,,,,,,,1,1,,1,,,,,,,,,,,,,,0.3029624755970485,1671261597,bafkreidwvjjfliczxv7jkiv4wde4h5wfuj25vmn43cv46vvc7quie25esy +0xd7b26011E6eB5857a6251da1f77E9f3d8AaC4489,1,,1,,1,,1,,1,,,,,,,,,,,,,,,,,1,1,2,,,,,,,,,,,,,2.1251145003999774,1671261823,bafkreihilanru4q2wbzmj43mch62s23drbjfkxwoer6dzqu35knhnmz6bm +0x4131826eaFDCb7dcd855Fae9098EC693165F157d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1,1671263034,bafkreiei6gqr5v7ipngsqumkk6qn5uol3vs4zikporp7wonwnn5gtmzm4q +0xbeE81eAd08A2Dc61D07fb5eda71915e099052EC2,,,,,,1,,,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,4,1671263239,bafkreifpqo4sfvyo3es5ckd6hrr5niixhsmtuxrobmamjidaret5ia2l4y +0xd8338299e6af9B38D23EeD8f8DB4427884FEaeC6,,,,,,,,,,,,,1,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,2436.902431680988,1671263330,bafkreifftj6md2f254qyhqjoontrhrqvgcu5oviobmf4o64oruhtax3cqm +0xcaAB362B715335ED09FF3a002CE8B4A9f9fB1647,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3727447105117369,1671264227,bafkreicqhbf3urgbkgqqg4ubxcdjii5raroi3o4yblhdems42whuasn3gy +0xBB8B4d64f99f714954522C3BFd21B1cB1A6DE9D8,4,2,2,1,1,1,1,,,1,,1,,1,6,1,,1,,,,,,,,,,,,,,,,,,,,,,,0.19869195039928267,1671264832,bafkreifq6b2brcdsu3flmxekx65tvwzdg4c3obhc37u2oa4hcka732el44 +0x06160a0fA426077554962C984c27939c80939d80,,,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,,,,,,,,,,1.4587230461295004,1671265265,bafkreicbsld7uomoenzgadcpkq55hxtre5i6zo5hcn5q5jn2r24lby6ntq +0x9b6a453f3cF839bB85bBE60c8fF8b757F5eDF321,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,2,1,,1,,0.1,1671265511,bafkreihltytvhr3deelvwavmc27ykd2gk43w4brvmtpynjqzilrbgqariq +0xf661216d01f19b7510B2231C9011D36fDC43FB28,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.2489,1671265797,bafkreicuykbolkentgcnwlk6fzjcqzezij5nlmrjioq3wjrz6x3va35a2m +0x8e62389Bb355821D66a449fe0dF384C5Bd2019B8,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.0936684794085329,1671266816,bafkreiaxjz6e5s4liefaeeply4esqkmfer7nz7sv2xodrnehzs34eesnzm +0x05717559F79C1446344590ECA181166d94b539aF,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2048.277602540187,1671268021,bafkreiewczr3x6yyszahkhmtzeg2kdhcrvaabyqgo2kmljgdoktrleescq +0xFb408FA20c6f6DA099a7492107bC3531911896e3,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.025727362655572,1671269969,bafkreieyqtliaylrdqqngxxx3jxvwiqfe55r2v5myvftfpij6ucshtukbi +0x819Fec659e1C225ce330B02e01f1e4c629E92A7a,1,1,1,1,1,2,1,1,3,1,1,1,1,1,2,1,2,1,2,1,1,1,1,2,3,1,1,2,1,2,1,1,1,2,1,1,1,3,1,2,0.011898285447481172,1671270495,bafkreicv74qxwjqow62io5fkjvlppm44i7n6ns5esrzkquyzjkp4kwgq5m +0x168F87fBfe36B84E44B9d06278B2aA1CC73d7400,,,,,,,,,,25,75,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671270681,bafkreid7rnflvtxj6ujkp4f253xyyxz3ln3p2ukgs7ccfvpgnl7wezthwy +0x61601FF524276FC864B9BCb417c8410984652871,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,0.5758154348201056,1671271731,bafkreignz2ojru4qznpvfpwke5qfppicboix75onq2pg4tfnawr4hrhoga +0x5b2AD6a2884f5F14ec5C6d3EA363E6F86Fe9109B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,7456.27419430181,1671272568,bafkreicgo6qdwu7o7uoid753qyle6ldut7tzz25hf2fe3tecpjhxovbr4a +0xAbe2f901cec5eb03B8ca6357F068b0BdE6ba004b,2,,3,3,3,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,2,,,,0.14089387472143755,1671274181,bafkreih322ux5hhqn5yepyhrft6bhduevremb7w73crzl75dhjvk72faae +0x44821E910e6b53B6c9a416abAd4Ec40e35463DEC,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2911490119206965,1671274980,bafkreics6n5ieh3jc66gtkflpd6qmdub26jfk4pzo5otlhw6tbrpu6bqkq +0x945276fb8750c8ee5b86dF4804903Ce66B25eB59,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,302.31372203,1671275427,bafkreig6aihtvillpgacp3bcypsgxlvnfbyexjupvqivjmfhd3hppylxju +0x9959eC3d692b689ecAEaAdb569c72109AB870c89,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2334.3521871329885,1671275475,bafkreiaujhttb46ep6xmnx2fertk64n74l6lzrgr7zesejt26deh7i7hqm +0x1F118bc49d12855EA7Db09E785778038b9E04F04,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671275590,bafkreigh7o4ew5nlguox4mzanql25kuhlpefrbvr6k33hixmbi4fthhhi4 +0x13aE877B17610348D2f926b6C8d56E2A5C944D23,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1779.1279651100947,1671275675,bafkreiaezzgb44x2j4h2giro6khal5ixzk2t6pimzvxkcaqxso4w637atu +0x8C2260c955e38665751a9927eF482Bb0cb23e3f2,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2665.96464336139,1671275765,bafkreifbquomnvfrb7vygcr3p73qnrqplpyeo4okqzfnu7536nrv3biqvm +0x4b900b8Ec1C7d8F0A9B602a803fE6193F4D5AF54,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21686,1671275836,bafkreianialfkxrosxpo7ub225rythmsd4alyez6g5jxu32l3berqlpaay +0x10D172F41Ea8A9e60a97DdAF86D0924aC57629eD,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1448,1671276720,bafkreic4ky7kc3o4aqbvpbysjyewjwb7sitcdrkfk7xntd2k7xlubimcqi +0xcfFf83681b41F78bf128c541854ae5d13B714524,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.07331805224391214,1671277548,bafkreic6qtuxrrctooxk5xlq4dsclypi3pmzgzyhfnppql7dffzckhsga4 +0x7DA0e97CB78832463914392B5d414C1bEFA1fB01,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.483727221262586,1671277941,bafkreigjmsv7lowzqanett5bzrcerqgjze5r6wnjcbc4j6pzk4onyolska +0xaB7b49bacd43BD4CfA41433D477F690Bb9E1fB26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671277997,bafkreib2heyqcwzaucjv7zvakh4v6knw33ipjilui2tze2wsicabitg2ji +0x6896Fc21cB49706f549fa9Cc9944f0492e87Cbb9,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.8055829781335766,1671278884,bafkreiewoqgpmcub5dyzraavcnz5zihujy3atlog4hkvlwpuvttkogucpe +0x0a5F56cBf9c27BD3beb790a4914a36eb45Ef08d6,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,41700.19814099805,1671279290,bafkreigiye4kilm3uqfuyl5irrmmnv4d37tbap5csudffchvjb7dvuvtua +0x1aD23FDc757c2843759dEF2FE404E2c32D41cCC9,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,0.8023387119877576,1671280520,bafkreihyoeoylixtxuin5u2fkrxb6rubtgrhxpcjyjmlgtu2zlmfkxjoz4 +0xc7eC028C706ec2FCfdCf66bba7e80DED634f6Ca9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,,,,,,1.25,1671281765,bafkreighq43vdkc4rxnp27b6yzzqigkrc5eqbxz7bbp3evefz2zea675mu +0xe7c0dE8937CA02F262C9357Dd7CE079C64045Bf7,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22.112020277962525,1671283169,bafkreid3lre55d5by35zu3knezdjnseyvxmmbb5vbklz3a3ykeoxmirk34 +0x75133Cc748f1f9b280118A65610c0d5811B19d55,,1,1,1,,,,,,,1,1,,,,,,,,2,,,,,,,,,1,,,,,,,3,,,,,1.393362118011519,1671284140,bafkreigikltomrbldr7okryzxt45pkflxekzqk5f5uteoycik2z4kpye4i +0x405a3c03094a9e35d7f9847C7C9F2F68e91F55Ac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,0.7524939049990644,1671286378,bafkreictfhdkkm6u5jwxzwqa6p64ycychrmkkd5isafgmaz24ly4242fma +0x6f8b3E110995DAf3c3B48b10E106a7860F3EcacA,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02918597651880387,1671288620,bafkreia6bbymll3kcvzjlxywvm6z5oblrnbgutkgitder2zae72dl7iaua +0x9Fc7EEACD27d38a436462BB43AD97E49106820D7,6,3,2,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11.087104127354513,1671288717,QmYH7imLTWtn5AEMaJFb7Q1AYgw9WxzYBwTZeoJX13677B +0x8d0EFE7dB232fe95f9073D3a0ABDb4b6BB7CC68E,1,1,1,1,1,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,6.676079358955183,1671290338,bafkreiabir24hjxmkiq3ohh74jy55turmvm74ktn3sbyslewidywifffqu +0x563415679588e508C0C8f0a729C9bF898406e9b5,,,,,,,,,,,,,50,,,50,,,,,,,,,,,,,,,,,,,,,,,,,56563.15403456935,1671290471,bafkreifj6wi4d4h7j6xisyx5qqiyjd3wzuofrnghgufdlj6dz2ouetbplm +0x98c366dbE6d98A2D6A3ED471608921b03f3abCCa,,,,,1,,,,,,1,,1,,,1,,,,,,,1,,1,,,,,,,,,1,1,,,,,,1.00013,1671291005,bafkreicdt6jimwkkn3ual6vt3p6xv7j5ppl2dw37yvlzngdry5f3owhrqe +0x416365993481e52e0472e7417656276d4E147A00,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671291824,bafkreig6cnzk2xiipixtowf2znuf5xhdeqrei4icvd5ek6o4eihj73rv6e +0x695617Cf7798ab1Ba9783C5d29eEf21722991596,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,0.9830142648823579,1671291994,bafkreiayp5dyf7bwhemio3bawhp6ci66zo3h6c4wpte5ptdaqvnnpyrk3q +0xB62cC7e91e4aa45D725E5bE32660982861911E7b,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.7494944549842599,1671292427,bafkreicl4ubidxm676n2ppxlb54hhdg64jkvem72udp2pluxvaascmmm6a +0xe8C4BbAeEC2286A7E312217E51d6ADE15BE4f1fd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671293964,bafkreigxf4yufxtb2anfscorlqjd34wtdd3ur26huzanya2gjdn6yvmmaa +0x1de2EF7a09f98510A507525D0Fab2d6c2A8c5e75,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671294056,bafkreic5o4ze7kr3l57n7zye5c3kucjma3lg2cflpsnb2qih7fetvy6cc4 +0x7F49Ea702931E4Fd84a6A9cbe96C804BAE43adD2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294167,bafkreiavet4mf2t4b5vyh3qu4fyg4sngko4sstcl3ffmfddl65xjere3ha +0xFC3d12Bd93b8779bc548e0acba1377A692e34Fa6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294345,bafkreid4nbfbrdkc7zvnd5brlnxsje366xckyacvspcl2ljyze42c66nim +0x2d9C2E2da61476Dc842D4F0F0c2792A35FFc20e2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294433,bafkreibkb43z6mvfbbqajqelopp2rebxihzz537qlyz4sgnsdwkf4c5q5i +0x49184A069D9811737Cf276ee27E90ab180A56e07,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294475,bafkreiaukokpj4tyg4hpezjk53yl4gbtg7ka23vgzeccdyrqa5dr7efkoa +0xa0e328f9CABB36f9F45904AF9651Ed32314E9F2A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,0.3065208566137737,1671294834,bafkreidbc74xvmjmxjdifbo3qtqopvlnabstpj6exa3wtkhdnhs6p76obe +0x037DBeb376900653E8b1744ccfD30f074f9F282A,10,10,10,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.40859718485822,1671296080,bafkreiac2sixvt7bnxngl6bg6hlqarqrvc2ggwdp5agqafrjnc7pp5xtze +0x315F8eA109dd7fCDa2b0e6b7FA4d7a4AB0e16De3,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6263815942921476,1671296187,bafkreiccuugmjfmegx7u35ha4f47iwcptoapudn2qpd6fkbvrjycgtgv6y +0xF5C7831ED9AD02Ae09236C4FC9f42eA2105C8127,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3824349258352667,1671296195,bafkreidex23u7pbrhtbb52axjxdd6zukbrmht3iircnpdpqxsibredphoy +0x13D0A01820336B22a6f7c64a72C64FE7B7a12858,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,1671296215,bafkreibg5o6yvlvqaurja347bx6gajznc3t4p3a2ooal2txhgn4ah65eia +0x9Ff5b690CE21EDcae135648f7ADB26c20f730761,,,,,,,,,,,,,,,,60000,,,,,,,,,,,,,,,,,,,,,,,,,58470,1671297223,bafkreicpafc2cmk2ytmmiibdmijsszexsaaj6wpt4v4witidljomio5htq +0x49B6E39bbDcA2439a91b29747818d0C364B116f8,,,,,,,,,,,,,1200,,,1760,,,,,,,,,,,,,,,,,,,,,,,,,2962.442319062657,1671298376,bafkreignglogqv5t5pd32okr3wytjhr5oev2iif3z3ct7hoyb4qh4npnei +0x4D1765279EeBc8F8d1De32e401349a1460C399C1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.8616471282543192,1671299357,bafkreia2fb7ztlzblvg3733k5inwweqwfc22laz6bdzto3bjcle6mzi234 +0x3722a8b1E2674FbBA7081C84E39A5cE738B8159D,,,,,,,,,,,,,,,1,,,,1,,,,,,,,,,,,,,,,1,,,,,,1.071471101222316,1671299521,bafkreihekbjisloknmtgxcqpd2foxccobetn7ebvvmutwhgbsjtoidh2zq +0x994F96722575B64b27CDBe327498F34Aaa2f0043,1,1,1,2,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.18036494427307362,1671299609,bafkreibhx4kmalf4qckqqha3ton3ub4sj5wyfua7kyi7nqcigwteir2rku +0x424929525a9f36897cDd3235023c13A2eA7D7218,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,74901.113275685,1671301257,bafkreiah54dd4lrmczq2gynlygby7vryjntrx7nlbivjelmtf7tmbkvqhm +0xD5C9B4E15624023Edf7Bd37ef568e3f7519275AF,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14160.535069270943,1671301757,bafkreih3pbm54xmh4j4mbqwcgsjio62s4wixj56gsmtjjfiwbcaltbrdba +0x165481239cc2827f92F738571b2cE1E532C900cA,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671303721,bafkreiatdwqgrhezh4ww6fdgkv3ficwl7bpyiwggbnntfqsahctpgmduj4 +0x0f28862bb9cC96f865c8047268230fF1248C7721,,,,,,,,,,,,,,,,,,,,,,,4000000,,,,,,,,,,,,,,,,,,10810.840170928062,1671306482,bafkreif54z2s2rl44rzlv3ma36yeyhe2bsbsela625khxb6vjrcvqigevu +0x0c4d9aAB37FE770956dA285C55C863fd114dafcC,,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6914263981336658,1671306868,bafkreiah4lhi7xdf5gdaapz3x7dmrcfqjtd74f4h7vy3fc3sxsnaobltv4 +0x6316a7c591E73772C457Db369C475149f55b827e,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2054.957062785004,1671308400,bafkreicmxbyz5hbovdsgxslndgxhhn3a6nvtbkfc3l2kkc3xsllf5i6fyy +0x3424cd7D170949636C300e62674a3DFB7706Fc35,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,10094,1671310781,bafkreigrot5w5vcdz3j4hm6cm5x7hqgowozbm7lru3ooiar536xkbp2dfu +0xCD531EfADb2a5Fc230EE1B55a510Faa5E33a2FB8,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.1630958968406897,1671311474,bafkreidynt5q4wgdve6hz3jcuun4qzjsmc3qrcjjaqv4iokv2jux4s2imq +0x71df93Ae5A9a2ba5064aE90b9690b4fa9C413387,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.064827901578754,1671313547,bafkreiepz5o3lvmw3zwapq7poopgrlce45ggqed3mplo4t4qtv3yaejopy +0xE21ecb50AA7a84688AE4457b770E44a21CDC5A56,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671314587,bafkreihzrn7t3p4d4dl6xgwnsq7qb5pygdsmw53rhu5mirjsex5k63unca +0x46A13b188365C40E5F4114a4CBd0D2425472d8D2,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,27170,1671314615,bafkreibo5cr7brp33gicibzjaaqfew3kkd7uq375fo2mwspgq3u5y4sqhm +0x355D9Ae5E1280dAe29442f250da325a0f7d5545E,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,46438.94969057179,1671314674,bafkreiav4zpzhadalzc7f5vngpctl3mvvcfv53vbsy7zfymskgekideffq +0x43286eFeA7820699484aD2256e2b6679f8Ce9361,,,,,,,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,199.6306102,1671315141,bafkreic6tcu4c5656zmskyejqwau3zu65zjfucvqtwrdlauwz2iljkr75q +0x14D607c20fF934B0d895577c6e80ab0cD6a8b322,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,1.8612038555956325,1671316704,bafkreidgslis2zycfyrbs5cngtkkfqhwxhtxhphbq3jetettj4drxg5feu +0x921887803bEF20491fdD1ed3b0B3e0a102205131,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25404.334795157523,1671318866,bafkreicbbctwu66aluc5yv7eqwgaqm74hjcz4uv433kr63sg3z3i6xipya +0x66362B929C1a9AaF14c51aaB9B455ad7fb8268c4,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,25441.109406340853,1671321143,bafkreigtakiv734f45cqpwze2ykbta5dsueoeefxxtty3g5uj352o2vs34 +0x77D4D7ed546b19077720EDA2Be8C847A1C358125,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.397184801604203,1671322753,bafkreiacyhisegnoda4llmjk6zjbvtew7m2bp2dl3rxbffklaonx4jy7xi +0xfCdD21e1fE6D09F6b6B2125fFD55b2a486767255,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1,1671323140,bafkreifp5nkz6fnmxafuvydizen4z7o7wspb6tbyot7vwo2go6u2kh5yi4 +0x35Ff42FC4a02E0E6789912F30b2415607099a535,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,37500,1671323362,bafkreihueppmfltjenwakpuq7apw4nd6uzsfs7tjd4grzgsuc63smfsyje +0x21518831D8852658057E43c7ec5503Be25366df9,,,,,,,,,,,,,100000000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,8128.8041753574535,1671324065,bafkreiew2yedfiyuslmjrrueakuj3jl4kccruzq763n4zoy6a6peobc7fa +0xDE2cA70e71829962A99A2552D826ac37e51882E7,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7902281586956074,1671327677,bafkreifz225nrjza3o5ykshzhen42prcw47iv6ficz5jp7kv2bq3a76gke +0x85a8181eeE053a72896b98B2F6698B6763aAB30b,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.01,1671328237,bafkreic24tzalzimyuhvtjsi3ewoxkitx4dvhhr4u6wwh3npvows6msl34 +0x48386A6E3528A9aaFF7591B320afdC7bAb527669,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2,1671328533,bafkreigiszuaagvdrwnrkb4yn4g5ujvahklermraehgg5blypofdiyl5a4 +0x762b34974ECdBcf8D9015125A48F7B4B6cBAA205,,,,,,,,,,,,,1,,,1,,,,,,,,2,,,,,,,,,,,1,,,,,,10577.594993647292,1671329607,bafkreick4abax4mawmwilatrdxzga7bnoj4m65gwupisfuq2nqdneklvfe +0x69E550D20eF429a092B4d4e3d3E9A0391714faEf,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671329691,bafkreiacbxdmgft24lgvtp2myajslnejyo33nqmheuzmpqpbnzeiavt6py +0x2ff5CDf2DFE9A60F650cA13A319A183f77EAcF18,,,,1,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,167.35625374984568,1671330873,bafkreifjtxlyrxe4seddbr44graltz3fezgagzspmaa5fmfsbmtxpnyx5e +0x407f099b53C9A67D0A407d5e79D79b1Ac940C07E,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1053.73277668,1671331283,bafkreictbgw4trinpbptjzshzedqy6czxc7ewxrdvppa67l7ofdyhovcle +0x9FeAc18007E38c8fBa5d5BF07fF04746f64D169E,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,414.85528633132094,1671331966,bafkreigoes4vkc5qsfkx3gj7lu3ogaoqihp3wlopfavbxqqe7xcpw5myyq +0x1eF7bcC3976056d3F0238b6f8653287D4d2Ea24E,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,4368.08636205011,1671332335,Qmbjx1uXFyhxctBhjyMBbSMz32q9dUBkm8Hyzme1oXZdcJ +0xee516142fdFc3066E096bbF4AFd35F00aEDCc2f5,,,,,,,,,,,,,34,,,33,,,,,,,33,,,,,,,,,,,,,,,,,,3401.9081930297534,1671336083,QmUdTSKjoNiUbJGsFbwrtmzfPJZvp412gvmpvPmDYD1xDW +0x955A1a68613C028Ea98b0b5dcC58901897EB90DB,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,2042,1671338330,QmRU384gyiVpqF5ZZrZNqEPic5mcYj8tagq7FVkj8tBR6F +0x8eE3Fc743653BC3854a71FB06505bA4c988A3148,,,,1,3,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,0.16297069024732827,1671341557,QmRY2bxHNgF7bpAphJMMmF2L5PxKRoWo1NPvHeKRHyqhTp +0x10cCD4136471c7c266a9Fc4569622989Fb4caB99,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10951.253434866197,1671344429,QmZf1NoMuueh77MHZ5pNastmPJG8RV39y4mQQFUSC2KwfR +0xceB0a87FDa9C81e280DCbaf943771871533566Cc,,,,4000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2820.130918683725,1671348976,QmVgXDnVKaqRtkGiVTicB9oz9hjA5Njv52CmmQgCbsQyx1 +0x300736a2C7eACaC5524930afF74779EcB2C775ED,,,,,,,,,1,,,,1,,,1,,,1,,,,1,,,1,,,,,,,,,1,,,,,,13743.578917029754,1671349223,QmRdrAvj74ybnmqP1TwqyrxSbxho7Dt1jabuxyohfmekiK +0xF37Dd808574dd96cdc87a196105A425543eB5a20,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2181.137028025385,1671355383,bafkreiagehu3dez2e6gal52of3dg6qj744kori2saxcaw2gqmja722ilwq +0xd493a0Be4B8bF4B62A59624e83382422B68a3451,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,0.6572477572861801,1671355671,QmVQq83DmfbCddXABcoBhk9tEChc9Sn9kbNoLdXNWvR6oM +0x2A1BBcdff7A047d82fc8829FAA0D13a8D2cf1dBE,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.67,1671356760,QmcNpAzoLvNqSJziRUaq6My67dYYsPVVWoXxAf66DYHUh6 +0xC292573D51097347bA34Bec624fD088DD3D0314A,,,,,,1,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6762016345540045,1671356762,bafkreif2kmeknvzbfgm5kvmi7nhrqzjiwokol5iobm24etb4xecbtt2tte +0xC09C4E76f01260F16428a34A03C431b051002424,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5328488663828079,1671359661,bafkreig5rkugm7dl2jljur6t4z355x2s4chfeajv2q6t4kh5x7qustg7ea +0xe68E4a5EaaA13F21c7665DCB472686366d55eda5,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3.006,1671360736,bafkreig5wezcml26klti6bv2qtu2wll7tglwjfxbbmtzemfrsbgjed7nra +0x372570802335134b5654b41Fa5eEF84548DB4d79,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.32647652277045347,1671360796,bafkreidag7wj7utts5zdeh7cdhutdtl2fl3rmrm2dorxvc6ge44f2ottem +0xd8aAa186db7214926cdD4C8aB5Ef1d919913402F,,,,,,,,,,,1,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,2.291284832370243,1671361533,bafkreif3vmsddxa5eipapvrepxpz2zmpbt2kfzp74zkqpt3mbw6wkuc7aq +0x6B62240234AFd9bd4E5EFcCb44F96254DA30a324,,,,,,,,,,1,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,2.2083475220540887,1671361758,bafkreie7kkt6mckqbtkwt5o5a72ox4luxfsgerbug4vjxar6dc6uyz4z6m +0x3c36e10c0048c298b87Eb26601A374aeb86b1b93,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.37,1671362286,bafkreih4f5ni2r34wu32dt25gq3tq5m22cz46ptydairvkh3m2cvhuqwza +0xf85d965e9Fd4607B000110253214f49231f0031a,1,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.08905522419268616,1671362912,bafkreibdmvdkglmm2tr6ouolznz4pwopnhvhtaxuazrzpoyupm6eboaera +0xB395BCBeE0F4eCfC8f2EdA592c7E945760F666d6,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,2,,,,,,378.8609298328888,1671363020,bafkreibj6pfgmrwruseupxb4o7wpnyros4k35j34evbgqt5w2vexl77kom +0x37D2445Fdf9B83B58392dADc9cC29100C263B505,2,,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,0.0822823488633826,1671363258,bafkreiakhid3xgbid36aci5np6g3emphbesuqdc64r6fy3hnwlnfungjt4 +0xc153c97eC33a7ef4eE5c15aEdAc38225E1954ce1,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.2,1671363376,bafkreig6pgfa4v5hnszsks3tswz22rqbkmzazu47inhwhfgssrocok4xea +0x545425F9686B56078Da3bFac5f9f25bB287b1291,1,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,0.003389747324169346,1671363516,bafkreichw7epbuefz723is5w6krgvncqgiu4smgdwup4bakpjdlkgbyxge +0x5d18014F44bb78b5D2F5aac5a0A547F53c2Ac592,,1,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03276771832066755,1671363984,bafkreia7phvvlomho5rhfyudygsv2ivgp5shhhsbozpbtkdcy6pyljvdnq +0x0b27Da84572d4eB58D82C496457fc692a419C92F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1000,,,,,31.614931710465985,1671364481,bafkreiewqrisikiym42v6ybclecq2ycuqo4yzuq4mdbpm3imdy4zncgsbq +0x276266acADA1798BCfac5822936768383d2ed782,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6078.877701893966,1671364565,bafkreihbdjjpnvfn7p7smdbjlir3mjkxmzl7byblegb4xcrnfad7gz44fu +0x7277e1fDe9CEAf97BC5960F0Aee96038F39A70d8,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.07145890165885926,1671365643,bafkreia437qln73l4dzaedf5pp6o6xsnzlqfu77sxxaoer43eaoo7rcxpm +0xe4f100b9D50a2fCD41bd475b8a33198779fe5DD7,,,,,,,,,,,,,1,1,1,1,,,1,,,,,,,,,,,,,,,,,,,1,,,0.1190173457645154,1671365872,bafkreiaeeo2ezbpak4y2vv4evkesou7ww275l2f5vonyoysi5fypg76ps4 +0x6B73A9E6c06946d543Ae131071da0C2942CB584A,1,1,1,,,,,,,,,,,1,,,,1,,,,,,,,1,,,,,,,,1,,,,,,,0.5031163110337015,1671366154,bafkreievbnavdfudpw4egtbid3hx3szuxlerp7j6u45oolrqzpsjernhra +0x762ab7C7c71772a195baEC1e964c0584C3aDeBF4,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,119.12022724624251,1671366335,bafkreiexhtiyzecosp32dodk3o5zm2qvcf6xnizvpkjg45v2pmiifqm7ga +0x8105FA2e9E9e8F8964C0ed9193614D352b24385F,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.016207386639491006,1671366511,bafkreihq5ejwmcw45lzhsr4647wcq6ogeqkqarnxofqlrxp2ypvda5tuw4 +0x8d3ec18dc2c96daFCD0924afE7273892Bf4c1652,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0625830289936688,1671366955,bafkreigyhwen6vygu2lltce2kolcp7npwhuw5txm5ljp5enfuj74zj67uy +0xC795E5209DBE5B8e4a4D0438c0Dd3793684F336c,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671367443,bafkreifybu75a4vp5admndo5inyooavufjnxg22cpde5stdvn26d7s6hou +0x72656CdF1c5Bc08F7D95919e1b31Ca8a88de62c6,,,,,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,0.40105038674946214,1671367763,bafkreigl2chiyc6ljncfjsuk7whdvwnqxx5rkrncwghg3jdovqm74uagiq +0xbf2539F8CDB7F3eEeD57aB6C4195dc190c199678,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.001,1671367809,bafkreiei63vhnucw3xghglhvdvazki64l5rapnotx3jaqb4o4tupvrfbly +0x1B081542303d27A705Fcff9512b45c58dd7dC4a9,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4015660951541833,1671367972,bafkreiaiccatxe4m5zwlhs4nkbkkeewadfhdjuo6tta4g343ihrtdjpw6u +0x22BC858e301C864e898cF06D2f383e70d26CDf5e,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02773749053288088,1671368304,bafkreiebwz4hollk5ag3pk43mas2ozbo7zxqmdohnyqhqm4asoxtkp6fte +0x83D2E472495f408BD0Bc85702F4bE5EF1acAee80,4,1,2,2,1,3,4,1,1,1,3,12,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,0.23143450422910172,1671369199,bafkreigms3pbsshbsftciibw22rv7o43boxuq6ccaloqtlzeosnlmeqtwq +0x56979F6a5Ec520294E8163Ac0804D43973f4a503,1,1,1,1,1,1,,,,1,1,,,,1,1,,,,1,1,,,,,,,,,,,,,,,,,,,,0.008279583538895074,1671369706,bafkreibpammumz5frt4xozvy2q6jumlrur75fhg7vbox4c6i5qeyhjosku +0xb555Eee31FC3704c22e8f69B097930E7fF68f3ee,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03601508781494342,1671370593,bafkreicut7khhs7q4kskmkpp4w56swrasyv7eycthg36mhx2rtmrwfa73y +0x4879032313fa7648bf821f9880ba2C645D0f356b,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671370649,bafkreihtsazsg4tyee26ykajkwjrkqydbalwue2fe4e62bkybj3aikqooq +0x98fF5E8be4104d0aBbCC54f42a474054F87723bE,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.025678622188871292,1671371098,bafkreihfec3m7kjkrm2foebjksg5n7j6npbn7nxmc4wh3i4vv5t5g3uwqi +0x134AdE3f5E771f408BF7aB0a7AEff45364445BcD,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.038295215179206,1671371214,bafkreid6qs2m2zfr7ary7xshglikgfz6koag4ntaalqwtkh56zygt3b7ui +0x6dF7d76e8Ba33A3e11fF0b48C1c792F9Ac9a7314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,0.20551530545813534,1671371304,bafkreidpzpqehtqnjzjlz4psdfb6axruqhlwcda536lyno2jw3zvdomq3u +0x6665a5A00ef3388328cB0713c008099e3E7B7092,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,5796,1671371608,bafkreifwgqrb6e6cjmcjx2z5c7odbjdshr7j3sa66s56izzaeviqxdnz5m +0xD80d57e2d1cBF09b14626EC3974f12c1952917C8,90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.17132635366649998,1671372023,bafkreibp67ly6we2idqhjqtfrgqj6rhkjc4its3g535sphjevikexfudzq +0x936DF0FB2134e04948C2A07482486e1362C38c9d,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,0.12056574134921297,1671372556,bafkreic5x455c4cr5dr5whfa6rwpcdkh42cgm3upssacl2poc7nmplbige +0xC2cA4eE4C8C79796e8beea362F657F5004a9d1Ca,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0641234606236436,1671372594,bafkreidys2lkdezhqmksxjczdxltg4kfqwnw375gph4i6eev52ormodx3q +0xd182768D1a7B9a09515464e017dBCDaA2993e059,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.038108802942678,1671372664,bafkreid2cnmkfxu46dzth5yxoz3zolkkentxknns3myxstx4j562mqxe5a +0xcC90c10D54368321E4f022D13334490c52FB6121,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.31161095,1671372749,bafkreia2icvjzhbvjkkrkibmduxuyzzszldfnkhavo4sewetiqxf3j5rqm +0x040BAa573b9DaB3143425D7E0D11916961d385BF,10,5,5,6,4,7,7,6,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03258185883633462,1671373591,bafkreih7wijnlgn3ohywcuv7l6e4xrn2d7wnri5ncdxcreo4yy5r7n5fze +0x00B7C84DbBD871A8eb209138174D1ef378F015a0,13,13,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.04579555404873756,1671373728,bafkreicfv4nq34nr4pcffadoyb6likuwuerbweeviwpoaj4olni2lzhofi +0xf4dC26387af654ed24199Dd26920EbDB9a5f4a74,,,,,2,,,,,,,,,,,,,,,,9,,,,,,,,,8,,,,,,,7,,,,3.145453273922682,1671373805,bafkreib5qtjsjazw7cll55flyqly7g4lg4bvc5okkz3ca52qamsemhsore +0xCCfd1FF80D176f1b98f7E40ed71A5B13d70dAF69,,,,,,,,,,,9,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.798353694029279,1671374447,bafkreiebjhriof6otlwcjj5vr5k473rqtowr6dvhs2ihpj3tipyxngmny4 +0x1cad9db2453Be4B0dB2CF5DF085F9f70d7e79ac1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,437.8216173,1671374506,bafkreide5mad6hwa6247uggjwxcwtvusnd64ldl2xbpaoobcynzqn4t4fa +0xE9f89D3ddeD8c92eF9402E1A2608590d1c041239,1,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.09237818734719583,1671374974,bafkreifkxluybmocw7tyxv5jt3ehdkxhloobfmxigntbvdqrwi5fglsa2u +0xA425fE8b53B1386ED496DD3EE143F2d8c3A624D3,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.001,1671375066,bafkreicgpwnk5p2bloqqj5ap36bnblldf7eizo4s6v5ey6uwuwfce7haci +0x01F9Ecead3A16C29b2F277e1cE018Cf3985b2597,,,,1000,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,4793.0648899975795,1671375281,bafkreigypjoo4t6sos2lnzhkhuevlhwsmjqtneher5glbe5mojhl5j25f4 +0xD83FcD0Ce05895Acae34519bEc5DaE8686608E0A,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1203.8,1671375560,bafkreiay2y7auo4eymydyovpbgzu3sm76n7cradnq44gygbpslt5xqomrm +0x0ed7A2469834Fe7e26a5A2Db5ecaB4E23cbd585F,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0046943836855114,1671375658,bafkreicwykxeucoek3znweh3n4algucseeatovzl547byntr376p44wgky +0x38B0dC2D8aF9f32F72372bA6955e16Dc0aa369e1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.5605846032049848,1671375842,bafkreiccc3pibzoezzvjko3dtjrqx4vrh3zfan4hhbjgv4cpr23r6g4v7y +0x9882954D15f500Ea7A63A33479CBE0132B584Eb0,,,,,,,,,,,25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671378153,bafkreibx5772hsfl2kqjakawn5qsmtskgvkhphs4t4cvstvcnyspvygiye +0xb7eba91e21325d16eAe515948990fbE69e8Cd181,1,,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.012740251684438018,1671378568,bafkreieumxgdpuox6nqvhvhhlbbonh6bcrbjzmi6jptjqcl4r7qng2txqa +0x4B298E988079ab2fba509810fD712d82305A1E4f,5,7,3,1,1,1,1,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,0.04067092408181453,1671379388,bafkreiaxu7kaawoym6rg6fnjb7imtrkymgjb4red6duci64atgaksikuvq +0xD4e51C07357114E6d6058cc752115967EF18F99b,50,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,40,,,,,,0.09416017610561472,1671379465,bafkreiegix7x4lw3eutt3kw2tx3rof2jjbq4nyiws2y6rairivfqxkas4e +0xeE4bFD7fe07DBc45F2270191391bd564e0D32C5A,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,0.18329759940824875,1671384131,bafkreifrd5zvarlhyy35yl35h4ae4vk27opgh32ch4flxk4ryjzgnfdv5a +0x7196e387E6dAFf279C964559d3D64c0faF523B20,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,3931.844832867965,1671386445,bafkreibpn46ensqvkr7nmez6ld27braw2qynq73ycnudiq6rfua33nxp3q +0xF771e31a7Fabcce2Aa9148591bEc94bc84c5F491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1839.2887869005876,1671386858,bafkreiavxlvmo7k2stthnag3wktbcd6tttozywy6agcuevtiojgwjhr4wu +0x48c9bBDEF31D7D50ED0f4bAD4e8925C08791a7dB,1,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.14688097570952588,1671388573,bafkreidxc6lgcbjinouhizscd4yesctagkpcyr72dux4p6nugmr4r343qi +0x4c710B38199f589DD769D36eD52b6d0170cb83EE,2,1,1,1,1,,1,1,,,,,2,,,2,,,,1,,,,,,1,,,,,,,,,,,1,,,,0.2485787272224984,1671390674,bafkreifekigdkwodlkkvcwzaxffxl3q3hdgggxs65slxn4brc4if5jmksy +0xCf35cFaCF4F2CE74556064d51D5405E58be327f4,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03575817433486994,1671392171,bafkreiag6v5ghpguzu5qaumjrzvefuxi77igsobqflobmwz5uz4e4nszzu +0xADf44724617D891B933faB904cf6E939a167Aa1F,,,,,,,,,1,1,8,,,,1,1,,1,,,1,,,,,,,,,,,,,,,,,,,,0.10568447094091535,1671392249,bafkreifvheklfqhpls3caaak72hm4cpxdwd75ppnv6zlkmeud2o3k5ayxi +0x6EA012A3249ccc35D020Dd4124b739956966699e,,,,,,,,,,,4,,,,,,,,,,,,1,,,,,,,,,,,,2,,,,,,0.5322961520176586,1671392636,bafkreihuzlsarbje6vgn57am5bfgihhpfuk64vpemnc7nriix3dvwmqaqe +0xBD227C7B8D581b9D3639B7e6E301CdF99c374dd6,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.07942286,1671393325,bafkreiaqm66222kgi5dgc4uv5ep2cqbkmh4xobdw6jfr7sfmev23r7y4mi +0x723D3ec41b5BBdd52089CE7F5E063936647f6403,4,,1,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.28775049597345437,1671394101,bafkreibqqeetyf6peftj7mjfhfpo2khyoioyw7byzmcz2czvyas5ksvh5m +0x411d209E4874E00Dd550de43190224515b28fAFe,,1,1,,1,,1,,,,1,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.05123319959560518,1671395072,bafkreifrjsepq7ykkcodnwhl5dkuaew3fosowsgcyrxku5hbk656w5xqpe +0x49d43f74988c31E2Df1E751e5F0Ee160EcdBC5cF,1,1,,,1,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.129501992352094,1671396109,bafkreiefifiqvt3hvr7akcrqxvtust2jb2bcsux4bjkxuzhm5r76wnfnsm +0x107147bBf9b61b235d88aE320ac21C113150db81,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.011676493636606888,1671396470,bafkreigzcuqijuylletoaritban6zzqd5bbmm2usgt37zrfri6ul6bwclu +0x53909bcC8eEE8E648d7B3ee6Bf412612AC042245,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1083824415214349,1671397893,bafkreifhj7xutupgsf3w5t7dce6ztjwrmitxwxm3chi4orhayiqskkmp4a +0xfbF0736EB2ac1C4bB0193AE54c53e182B18037Fc,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7511190155169448,1671398408,bafkreibe253g4t5mvfzvnv44x6oipc74akuentu32elnq3b6l4icza7dqq +0x139f2916CF105A494EfA59645BdC0598A5D4C256,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.25,1671400311,bafkreie5vj3ba2mp7nu3dmtuejbfryhllklsf3tndwfsummzd7kix75qza +0x2669628C787e13b55aAB9B27dc4559bFBfB9CCc3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,100.39,1671404946,bafkreibom2nsjeanrx3hmzt3iry74doez7pw5kjklwkrkdcslfqxmakkk4 +0xeB70F86CDcC047CF052554dB6962DdcD4d057f9e,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.1053218835941294,1671408270,bafkreie47yffwbzohkteqtq3bxdpcbghval64p7f26c6zvvmbprmt3zfzy +0x428364c1919Fd29B620F7f1DAE3cAd18376c74fA,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,392.60021011,1671409886,bafkreifp7kzeaiogtwcrz3vbvbrx225glgubvc5afjohx5jqauysxf6fim +0xc2EA22ec0C12761B26d05888397Ca5dC23be64e0,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.36766384,1671410016,bafkreigw4vt4f63gve766l64nop5yzlr3y2pmppkxcennnvtb5axe6kdei +0x6FDF6238101B986D9231866B3C9BCcC69D6655Cd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,114.71222423864467,1671411792,bafkreiewmaf5s54lamhmqi2uofvov4qny25pzaneafxiaga7bqps27fj2y +0xfA72004942aC072962A8f93596D587A4200A0f88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,769.7712866384564,1671412114,bafkreicsrrjapy2enzf2lbedl6iaec32hauh2v4y2ktulu62gozcj5qfeu +0xEAEB9eA163A3BF40Ec1aeC77862B65d3d448af06,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1600.0795338493722,1671412433,bafkreicmk7iept3leobkeocb4lqpi36bpjonujhym6sk47mdneo3sbfhta +0xAC993Ad2eE5a5dfD8bC0cd360a98b950FF26Cd2F,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,34.90358867048719,1671413760,bafkreibuxtcnmmtyb5l2vjxr5pybwey3ou7r72qsipzloncgz3xvn6q2xy +0xd12f7211071a20Ce76Bf9Fb8e069036B6fb63C6A,1,1,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,30.61347049934633,1671416043,bafkreib4qsab35raufcp3wbemb6gfa4pl3yj4e4s4dflwmhxnvahs233oi +0x9c035924d172A5Ba3ef6E544af9DDA28A47508c4,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.8406571713627665,1671416308,bafkreibewwp5v6eptbhqhk25fse4c5m3ghe7v4sxmp3xyksfs7ll7ipsgi +0x337CfB6E0466977c6419D5DcA8FA8B82904787b1,,1,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.25,1671416557,bafkreie5l4y4kcqhtbkghk5mejp25hpay3ax3w7mazjpbkksczc2odhxfa +0x9179107E3d45D841179729F02dba57C3342D7fdF,1,1,1,,,1,,,1,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,0.4064531973241,1671416631,bafkreiapq3okowyvbhkfjbuzj2wcjqlsndvsrzkpmwvgls6zt7rj5nqzuq +0xDB724442AA1AA972B6F23B63491cC6B601608C9D,,,,1,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,16270.984638030899,1671417212,bafkreiemsv6zfypvl6rm3nce6zilg7qpg4j7z2n4f5pdzojfr4qd2yheau +0x99BDce51a4CCffc80d2e7082fbdDC18Ede6a7d75,,,,,,,,,,,,,,,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,1671417364,bafkreiflnk6lvon743ychm7d5fannqxlgtsdfloj2ettbnw5cgq3hb52fa +0x1FD8271f95b32EcFFAdE04a2C93C7009b6Fe7d5F,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671417851,bafkreidvcohlq2qlp5pvaujuhwfqrfhunn67b3eeoy7hoo47wu5lqtcjnm +0x669C5c5672443879C7c5650Addc6231076b03beD,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671418619,bafkreidd5sulsflozgtktnucstidm3t3v6lo6xo72g7zqvmxy3eah2mkmy +0x9Adbe89c461993aA71F18174c922605cd1fabf1a,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.00002,1671418658,bafkreig6pths4n3x7oapcr5fzg4nwkw67ud4kz2pq7qh4bh6wiva5iwxw4 +0xCc6f414b71c58218c1aDc3965ba7B48FDf607000,,,,,,,,,,,1000,,,,,100,100,,,,,,800,,,,,,,100,,,,,,,,,100,,2011.6337966026913,1671421297,bafkreif26fp7aldu7eh3xx7hcpg3xqsnqlirqidlurrdhnaezsk6zxkfcy +0x29737f1186Fbe889D4906841c30A5048dAb7E638,,,,,,,,,,,1000,,,,,100,100,,,,,,800,,,,,,,100,,,,,,,,,100,,3474,1671421404,bafkreicuynkdp3gweybxangshufannnre2pf446ykwe4olsux3abzl3pha +0x8D4Fcf8170A20ccC91fAB546Ee57Bd01c930E608,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671422930,bafkreib4oybtjoa7b5rozyltov4uf2u4525hccz6z5mdlrzwqrpmhjcyme +0x325817691bCDd8449FB0f88a4fbFa27bcCb8f5dd,,1,1,1,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10532965628377434,1671423408,bafkreig56ytr32f72vgblk5d3hihxhfjl5jf2sgttrzrdujcazk72powvu +0xBf6554783Aed99b39A27e60FC456A983DbEAaC8B,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671424332,bafkreiet22zmexhcw7h6jizabq77j2blna5xxu77lffvmga46akkigmlfq +0xD8cf3e31820ceEC940C69f462FC047d306BcB984,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.18,1671424335,bafkreigwde27ltxtvd4u3vbdcojxery4dgjn64o67bl7obsj23o47szzne +0xaD928e545cf5598802B3c601E04B0CFE6bf6351C,60,40,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671424829,bafkreibewichkgc5x462qo5tgvsxuv3rfnn6u222ov6q54nsxz3udsxlnu +0xD0ac50d9F7516be16e2449539394A3967BEa03C7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2.491677489561012,1671425283,bafkreiflicpos3gnkip7edxqcpvrl7ycgo3dnhv7v5agfwqikmm27v5aha +0x529408a6962Bae6Ca5328874d633738116B89B05,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.016804102509884,1671427472,bafkreiatlybzzlmfduhh2wu2wv7zhrhmjsdmjczjsynrpuky3go5bjxnze +0x80771c740F659760C9423F82110c03087c21Cbe8,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,13859.774357574643,1671429537,bafkreiez3jehqbovbc3j2ci4wagmwhwmlypvbtohi5kxyb3b34dgc5qjkq +0x323461bB7171C3E1759AD35247EAa3b3AEFabD75,1,,,,,,,,,,,,,,,,,,,,,,146,,,,,,,,,,,,,,,,,,4000,1671431980,bafkreiaq3pdijlgrkyuxddlawskg6bfgfi6izc4ltpiqncj65ux67yq7yq +0x14Adaecf15F069c71A846e30e62dCbF6d362B9d6,,,,,,,,,,,,,2042,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.25,1671432976,bafkreigtbbdq2lxg7eq33z4qeqexaa5wfkr3l7tsdim5bsplxjzdkl4fa4 +0xc75b143301cF47A3Ad096ED904f5E3f0831a57Fb,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,74653.07800763927,1671434451,bafkreicmjoqbcp7ujmtqpq4dw2ytegwxrojal6smmhbheh5cemrxxfh2su +0xF7838C101DD142AbFF1B612bd4DA21b21e43721f,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,15604.942155380913,1671434638,bafkreic7un4e5eopqkszuce35plzgjc345za2nu7dxfayh7hzr4o74tqpu +0xFca4Dd58878DcaEA060EACe9fF6397353797F8BE,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0643740792632834,1671435927,bafkreicndtiu4wxeheeclqkmp2zg4tuje7o5gik5tisrvgp5go2om6g6zy +0xC720aAd5b91dc6661d3EA32dDEA7E11003A0C12f,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.424,1671436161,bafkreiei7s2z4yv2pygcmb7kjffddqyqgn7qjmooc7tr2kbndfkyruyule +0x8168363c12488275050F75F4deCd92b773F637F9,2,1,1,1,,,1,,,,,,,,,,1,,,,,1,1,,,,,,,,,,,,,,,,,,0.99,1671437707,bafkreia5jkb3bx7lrgccqs4f7mmxubsafs43ht4vffertqqbsivomrf3te +0xAf11b3B0Ea9C697e92ABDa3D89D5c942fd4E335f,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6790576988985595,1671437794,bafkreifq3nwpgq6obnh7p5bexwq4hmflgwvvwkqglzzdomxwqkzi5cc2xi +0xF84DabE76B1a95413C322Eff45e9768F732D1975,1,,1,,,,1,1,,,,,,,,,,1,,,,,1,1,,1,,,,,,,,,,,,,,,1,1671438001,bafkreid3bddmfcz4gfuaoa4pud3ktztphuix4t2lstbli34y4o5acjwyry +0xe0fda19799b5100192f2bA402CB9150aDfc42501,,1,1,1,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.005423730038069619,1671438022,bafkreiguu3bdwsxhrrfhfwaq4dskn6wmvqehwyd2umyrz4yfmxf6uhsrna +0x038C413AFb8B817634336895890C6a785085145A,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,0.1,1671438456,bafkreigkefyqooc2hpmy3zfd6wpvaokls65l6aggipkzhc36uaendaaqku +0x77C9e49073d9830723195f3788570c2c36c97688,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2902631320735517,1671438492,bafkreidxb47dlzo5hf4p4pqjkoxn5xdt4wd63amdpyqkllzlbpt6oh2ma4 +0x5E464B4766FB32Ac5f4bF74249D2681d6E00FBAd,1,,,,,1,,,1,,,,,,,,1,,,1,,1,,1,1,,,,,,,1,,1,1,1,,,,1,0.3104121749518531,1671438524,bafkreih4x6563ihex5yewtqzsmplpevndi4pky2f2pd6pleprx2tdstnmi +0x281A0eC0A602eB9C9B92a6711941f9D8E93fBB0f,,,,,,,,,,,1,,,,,1,,,,,,1,,,,,,,,,,,,,1,,,,,,1,1671439921,bafkreidwkgzeygh6ovkidwnshdtit4izzziovcormar55pvctbyvv5je6a +0xfB953D5c69bB04461b74e13655072eaE8fB384Da,1,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15.2203458665033,1671441022,bafkreig2gh4cl3ir43jcksofvdt3xv6pwc7juhwqj77rfwxr7e3gqmseru +0xA0794Ed544000f21265abd994d289180D1888888,1,4,2,,,,,,,,,,,,,,,2,,,,,,,,,5,,,,,,,,,,,,,,0.21685909313853075,1671441027,bafkreibdrqmffmrnzlbtbp4pn5kq6rlxvlmsztabil2ulnsgcwlwgx2wle +0x95e9ffc26Cb33FA701A56862cd6E2b4c96Cb444e,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2.04,1671442053,bafkreidksuvpqu3n2tzgv3ar2rnci4r5kvbgoakhbxlv3zayitrp4ghvta +0xc1606079b6867E25aCf6d4252578446e16f49FB1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,0.03121,1671443435,bafkreidahfjyzmuygko2p4fmdw24x73naxtj33wmbxnjfvebigzprsbhhq +0x84828783701e4FDD3d09E66fE546e0555E420CBD,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,0.21,1671444026,bafkreics7u5e45l7p3rs7emdac4qfmjkuzxfc5fet4kbwjjf5mqn6nocga +0x75AB80d94F9F7C0FE4E7973C8fF505882bE80f97,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0306227542838693,1671444037,bafkreigd5v7isi5thcslvxd7etp4q52iuq24bmjzmsa5n5uplhde2mlynm +0x4B51e46A88d5Ec2902E1125820855CEaB51e9057,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.16186836990032671,1671444166,bafkreicknfdkvuxrh6mv4il3lrz56inbavkxmjaprqmycoqtd57k2s3kxm +0xad7a281B422734200d6D24f630abA41ae328F802,,4,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,3,,,,,,,0.1855,1671444207,bafkreih26qlsmkn6lmvelcyyp2szckd6xhy3ltoxosqrqxxyihsovhvqby +0xF74709B52c0E108eCFE56fA364175A779d3C059A,,1,1,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.106755951825728,1671444886,bafkreibih3b7eupocsy5hei7wmazkx5dbc7cprlpgmc7hur2iypq7lbswi +0x5A6bCB75b849c00FD1C3Eff254dAc2f4560f1A9d,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.054480917120417985,1671445018,bafkreiffrvsxqpubzzolwyxlfico3uhacpkhjeupa77s52wggpf66zpfsi +0x45EcA36B38C029f31262076297cf9374BDcfE7F1,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.023,1671445467,bafkreidqjt6gj4w5jca7m5wksirz7trw3btsnewlrv2naeayapnnic7cvq +0x16AF4e518bcf252F781B15527aF2b48bfB5Cbbc8,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.023,1671445606,bafkreihsdqdq2zrsp6iynvnvt3wkgloljrri7qvqqlmuwbmi7prb7dxr5i +0x72B76C9791216f6DDF955d330aA28C4c78694550,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0121158,1671446242,bafkreien2betf6ydzodv2xdcg3cs5bu5woofuf3xxvmdb6chi5wzpbmb4a +0xDF617Fc072215c638137B3038628b420064c06B2,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,10241.434641625228,1671447124,bafkreifnpt2viohjwwfgbfok6rnd4kxc3zxr4jhsxzozcfvgkovoydgnbe +0x4B886d3eea50f46624953935Adc0414008888888,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,2,2,1,1,1,1,1,1,1,1,5.269,1671447281,bafkreieeb2f5t3wejqvbbc6lacf3ecrhngho2r2f44paiumt756nengyya +0x16F5CCCFD730157F1f1758822Af04a970004896f,1,1,1,1,2,1,1,1,1,2,1,2,1,1,2,1,2,1,2,1,1,2,1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,14.01536069676373,1671447595,bafkreidxr2yjwpegeky5wwlfbb6fpy3cbesv4opbwyi6sniqwz2op43aze +0xE7DcC040dEbdA16f385E02C11FE3B7Be779Aa145,,,,,,,,,,,40,,30,,,,,,,,,,30,,,,,,,,,,,,,,,,,,50379.94715177048,1671448021,bafkreibvapihhyqnlgx3ovyh2bd66rmgis4izbs3sw3bnwcdvje6rvg5j4 +0x37Ea22D0f551AA66d54605592b672F385b713Dc4,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1671448189,bafkreifenokb2u5cpd6lj7buipyehc5lw7sklkmazfappg7tyu52sciag4 +0x0ADf8A5Bea1d55Be7aCBBD6eF4E0251bf740747D,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3686.6151294105352,1671448732,bafkreiht3zkch24cjnfl24bafobqrswpk6vnxnotitlztt7f5swsfa466q +0xc21611A12525D3aB940c339b8aE4C4BE5865B6a2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4791428431633782,1671448987,bafkreic7ctmhbuq3bqlrma3e7nhohuqlrylidku3iahya3s6cwc34ofwcu +0x68c4D9E03D7D902053C428Ca2D74b612Db7F583A,,,,,,,,,,,,,14,,,,,,,,,,,,,,,,,,,,,,14,,,,,,85201.52941176,1671449902,bafkreicv76nejvwzkvvfufqac4qjbimc35smylaofjjwvm6stcncehqk5q +0x88e92986ff8523F2cCe7aA89ccBAcE997A8c8Ecb,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2082.4800514132035,1671450334,bafkreicqyxwn7s5m6ea4tra6mohked2m6frqybr7kc4s3g3d6mvmmsoone +0x3b7d646966a4f9c2814Bd0b414818aB0cbd1242B,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1586.3278170416852,1671450683,bafkreigfakfk4bxkqxfh6khg72qkrufv7uiin5juxrs4uql7wl3sbai65q +0x631ab8EB40588543dF900263F864b6376d56A587,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2756809216756617,1671451872,bafkreidrbsvxalomlysysgjtvqiuyanpwdomur6yadxpd2j6wtfokboy5a +0x2A92195A610f21f8DA1801Ff9756Aaa11319Ef68,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4559501442623976,1671453493,bafkreidobl7lyi4dubs2zhmn7qw3pc6vkpexaoujbzdkmlut3btiyy3gou +0xDC24c2Aa06eA26ac3bc4a226c4aE3182d4e11813,1,1,1,,1,,,,,,,,2,3,1,1,,,,,,,,,,2,,,,,,,,,,,,,,,1.2334,1671453615,bafkreifgbdd2ammnh3mma4fpidzkv7k75tsqyin5iq5uw2x5ifgnt5gauq +0x739f3a1012EB0AdBDDCCA7606Fcbd607871d63Db,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,1,0.17063669778475943,1671453693,bafkreifd7zevfcyembn7vd23lwbiwsxvcbpkpnwpf34uyxdhlsnhotvaya +0x73428EC1C479C0f7c8113Ec3D2829139C5273607,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,0.4854262429745949,1671453860,bafkreidolyqf4v7pt3dszifyxe74ppmrfiuzdc3xf4ywabp6sx5ruupbfy +0xbb96d92C7F873259A1E25E0103B1b54562178eeA,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.64398858,1671454264,bafkreidtgn43dfqsvs5wslwdr7uwgnvotbqpv73g2hecfkvczi3fuprki4 +0x21126ac61093260d2f2Ff826395885DCDE37ffA2,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671454299,bafkreidmsofywsnbev7lu5vqxnqsnw2gbrxstd6yzcvooackie5pjzdjfm +0xA87A47428d2d57a1557078B3336035D0F82f82D3,1,,,,1,,,1,,,1,,,,1,,,,,,,,,,1,,,,,,,,1,,,,,,,,0.20157071721713796,1671454469,bafkreic37vglj633v23xh4a636ps3k2ynnlts67axr6dlkh3suinytqwy4 +0x3591E03172dD55A6e0E701354Cf9ABb6C25D4EdA,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5646434475762996,1671454572,bafkreianbwe4esjifyubup5eog53w3lu46gja5osepx6apgxzuekfoxk4a +0x68f66Fac4B02419496a7C1D5Ad5F093Ae67e6E50,,,,,,,,,,,98,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4,1671455166,bafkreicfpsdue5rxzr4nf7msfmxgcnkrsm362pdjr2vhhpthdbuy6kzvnq +0x9bF3613B9C1f44f30209723058AE2e58ec5be4e0,2,3,,,,3,,1,3,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.24361257463169067,1671456440,bafkreigv4kzc7kei6vb34v3rtq56tyexjbmt2wvadgkjdurbhe44kr5svu +0x9A94d74f8883d25b86702D15c5119aF9fFA1AD60,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.08298932470356568,1671457723,bafkreids4h6fqsgiqivqlhtdvxru5zm2e7ucqqoerb6frchkwz3glygkwm +0x180fB0E6ab6E35Ed77aE4E9E8C7fBcc38AFa35aC,1,3,3,,,,,,3,2,1,2,,,,,,,2,,,,,,,,,,,,,,,,,,2,,,,1.3099887,1671460973,bafkreif7fdsnm3zir4mnmgl7wtkhapngtz6ugyslczol2ehvojn5eyaqye +0x387277be9d1b80D7A03832a0F4FCC4C0c3716eeB,2,1,1,1,1,,,,,,,,4,1,1,1,,,,,,,,,1,1,,1,,,,,,,,,,2,2,1,2,1671461297,bafkreifazs5bxkt4tuieh3efezhnbfrkom4k5vg3seuprcxy6esfdtlru4 +0xBE171D4A35725C19c7e57ca9801C9B414C0E25D1,2,1,1,1,1,1,1,1,1,,4,,,1,,1,,,,,,,,1,,1,,,,,,,1,,,,,,,,0.25539212223042795,1671461419,bafkreiabsfkkk5cxph5d3ubmej44tazrkpwmqv75xju7irbpftqhljxiea +0xD90350f6E2d085aac01f422f59575E8Ab93CA399,1,2,2,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2,1671461463,bafkreigqwggm7vpmm7crhgv4wzjpqijdtxgnxsxkolwjgu24icfbrta2qq +0x64c6AC491527A44BC45858F2811158936FB8044d,2,3,3,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,2,1,1,1,1.167788,1671462010,bafkreie7uxc6x6czbdoe6vdpwjdachwxdvgjsizytgl2eqpqsiuwcebwgy +0x7F85Cf44E446a4B1AaCe2A28774E88cd6d4e3441,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3324280113362281,1671463726,bafkreibpzdohaypbruakqzev6nbmz75br74vkt6kqxy3rd4xew2sdycvi4 +0x68761dE35422d8e36d18dC2F7f6313a58c1a3616,,,,20,,,,,,,,,35,,,35,,,,,,,10,,,,,,,,,,,,,,,,,,90364.44913544039,1671464305,bafkreicb7bjvjgo5w7zwzypbenu26pvfvbn4awt2cy4oi3lwaxhrp2ee6e +0xbC1934f548417f79ab10138B57716Fbc7C25c177,,,,,,,,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,21900,1671464857,bafkreihy5jrdjzrz2kmxd65brabjt4vey5ivsx3x4qnmd6eblnfr5moqwm +0x34A64a630F9bB4c8eCaA6AF99df079B34195E791,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671465047,bafkreicvy6limty2zptwgkvgww27u26gsq7a3yimrrj27rmaji5tan3ev4 +0xA6fEc7740EcF58F141Fe158E3795925F2B3Aa7bB,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.014248970195778587,1671465608,bafkreihxs2uzzzhc7zu344bxttppjimqwlqunknxyfcjn2af5rewfiaxhq +0x03b40776AF5a364fFBAEA3d2E293df4CceaB4F98,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.025870250071309497,1671465916,bafkreidufme7mmawcbhwbkxkaiugwbnk53qqj57xcj2nb6z36gwxtovz4y +0x8B9A3787dfA6d221990967C7AEe4c6F7237649A4,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,20,1671466882,bafkreiet5tdj3uotsgrqva6ny7lvnumwrzg2u7hsg4rlt3anjsjenr2l2y +0x4b7A3aBA7e499d9D8c799D15064710A2Abb47F3e,,,,,,,,,,,10,,5,,,,,,,,,,5,,,,,,,,,,,,,,,,,,4943.521883632025,1671467211,bafkreiaw3tgadwdrdkegie4skpbuxtazeir4rp4qdmdn3cwzoer72a7v6a +0x1430Cc22bCcFecE3d894E298A3845D3AC8E871F9,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898,1671467691,bafkreicocn3mlm7d2pyndffc4g5js3qnmh5dp3l3yns3abcmjnqdpoetzi +0x86870b7d7b2680864c145b5F4FAB9fB57Ae71B4A,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.13,1671468094,bafkreid7binnn2e2uxr6z6gh4y2x4d2lp6u4se5o62wujyryv4l5jpz3ou +0x6665ff08Df4E8dB4090A4a3137665a63aaA0dd13,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3757012482789799,1671468515,bafkreihojnocalsgkqfqjjxuiia2xkltuxecmu7tw7prtcmwzksexfpxsm +0xEDc93Bb561ed9E4F81237bB21774Fd4917947B89,,,,1,,,,,1,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,2898.1668167418925,1671469562,bafkreihvzdilintqzbv7nl4hbby4ccqhql5xw3y2yjnxm4trnctgy7d54i +0x647AbC6016Ab3D97994358c3B6813aB6F226e7f5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671472865,bafkreidbgxibd6to4dk7rzuuibxt4yurzlkdmamdfzby3akwkxacbtwaae +0x024813B4972428003C725EA756348Dcd79B826e6,,,,1,,1,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,0.2980470231770758,1671474077,bafkreicfwzpcefqzs7frgsjvhca4lqrmlzjlkzql3rxctjwjeidflvfsq4 +0xc578958DD1880cF00BFfbb7Feb9c28cbbbcaD3bF,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,105.9560427434483,1671475015,bafkreiggpquvjaqw4ivfiijgmquyow7gtlel3fjidj4eqkogxei7y6o4sq +0xC77dc85d870EC78BeE35a8629269DA19A36b1E60,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4516.5035807116865,1671475161,bafkreieq2tnghsiqopm4djv3dzaeaa4o3mz52bjopi5r7ticd5flhcl47i +0x828C5030558428af00AD1715DB9287344bFF6563,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56583.76291048456,1671476782,bafkreig4sul22wijn5ihnoxek7sqsepino5kt5lrspqz5c2lzeywdg7lci +0x54a25A05F1680928b2ae1469c6c2033794d6c45e,,,,1,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,23628.656667392614,1671477170,bafkreiagt3ykssf6cp7lbiilkva73tjznc73peew7pdvwl5u5wtj5la3f4 +0xc86B12d850FdBBF3260a7BAAE862F85857aAdBBa,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,2016,1671477678,bafkreifgwit2d77hxri3x6d6auodqgoru7nryl4vutpgudaeokyidfdcqy +0x683EbbA7A833A809071afb4819C0a2Dfd6e07333,,,,,,,,,,,,,100000,,,,,,,,,,,,,,,,,,,,,,,,,,,,10906.043740640374,1671479292,bafkreiceiappenn4bev6s3oz4ghhlyc3wuwektxj4v7fmqswfk5j5mu6eu +0x8E7C024EeAcF826e6F298A2df2Ed3fFa7c5a912f,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,610,1671480166,bafkreigynfepukv3kq2ahxfg4uzhaxeolnw7dmjehdm33f3cevowomdlxe +0xba8f08E7Eb69fC1C9D8434fDAc09AdcB4aDEca50,,,,,,,,,,,,,,,,1,,,,,,,2,,,,,,,,,,,,2,,,,,,20177.42051978082,1671481041,bafkreic3ib2lf3xjsjihjlgqep72acf6g4gt7vkdzccmkzg4pggog5qpiq +0xbADD62044A0641Ab189C86dDD9a096a364B93c60,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2045.2796509176799,1671481593,bafkreickkwkafgtkrzlxsic7f6xcxmbaezv2g3sdl2c675evyttmgitiw4 +0xc0738649740929eF714cc5C0229a1D5fa8138c29,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,51255.31321457812,1671482473,bafkreiafvgxywj6aidumkxojdikh5la7ddare22tg4fdzyi4vsiq4szeu4 +0xA0c7Dd61DAe5Edd2E1b9a33fBe4D9FF6e901eee8,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671482591,bafkreiannzgzv7nb4e27ixklnebu7nni4lbt74r7sqvhvdkdkc3th53dym +0x4a851F4031345b17A857E12A0f5dAa881731f74A,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671483596,bafkreifgkfp62nckrqjixlbd5hr5zr5oznuxqog5fanrgveqkengd5jbcu +0x34C1fF88C5eB05F3f7876A12CD06a4fa1814a656,,,,,,,,,,,108,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2922.124177687693,1671485543,bafkreietm3vbzfyyjsp34hlxosgjozsqfvjcizvatv7nvucmcrw53zpbya +0xC883A79E8e4594C4f89434EDb754a10Da2311139,,,,10,,,,,,,,,5,,,3,,,,,,,,,,,,,,,,,,7,,,,,,,137029.44264404205,1671485765,bafkreigrxekaf7qcmi7jfo6vy464gbohi333jt6f5hgtdplxq4di3sfg4u +0xfD7cFA732b3F676295689c5355D65c27eedB6dDB,,,,,,,,,,,,,,,,2919,,,,,,,,,,,,,,,,,,,,,,,,,2925.1903926004293,1671486063,bafkreigjxi5ivpa2o2gnaunffbnqwvosddsuxxp4ylnjpjo5jrb3ahb2w4 +0x2F64b9C5e4b24eef6C2003406302f0DD92AE9B56,,,,1,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3000.3169679241323,1671486211,bafkreidsnpggngmt7sodzudx7s6cvxldwhm4ppjxx657l3he5i4z2vgln4 +0x3c6E78A279ca78088a939d80968feFfcd517190A,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.69,1671486251,bafkreiesqvelzmo4aec56w42nshoeaiogerqjqetbunee4b767lfzp3kbe +0xE4D0296c0Ab22Ea98f8F19Ee0567F049efF56A81,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,224.33982767315507,1671486931,bafkreighdga5c2jymveqolpsiswfrmdwenzuhaacbh3aqzvyf7qlx7zpf4 +0xeFa5615b742945e1f6aedfe7EDfcF61ec5DCEeC5,,,,1,,,,1,,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,1,,,1.3993311779118451,1671487606,bafkreid5oprc7m7ysjljora55dstsv35ftearfn6o5xqw4ijd6z6fbww2q +0x8bbEca4D93Ce618407dfE431990e6C0C74a0f71f,,,,,,,1,,,,,,1,1,,,,,,,,1,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2.440339142372726,1671488024,bafkreigzmk6wo623zo4crmeh7wsvwuumfhbwz5ruarzrzl6yomehiwwa6q +0x921Ff98DfD6739AC24AD2581a7e6B8d21A939364,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,3,1671488642,bafkreidrj33frplxr32ug5xrrcewfo3bkwx3gtc7l3qraotkh5pbvuqb3y +0x4072d2C6E58c9A3d43D692c0dBa81eC0eeEEd15d,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,8856.005760504298,1671490112,bafkreidvoq3vgu4brgcterusy55vuvctlo5gcqalthqxb2gwbn2btihhc4 +0x3a8b9B6d9286A42d3956A54DC60ec81c6865ce82,,,1,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,,,,1,,1,,,2.5172776774664514,1671490177,bafkreidte673ewrtejaq6g4x2o3k3d3epdsuhexbs3fqtpi6xlj3ftcomy +0x23099Ec85B447cA18B62591813CB89D9c3a4455b,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,26080.074377654044,1671490842,bafkreiaemhkcqrry6u44mdp6vids6d7vkmjmu5mry3ikgytke7fwh63n6m +0xAf79ee26cE3f57a008ae739Bcf0996A2fB9C6626,,,,1,,,1,,,,1,,,,1,,,,,,,,1,,,,1,,,,,1,,,,1,,,1,,0.5154458151783653,1671490964,bafkreienjsee6ydk3cjt3wa7wdm7ax6nynsshglvmyhknntq4tbolcp4zi +0xDCDBC5eF852964945bA5D4772B26dAcFFcD9F59d,,,,,,1,,,1,,,1,,,,1,,,,,1,,,,,1,,,1,,,,1,,,,,1,,,1.4920769512242802,1671491599,bafkreihmrxkfn7m4suxpxsy3pp36dk2dbthdbe4siaqflmlifl2xifx6ey +0x84Ecf15af6fEC307aFeAB934b46947967Bc02d5f,1,1,1,,1,1,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6.236450674521951,1671492313,bafkreih572ftuw6sqbvpmvwfstughxibahssxjfpikfr6undkhvclt5pfe +0x4032aB8d5ccEd1444240c7b973F36d712981FB00,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,1.7302914377376888,1671493583,bafkreihnptryi4apgvcru2ebeoepnhaf4c6eoqys6ywm7enwscrqfgmbsy +0xd76Aa530b8C1F0039971Eca13ca1850047271aF0,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,26314,1671493860,bafkreihssiiskhhdbscqddsniiq7qwoq7pa3uwnm3mdbtw4gv7kd7yylha +0xC1818d0D4B392E1A3c39233d9de3319b9ffd1b28,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,3,1671494407,bafkreiduzxo6bii2o74yftw4un4qjz3an75egsjq6ynnuttmhjqibeeznu +0x00652700CB56BD11A52fCFb5709F89b70a445208,,,,2200,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2241.2405398706865,1671495095,bafkreigodj6yg4ijziosfxzzlecyzmpax2ziwsrz5f6jgndrwttr2vq5sa +0xC22fd653df4F0a2a4331FE81f0964F4b0ee5033d,,,,500,131,,,,,,,,250,,,,,,,125,,,,,,125,,,,,,,,,125,,,,,,1256.5922312354426,1671495321,bafkreidb4mlyk4jtxwm56mrasoo4cxhssmosoypcgw6udcklkah2w2jyla +0xA77e0bE155C36E9e0f4B85fD5fCF86440d619913,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496087,bafkreid2jkl7363smdfoyq7mmswsrcvmrjwizouzlxqdp4k7i5jued3gxi +0xE1BF8839930b173a97Ac29DC33C7774416517811,,,,,,,,,,,100000,,50000,,,,,,,,,,50000,,,,,,,,,,,,40000,,,,,,135538,1671496599,bafkreifay6ic5slg34bm62224k6y7u7adam76gpeo7rqpbskkraeuayfze +0xaC2e542e8586a8063267Dc028b9ed093b12158dc,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496808,bafkreifbmsgolrjnoabnnuzlm7576ktbnq7w7vqmm3lzc6qmszhsa6m5uq +0x6069ff82e3236312Cb4DF04c6E17ca0442dB1bFa,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1745.287455015515,1671496898,bafkreic2yzsbcq36mxccjblq3pvehqjudz3gftishuic3thh6uegyidugy +0xe8fe52CB1A4154036103D036924D43BC2A3B2dEa,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496922,bafkreiahhehbmgeb2r6e7raye5gbhj7zitnqkhkgokdojdmzluwqwyjzbe +0x2c5317d8E45b9a5C0488114AFC96CF460e5d0783,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,105232.3637075137,1671497006,bafkreidukagtenvydrlorlpbtjhxripbjng3jtemnx6wjdkc3vb7wbbx54 +0x681964BEAE493D4Ea511caCa53BafE183B35511F,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,24,1671497045,bafkreic6qkzt77y6smriymocin7nfju3cw4zmdockjwiu7vrb6vqnyumcq +0xEEdF3ec4235854D751d43E636341aDc0bb65dC8f,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,22,1671497159,bafkreibi3asw6t7zfiemf7nn2d6keswfsarfizvaivepya5mo2basqpdvq +0xd099C484A42AB337d82AF28298688c413FFc1f10,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,18.14014191,1671497299,bafkreiaxwelfnt5h67tbjemfwenr3advltngoqx4y663z2iuaimouno5xm +0x9A34B5Fd5D2454021cD373ed2F6D653507a6fD47,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67,,,,,,,6126,1671498858,bafkreic5iszqrrfmbnau6t6c7yxjv32a5cwpcowe3yspnhf3vw55256ss4 +0xEaC4a477C275dd968F29267CC02DE31574F6B0F9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898.96624113,1671498980,bafkreigi6iipssufgzc6tnvjgjegk4ld6aftdiqvqyfng6uvvcxdomgmta +0x969424c5Eea14327feD11624703f54E60B0aF1eD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67,,,,,,,2043.3,1671498999,bafkreieugxeqne5q3ve3l5dqsulajnzidi2chsowovwdzto7vpckugms4i +0x80B1b33a888924EE204b27553D270B3ae6a22ac4,,,,1,1,,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1275.2639585134584,1671500193,bafkreigtenzlx5gtiyqfx2ydqzxopw24cz5bitgj76slc5ve6ytjkhdn7a +0xc0309fB00BD8439155857D7d7bdCA222274F05e6,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,27394.408364384617,1671501301,bafkreif4dufhvb2xjq7mrswo3u4opclpsmlsu2crfcjeawwuxokmctb3h4 +0xff5A94619c71B9B96B7a160E71C2A2Cb82b050d9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501359,bafkreigts3m2uhnv2iolx5f5q6ebc4ejeuuodrywj65b4k6pjzb7smoapu +0xA9640998Ac009d2F2FfB60E934F126079315ae59,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501459,bafkreihsbilnhwfu2kjv34u67z744mwxanhwi5v2kffiwrghyajumntbtm +0x075aC07E9154a8A65346286d9Ef03166A74CF279,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501504,bafkreibkabbyalds2qbjgh75isahgodszmn5a45pzlqk5uxafpvave2bxe +0x70d4aB4815C4997dc16caeD4A967B4F7E386A96f,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15890,1671501557,bafkreicvsygncbhnqomzsq6pu5czve7joxw53ccityopstxdarzltfn7vm +0x8D412E067f76B761b92209a9E7EDbEaF475AF3Fb,,,1,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.698129790724,1671501983,bafkreigrhsuxabiylj374q7llnax22e6e45y72766ihzmzycmu3e2a2psy +0x6fccBe0ed71f9989d03af950F4bbb01eF245917B,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,52616.16556078197,1671502234,bafkreiax6dwhpzvla7ipoy2mhwdk3336jianl4hgoytyd43xi75ckqzrky +0xa8d67e13AC97cba918DeCdCD78f71fca8aB2d1a8,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11669.935844542668,1671502717,bafkreiauhsbdjwmnmtiedjyrqhv5psez72hzxcf33ta3tjweq4tebxumrq +0xaB888291F4127352B655fd476F64AC2ebfb8fe76,1,,1,,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3162685187198403,1671503421,bafkreianijuasfeoeo2xpsydpwzz6o7afz3dfsghv3u5jp23ikf5icxtpq +0x88Bd639d6B029596B029c61490F29f57b0bF4a3f,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1.186527063169733,1671503446,bafkreifb5x344cpzjlyopyzs3nmpor6cfnbzpxyxaeh3335tdmc2e42qdi +0xcDd5ddDc8eD9A10B65d605950E40B7efE7603111,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10655.861166574476,1671504936,bafkreiboryi4n2vah7tsrf2ucq22md5mubiet3cr7hnzpvz3ncooxywvby +0x5A7cf87555eFE360086A89b60C1988bAE02eEe2E,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.9141748171147056,1671505082,bafkreifgflc2d2nwo47zxgvxj4rtg5e7zn6tu2ojxjv5spukg5xegu5r6y +0x159968FAD6A3df074cFe7E587CDE0C5F375C1B70,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,15899,1671505108,bafkreiegevsurn4qdaiw3dmindeudk75rij6xsmzvm5pan3hts7rt4fm7a +0x8D1011626268BD26CB82f00C2089e356D36a1000,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1100516185929852,1671505118,bafkreibzwtbn7j2mole3kwkixro2d6nhqxwzfo4pw4aadnit3cgdo2igte +0xFFB950af044Ad20b12eD483eD8Ea4B6e279A5419,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6914491707489577,1671505346,bafkreiadwsd7qohtoihguekwno4odwxxztuuc7rhiajx7c7bixuiqfzqfy +0xC32b7438b3dF7844c9eE799930a2224Fe6E26426,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6776709568618676,1671505633,bafkreid6apcg6ziosod2n4jsxwnmovgu4luvtl3vcab6uugkb2pnrehjfi +0x7d6520A825e7c1F69D3d2D9BF48e60CB1f2f3C75,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6148802940233321,1671505954,bafkreiedgsvivckyl5ou25dyih6fo7rohmmtc2upf2ezrnfuuqc2u3wrge +0x7Eb885b31130543f7A8e1fCffc4d03159838E598,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.31477977728349155,1671506011,bafkreibgpekg5v6ob4smchq4zj6juqrs5kavgpcdnwg66n5wzazoyr6keu +0xA97D4048b71975a475766E8278dcD2DA1E8674fa,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0001,1671506022,bafkreielpygloxyzjceicka25tniqxqv2hzwwi4q7fmjg5xticr5bbptpi +0x793bEA03888c04D479bb0C545F0a31504049E87d,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671506029,bafkreibz27b5fbq6j2zkl463zwjvndsoqtl3p4hxjwpd3dc5y3ms423d7e +0x35D771584C07c63cfefD751f0Ac5818192606935,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.335,1671506040,bafkreibgqpevyaqbf3m5pqlmkbnmuu65ykcchseucmggodg42wvrifnrs4 +0x59a5B524D7B009eECBB23324Eeb984AC6e17D6e4,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6092,1671506201,bafkreidpkx3ks6lhtp4hr4tbqklnrwj3fkngwtpxnph6pfmbj6hh2imr5q +0xfdDc0659688495da6b709DC628a9B6A19c0D50EF,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10024,1671506242,bafkreib3vpuzuzuxjpi2uiflsbd5c5hwzzrylwhz4rpc76otbu3tqhoxwu +0x8B503C46930ABbf53D8a9Df51733c84d6C29a76D,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,11212.286164119505,1671506727,bafkreigjhlw4m5d5ce6mge2gtxmn4tx337usxdmqe3ecoturdj7hfndn3q +0x423c03f48dc46a1F27D76d285d43d0F101666666,3,3,,,3,,,4,,,,,,,,5,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,0.25726110987867606,1671507327,bafkreibw3sf7xts2vjlvbovo65s7mgsv72tw5rm3srovoqd67f4cqoqfte +0x6daF6dc3c8AA3Ee860478645205B5F9D6397616D,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,0.16175387513335415,1671507503,bafkreickuztg2iesqxxmyy4dqcgqtq5be2j4mc2iqrg36fqqpwx3upbke4 +0x89A23F067054Fcec705E64D4f4aAc36FF0db6B2c,3,1,2,2,,1,2,3,3,3,,,,,,,,,3,2,3,,,,,,2,2,2,,,,,,,,2,2,2,2,0.13076951726910613,1671507534,bafkreihxbzcb7zy2dy7th77sv3ix2zkp6hidh2ggkyajoj4j2tmcr4jldm +0xFA6e906DD9084d50be4B0e6AC13ef5B7186362E2,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.17269004542075,1671507722,bafkreic3m2hahrt4ncwtujo73q2klzh56ecemt56uxvnx2zm6bmo6t4364 +0x2F03CE8B4e68b860Ea89a59010F964E377fc058C,,,,,,,,,,,,,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,10822.204215641657,1671508466,bafkreib6nrxfpclprwqu24ubkgr44gbsw2h6fqh5mk5tqdcrmlrbz5kgvu +0xCd8Ceb90f34f1fe03f384ef33aCB386F45872297,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,647.3542743645634,1671508957,bafkreidfx6a6j3sxsab773zv5ai66syseywmnvqx3zx2rkxtuns4jw74eq +0x37c99C0Bd9149A9Cd5a3C7C150c604D896786945,,,,,,,,,,,72,,30,,,,,,,,,,4,,,,,,,,,,,,,,,,,,1,1671509210,bafkreibmjr6r77bn2kdj2zkchsmnigppuvaax3zhj4yeeb2ncvjr44axua +0xa698A0adFfDF132e3f8F35f3C89c0B9623835090,,,,,,,,,,,7,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671509551,bafkreihbr7kjw4veekq6p6gjcbvshzpcqnmex4yoml5oxyntjepkc3tm2q +0x73BEaA2Dd24aDA65DF6Da284729558aFDd8105Ba,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2080374203347921,1671509810,bafkreigizktt7frk7cedg276ansyrkvxm65o7obi7hs6jovcwojqxaz7cq +0x5B36002E5Ee1103A44246f67b067FD5509b97A9E,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.05,1671510125,bafkreidrx4ibdy22f5c3dcvmdpun55kf32uoeuzipzhyksamob4fixqghu +0xd9a67Cab3cdd712f65B0C48e3F0015673F8D9335,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,1951.7510746902203,1671511811,bafkreih2pv74py3mvfdzsclgs3csd5pno327v3kco7vtsvkrnbalj23qhq +0xFEAfF63e94268c2dd6170794Bc7dDd5007910CbD,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,15109.498344324074,1671513706,bafkreig67lsc24ykmgoiodbltm2qp2wj4a2ar7446wg4zruyf4pwxo5qk4 +0x61b86C9E2Df0ae0f9288E27FB3dB2731F59Ae733,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2928.6916259367863,1671514110,bafkreiarprxz5rd4z4rh3jdxtfbzxlmxunsm3gzty77m3plsr3ruedwyv4 +0xcb7958Ddf673Aa8f21614346d3E1c46182A9454d,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2,1671514481,bafkreigj6mqbg7jox6mtvdmxrf4hhild4cwywatmonshh7eoj2xln5inwq +0xcC99489Be87F4Efa26919d918995c09a7A688677,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,8569.237459660348,1671515676,bafkreibznoetj6iepa4dl7f32p32qw6cyxctclanqeh3xfbeyo5w2dt3jy +0xE0e82310b21c06eF9c1E92489a9CB542B54ff728,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,14178.615459130842,1671515707,bafkreihmc6k545dqmzysjhq3fjqkz3oigq3rmav4wjlrrfhijpo4wc2w5m +0xde731672533D772C4a21bfA0353299C320151de8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,13190.524692163743,1671515731,bafkreifrhn3s4jatk6e3t3iopjdyfloqoom5ylinn5ecurxyib46g3if4y +0x0043859dE73f1bEC4b123Eb9311436c299B38Bf5,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,60.129847307698235,1671518139,bafkreidomanpqvvdprduibxvqichhkbhc3b2fy6udgvtkzvqaw4wl7k4ey +0xde1B6dD59a147a5CBD584F5eC2E0954CfeCD2816,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5796.185350700435,1671518221,bafkreihjdno6b2zuubfohxyo6didomyx7tlzobvpl4w3sk5qeyyvvi4yde +0x5a507c770246Ba98AF4003efdF118fD6A37466Ad,1,1,1,1,1,1,1,1,1,1,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0.5725370190433058,1671519772,bafkreiah3j42jqicyjjg4p7aoc5o7jjo7olln4yd3da6d2bddhgxf5qb7i +0x8b727EC4612dB947BA4111AC8359b94d6265a869,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,143000,,,,,,143075.0889022,1671520510,bafkreifl663yizdrzvnskcilw4fxh3uzu7qvtb4apmtu35xhyrngv4wyqm +0x072c807A5447D3AA990d33C06850baA4caEf0F9a,,,,80,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,10,,,,,,35408.525493881854,1671520719,bafkreier5zqenlkrmjnhnsi5nder7jj7xyxintuof5rblb7ckiofxz7cgq +0x3eA7c30e91720745a9E57527eC74863A507849AF,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,3.934918763586961,1671520949,bafkreiheniwii35rfplaqpkdn6jvmuacyjmohlabcbh3xfsrsc5udswrsq +0x67ba6abF3fd1B9668f1aAe171Ff450D054418ED7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,579998.84688021,1671524357,bafkreidcjigxslutlrqeibi7rtl22hpvnafq22x3bh6raa275axdvpmpcq +0x4d143df97ABE6f3521ee66BdE8D40Ff830f7a104,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1178.5069802645348,1671524626,bafkreibdxtya546o7xezlgnd7ok7tadt6cl2sjupnfgz3ks3o7lpvngs6y +0x7E88854a5f2A5e6647FBe67F08A184dC0867a822,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3000,,,,,,3108.218288548972,1671524906,bafkreigiwwjbw4ehzhudv6rlqmtl6x7fips66jxymepn3qy2fatsdff6ky +0x0CfBBDFF8e741Ab4d996fD121BD56f20446E8F8C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,5912.486117608522,1671525471,bafkreicwrp45v4b6sjwbfzhw5qmlzh4crkemxzecztbjjp4znr4zpv6vka +0x424aDf9d641b781870AFd230775b4eC9a6E3b2F8,,,,10,30,,,,,,,,20,,,,,,,,,,,,,40,,,,,,,,,,,,,,,11951.472619222248,1671526281,bafkreifuwtcwi7hygx2ymudghq4u3xh5tawi3tauxzjecsg3gsmy2jbija +0xA4D3786210A59CC113eeDf5a30e1358Ed9BeFa2A,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,66717.73498510045,1671530926,bafkreiaqwfp6ufcuvdaovaavz4wxb2dk3ykhpct7vbfnqez5wpcgys7vty +0x45a7742393cF1df4F8fC33926a4bd474a3941A67,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,35152.79,1671531445,bafkreifflqmh3xlrtubd4giwuaaywplc6vgknlwdztzfyjjq4ygreoqkbu +0x75DDb7aB958135bBE2DaB48D6286826f6aa5E3b4,,,,,,,,,,,,,2,,,2,,,,,,,10,,,,,,,,,,,2,,,,,,,7065,1671532296,bafkreiecoi7dn3zpqnlqt55uyulvmobsapntv42ashkwg2yxc7g5qsr5km +0xFF1882511a5673194b252c35f2530562f74F47e4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,0.1,1671532425,bafkreiczihcuz5j43gfarz7fswlxvthlz5554gkfxo4j5denchx6fv2374 +0x7977B909D55a53F9c73140f7F611EaF0638238Ed,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.011218295138671314,1671533780,bafkreiejalpwg23itgpmbpsepsrjqda7cjewgdsmwowdejjn5zj4aqesmy +0xa785a1FD05a0C006b94484F124F6F420E6E50834,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,12346,1671535829,bafkreiczgr6nmdu7p34kq4lqaktpkle5fgmfkudxc7saarbalxermh57ei +0xC3115992BC4E840bD7af1F1781f1c46b7374DC7a,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,12809.802732478318,1671535952,bafkreibxs2khqukzpuyocwtwvbi6aiawl3myxmhqttutcxzgj4zvexfpx4 +0x8247bC62985678B38FB9cCc7E7c321C030E9aAb4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,316.96062488793086,1671536324,bafkreibqdlyms2sod45gd642fq2hl42sppvn3nas7f2blijzyqsx3ek5wu +0xC3b30E0C1Be66C72Dbb6e6DeB85d660cb3eF0270,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1220372.6085502957,1671537805,bafkreieyiuav3kok4pz5zuxe4hqnt6kkr625xgsaok7k6uxpbpybbjdwxy +0x50B13f2F79Fa06Ab33f5eaf7ddea666499C36de2,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2,1671538698,bafkreigmk7cnrup267eeipsnvmbvivsunphuxv2t3phv32ystlhgoktakm +0xFB25B2687CB2403A7625f0C480163b4f020E53cd,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.37041196735673104,1671539951,bafkreibq6e4vfnwe3uflethgl4ifzxvivtaormteotvnfv7zogc7bu3wdy +0x8Ea2a56feF1887001961b34F69b9191d24Fc415c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,10.82,1671540021,bafkreiemk2l2axkb6wkflfixgpdgykwb3cbh6yfzu3qgrfid3r3rp46qzy +0x0D3B8744600dA2e200d2a46f676fd5a29B7BD1BC,1,1,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1.1698928013945156,1671540831,bafkreibdbbw6rmk6g5qx4euzp76rwq3zpusjq7yrfehd5ikbz6isfacgo4 +0x401835554EAbB3B676ce8B0E8B6b066543aD7DA1,1,,,,,1,1,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.2314256955274622,1671541597,bafkreicjteghw4cz6xnzg2wlsmvbmypzeuj6755qbacyjio3v4lxtcmsra +0x9076522f767597B93FA83F39ce163777Bf20C3b1,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671545155,bafkreic2rc7p3vrvalhbryrc2pq24fngfllvxummvlppozxpstym7nretm +0xbbd23079B8D81c6Eb100e822825E410E2e8B1064,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,24065.275759764358,1671546593,bafkreidgp6o4borifzq6valshd5zi7iyolnz2lhhqcrjoqglwo3oacyfd4 +0x903F9520Ca4bc28D53a516C04914deeBbBf2F243,,,,,,,,,,,,,20,,,,,,,,,,,,,,,,,,,,,,80,,,,,,93.84268846835003,1671550714,bafkreibdljokjwyw6lv7dnanlicxw2uwriwvuyc7qeja2zfmr37fk3vpmm +0xf56345338Cb4CddaF915ebeF3bfde63E70FE3053,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,9149.239104040693,1671551349,bafkreicsdt6vcg2t5q35ocisychttbjv2vyehrl72bsyefkpkkrx7l4nm4 +0x21A0F52DAa934786A5EF80c34B9De8b94Fdc9822,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042.3737876676703,1671551364,bafkreifnlfcbbh5uazdxa6f6zravoweumpodl4skvtsscucfmvydou5dsi +0xE88a203D722e506648a7e9482de68EC9C58249e0,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,984.9890912807199,1671551444,bafkreigqjzyx5i63am25s3rfoupfhjlpou7gmlmdulrjpwj55pqpdbss2y +0x81b3893a8F3557712705E83D2aB877710044d74d,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,118979.64445035787,1671551557,bafkreig5xlykgkeallcygzsk26zytib37mso4wllitjmpawpspnwl4b5xy +0x9f4A549dD4415968f0279dB9Ae43AFfD7354CFDE,,,,7700,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7651.2410737671,1671553435,bafkreigkqrxhlker6e3erdldgeioalkupwvxplfuvitr2cmyghwr2asd5a +0xdf1CF9E3DebfEFd56286eF4024646f49cc540e37,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,278644.0393379495,1671553840,bafkreiepcyzy5znfaja6d2oz5jmht62n247vsi6mx2rymt5sfkgw7xr2cy +0xF584617637c2Bf5b6a826aDf213f7BEb9b76b29A,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671553888,bafkreigk4ztpgun2gfy3kj454nzt2s6gixcw6dxgq4kwwsgozcwhz7uywe +0xb7a98544083a5f6Dd3Bcf267aBa5a714E3f515f4,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,451209.521835123,1671554311,bafkreig4y4ctv72hg62v2fnj7e4fqypcavvwhgwtn22bluuosud3feykuq +0x0eEFfea78e89A75F6BAF1d345F16B185EE75a815,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,8092.236579863466,1671555111,bafkreidh2diycr4ta7apo4hzyox457wkxgtovswq2vn2zwcyrn5leu4wk4 +0x0253de2863975260822611086835571f86b7794f,,,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,8546.26298904,1671555535,bafkreicd2bhevjukvuob4szfgdau5w2rou4b22yzpnf5a4eptpl3ldtzhi +0x17B9c8863b3bD8D5Fdb9497378fD0cDa29C15AE1,,1,,2,1,,,,,,,,1,,,1,,,,,,,1,,,1,,,,,,,,,1,,,,,,401,1671555624,bafkreickj2wjptzhcy6ajcocwe7lhglqdu7s47c7mmuvc3kaf5y6kgdaq4 +0x04F671fF7215EB5908Ee1FB5e7a089152681AEb4,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,21983.169629199983,1671557165,bafkreiavoiqk3fcvs6ygtmt3zjhvwfgbu3xonrv22ykhrnz75bbk6ht564 +0xA9061b9fd4e3Ed12713fb64743c01F72Ab86D30a,,,,,,,,,,,2040,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671557479,bafkreibcu4dsx5px56r52v3ihnmws2zhgjnfbphbt3obwkjy2kuxi65shq +0x96474a1ab05Cd0D67eDdfd9F86F0569ACA3d7e56,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,116565.56381748024,1671557725,bafkreigije4idgqevlfxql33hoj2ihpyoqf3s7dgrhsznc2suxsr4xnaum +0x771690B7AD4417878a604B798aC38b46262B7670,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,98555.44178400462,1671557764,bafkreiczeq3tnrlloc3r7uwjnpwcpurn73ohtxs5lzhvcrpl37mxpazgw4 +0x4A97e4E71BaE0263978323dD8442e490bBB533cD,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,99428.1109508388,1671557824,bafkreifa2ouzr56r5uqg6d4evnuf4l7j6ag2dk26hr5uperiznji6ppdjm +0x5C04911bA3a457De6FA0357b339220e4E034e8F7,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,5318.383702313741,1671558315,bafkreihtontakqj4cykv4sti5eycsynkt2nuuk5fw3flvh62w2yzkl2ib4 +0xf1faECa73C28bd888BdA15D32181C6421D75B986,,,,,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,35.289565725491144,1671559104,bafkreicch54bdyhepdstv7d4ghccrrcdiegld4ofhn5d5nnykkiwouqmjy +0xb75E34c02BDEeb29fD9826e8E6b887CDDC4cAb8e,2,,,9,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671560959,bafkreihhycjqhb2lkcgttghnf4c4almi3pqdvv6jqfioxwpeex7uhotnuy +0xf62FDFd493EE736793787a2C261FcbDC6D753D67,,,,,,,,,,,,,,,,,,,,10000,,,,,,,,,,,,,,,,,,,,,10241.84021277827,1671562681,bafkreibm4we7kojethwdo3cmpm3djfc5ooozhn5foc4nywak6s7o3foj5q +0x14D87e292Aa0e251CA50BF980B8cA54d4f2f2623,,,,,,,,,,,,,,,,,,,,,,,19000,,,,,,,,,,,,,,,,,,19193.19953931745,1671564550,bafkreid7o6vpzrqfzhkaivgjxiugfmok5vefwjktk43dug6zucinlpqmam +0x8665E6A5c02FF4fCbE83d998982E4c08791b54e5,,10,,10,10,,,,5,,10,,10,,,10,,,,10,,,10,10,5,10,,,,,,,5,,,,,,5,,90374.6850772568,1671566361,bafkreidr6toqot4c6422cuwpoxw5iua3n5oo6aehy5yjh42ghsyhn5f4si +0x578E941424770936988B009D837c80a9E579c431,,,,,,,,,,,,,,,,,,,,,,,10094,,,,,,,,,,,,,,,,,,10094,1671567147,bafkreib7pv6dzszowflkl2mw6uji7t2d7tifmvsqgbrnktqcfrs3htbvri +0xEe1d599BA0e6C585277c5aFc0B89A9ed12534E80,,,,,,,,,,,,,,,,,,,,,,,10950,,,,,,,,,,,,,,,,,,10950,1671567686,bafkreichr2uyhdn4qhcsdhnelg3iac4gilx2xo7eylb2zgr6ccw4wkbau4 +0x33Bc4bB331A67088F1732eF5B84F79e9caB29CF7,,,,,,,,,,,,,,,,,,,,,,,12992,,,,,,,,,,,,,,,,,,12992,1671568226,bafkreic54lnzqzqkjyoemfidn5rk6kkvjp6wx7zaxxevbezvtopffq5n4e +0x9ABb502f272e8840ccB3aD68CfE7E2E82c809A21,,,,,,,,,,,,,,,,,,,,,,,17076,,,,,,,,,,,,,,,,,,17076,1671568707,bafkreibdo4bylbs6jbzajugz7x6qylxuh2dvzu7mmdtijifbpo2ezje57y +0xe876387B8246663Bc0f3c76114aD75d58CFD2b46,,,,,,,,,,,5,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,36390,1671569644,bafkreie3bdao5xexwxal3lvewrzhtsupkhltvbn74t5uyyghn3rq4moz7u +0x7525e71f51BDa1fBC326000714d2fC68ed5Aed6b,,,,,1,,,,,1,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,14463.171912358788,1671571756,bafkreia2bfvjize65gsaczrfyny4o5muetnrqvwxzg3tflv43tjfasy4am +0x08c1AE7E46D4A13b766566033b5C47c735e19F6f,,,,,,,,,,,550000,,,,,,,,,,,,600000,,,,,,,,,,,,,,,,,,1155619.8008433485,1671576881,bafkreiczfry7lrjhar3mx26eq4l6vy7a2cf5beg7ct76glwctdhozu24ey +0x8da288c9FdaA754F2eeadf8145222bD1cc8782ff,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.252790482840706,1671576924,bafkreic6gyusknnorbm7xaopqktytye5fwtycpxxsjolvdn2q6lbkaw43e +0xEBcacC414478f5e2fEd75F56566baA90b60188e4,,1,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,9569.539192798118,1671577163,bafkreier3u2oqjwevic3ziix555cviyb66irix2ekzkykh2wvstr22pjpq +0x8884fBca23D2C64a7d526731AC93d2d1c9A428FB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1000,,,,,,2451.6912959315214,1671577524,bafkreig6s6fppoxdvnpr4l4xbo3sk7nr6435nivbk52nb45piwg2lvmxde +0x6a91B82a9Abd58963b164d01CBF793CF60c089fd,,,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19954.947765464392,1671578965,bafkreicmjgyrmzvbny37wjd26gmm3f7fzahipc67hcdydxf6alqknq3qqy +0x2974f8b144b4E2Bdb6Ff57797ed9cc7c7aC77618,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,13848,1671579750,bafkreidt7awrss54dhh33oamaepvjg6lkf4v7pkzdxavg4f7szqgnaxmmq +0x99918ce502C8861aC6a664b3f56BABF0DF93C695,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6443.682214480737,1671582267,bafkreia32y4adadk6dqdpiys3abu63graumry72zbvfedpx3vs2lsn6yvu +0x8f1B5A2c412b8069E80eA399c4B53be4F4217E98,,,,,,,,,1,,2,,,,,,,,,,,,3,,,,,,,,,,,1,1,,,,,,53791.23120483479,1671583988,bafkreiaf3sqsoilwgvs57pie3sqsheff2a2qcgyxnwcelxkrekf6eafzaq +0x22154EC3f542483b2C35d67CB5e75A905338C259,,,,15,,,,,,,15,,35,,,,,,,,,,35,,,,,,,,,,,,,,,,,,90634.07209211274,1671584648,bafkreieglget2q5negummd4quwaz27o4sglelshra2bn2lrjjlwq7fg5nu +0xC7AA66F4618171e4e074c3B3Cd87645d322aB1e6,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,22230.072102758197,1671585769,bafkreiddmes33qnvi5tkgueqadc563rxqidxq5bzne7hsgwvi7mhiryg4i +0x3207136F3C82370b17eD87B89F91fFCD6987680c,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.885365861029664,1671586647,bafkreihv6jdqnrzpczo7amlsjuz3qflpsqttx5zbomb5pnkyvuw3qeja4m +0x7d795a0CdB5B2F5F7177606d57313d17F119278a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.21627144159443348,1671587694,bafkreiel3vlizsqd6wibbryw3hwa5cxjqerhn7yv4g56su22akx3kfsrqa +0xE5e508C953114f8688b9d6072cB1196Cf6487006,,5,,20,25,,10,,10,10,,,15,,,10,,,5,20,,,5,,,20,,,,,,,,,20,10,,,,,77.62390972967073,1671587998,bafkreiefcnxje4btg6nsgc2vpzk26kvqi2d5lb7b755ongpxqm7wno3huq +0xbf118E085855598A04Eb12338BA0ebb16525f521,,,,,,,,,,,,,25,,,25,,,,,,,50,,,,,,,,,,,,,,,,,,19118,1671588764,bafkreih3xmdiqtd3csf57ss7ah6oosh2j6jzhrh5mrr66iwapo5cppeghy +0x9E4E4bEC255a59d2b07cE3bbEC0aFe5Df00B4b45,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,10869.69156719,1671589195,bafkreibk57gkzn23nbeofivmaktswpb4xd4kdsd5vnrmtsva2gjq6oyvb4 +0x85199311Df08299D312A66Dd90C98FaC27B2dC86,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,37249.677972927544,1671591096,bafkreiaa7a5nyvxjpo3hemv4nc3pdgdhqhuyhwzvwfg3e4z57llzguubpe +0x8eF7F3651800194968e04030CB09C0d130514111,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,0.6307290555139802,1671592770,bafkreidovgkc7imqbflrzmtlg4slvro3y7vtwyo7r2ohomyfwnvjy5zbom +0x157Ea7465237654286Ba3FdfAeFD145cafc8859E,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1,1671593648,bafkreiag6rte2vdjitu4mdl6hv4ofd5rttyqs53tsg2vmcyou4abndrfrm +0xed14578B5317333183dF8541E75FD5F01B8bA9e0,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,15034,1671594365,bafkreiejltfwauae3wye4rex67c5zhi34l654z57gxla4gbrgqqbkemkey +0xaa73F5B2DF5364173e2abA92890bAA6026a2251b,,,,10,,,,,25,,,,,,,25,,,,,,15,,,,,,,,,,,,,25,,,,,,11156.00691272,1671594517,bafkreih67bslmimn5xhc67utgraqo3q5dheyjvni77brcdd26uudfshini +0xff5fE762636E874CAD39C05B92ffCb09c520b7CD,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1188.8754005049534,1671594858,bafkreibcxbxsv5mpyfielbn3isl2pvakrsglx66ffl72y2ki2gnawdgbg4 +0x5b47Ce248ea313841668A318AFB9a5597d5eFC23,,,,88,,,,,88,,88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,96.88594271051765,1671594899,bafkreiefjnfzni5b6rtlhtte6d35em25eapnunil57wcrrful7ectkxk7e +0xaC8FD22Bf9588A1Ba5562E05C755A2B94EA34cDF,,,,1,1,,,,,,,,,,,1,1,,,,,,1,,,,,,,,,,,,,,,,,,11892.353265796084,1671597823,bafkreifkaviuggvg2ot2vbhcidxyxelm2d3driqwdie6dwyb3tbhp3myam +0x08552b556cd22F54141B361E207619A49F28FfEd,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,8946.880185661481,1671598351,bafkreibsmyqujyeupudrzwgktwnsdkgbpr4k56dtppsprhuzjqcbdpgecm +0x241b0D032fCE2427E0171778F146Ccafc90aEDBc,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671598362,bafkreibpes2lab2n3pqe6xwqmsdjtureot42eb2mlufzsvx3kmbub3k3di +0xb8861Dd4C9684eDDfA720029C91681c288Ddc084,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671598503,bafkreic7xmcl2lacjtxy6g2umzlhs2zsltwqwh2mpkkfyejzraaqpedhky +0x5c0F53Cc4bEcb359d2C3f2d67e2B578eDf2Bf4fc,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17259.230981740526,1671601433,bafkreie75jrcr5yi4mr4cl2oy776xnstuuyflvh3cfnuzkizfu73b7kxfy +0xe8Cc7c453ecA25450CA16D551dB93d5F5740E054,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,21265.706945654583,1671603414,bafkreib7o2e4nxroyw3gmmhh6s7nbgqlfb4ihr5uklbbfbw6vbmdcdxmwq +0xFf3884575452BF87ab027c8C2933772d9D102896,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60143.30940149005,1671603505,bafkreidi24vhtor5ojkbqhwjptbvvjwatwdmraagmbv4bq5rlx6np64ppi +0x6f3a4412262428dc7dE6685854bF50298433D0fC,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60771.49086761074,1671603587,bafkreieoixfcu5op5dfpdmy6c3zy5bf7zj3tf7od4vyd6tyxllyoj7z5ha +0x9543b24481Ea651eC35F805E7815E0A314Ca7490,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,61804.95069897057,1671603693,bafkreih2ukfyyt6kwripczg2nsudgmtemd24nuoxbsmjhrqpjo62hunqgy +0x582643c7E266a4568d9662C0fb9d8D6Aa7592442,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,61852.75488300007,1671603931,bafkreiesat2cuuey5nr72l5begavqlagkv6t5wbb2eibk4cmvwgb5llmhi +0x4A77CBa0b22646DD2f6F5a9998527D7D5f49703a,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,92616.71092,1671604680,bafkreic7gvdv3d5xg3gqofgjbqplfug2cdtuvqgphygazltgc3jwjif2km +0x833F96475e8032f88BE1F3e2b57D5Ee31eeE20EB,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,44849.11709327758,1671604762,bafkreig4djsptkb4pzynuouqvbejvpdw5iqbi6x6klduar34pzegycz444 +0x09fC90831502fBBA42EB367EB244B25f9c2804c4,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,56467.47515660747,1671604824,bafkreifyox6lw6dfnznlhozsmogmwbdnuypazkht7wnkclxirkayayumke +0xeA56CCc1F88958dB6a0868957917861A1dE5E31f,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,45585.28196770686,1671605105,bafkreiaabxcg4q5pvpw7rzjtj33a7em2fw2yzajjxwax2orpt4y72kxrxy +0x037ac7Fa0039DA18D9bDa7fA946c684358be4b52,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,15798,1671605410,bafkreia253dcfpbu2sl44ch4tm6ak2eqcopyre4xo4nxhf5znkgzbtphdi +0x59e1cDf908933Ce0f3296b64E726160aF1B63320,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,75152,1671606181,bafkreicpteicmwrajfe24ijfcycufo44altveoc3ufgeinqydidoff4lsm +0xeee22b68F93e130535d1d56c1B95Bf22c94090E0,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,151802,1671606281,bafkreicf4z7i55fvlugduqk74drnhu4ark2ynvpvovztypqrgp7e57d764 +0xd6595AB8D76f3e44c1c80b6c64Cf721948C9cE0c,,1,,,,1,,1,,,1,2,,,,,,,,,,1,,1,,1,,,,1,,,,,,,,1,,,0.3287170734307452,1671606305,bafkreicokc676lpzy5lrvtyhizckzw65ec2hiktoi7wbu4nccz6wl3spxy +0x9D4c1C518442aD9Eb23cb79A4792D508b49c81af,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,15034,1671606379,bafkreihd5lqgfr4mcff77arbjuaz4dp7cpevzpgmtstohuqef5aemlomuq +0xE28160714be54a94797BeBcf69d6FdE4a883a568,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,50650.31329745207,1671606464,bafkreigeovendkmxeuvhuahllj2cv5r7vtgohjjrlufz3grrw33gc6exp4 +0x363227123564aCCBa048094A2D554239b1aa5779,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60780.37595694248,1671606594,bafkreiaik6v7u6ko7oivapdumgwsxwd7gehghhxkdo2ujyt2735gi4lqh4 +0xEFF6f2D3770550A4dE70777aDF86EdbebA252561,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,56282.62813612874,1671606653,bafkreibr2jm2zwm7ehvnbqzycvazandtikujnnvydgp5rl25tdm2tlc3ru +0x1D168517c61B572c3df1CDDDeF33879689dCD1A0,,,,10300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9985.327579744204,1671606959,bafkreiccnscwgvribczo2zlrkuoymfmbcgbwtaqcqiccbvbypheidapy5a +0x15251b01C04a14628e4480Ab3e40e702594cf1dB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,9647.177019045108,1671608605,bafkreihsp3qkm5rl3aqqs7jibelloznthh72i3cyjhyf5ghl7o2rvkktse +0x80a20347b912dC538639112754320C016812a554,,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671611765,bafkreiatk6u5ge2b33vrxloo5626gxhzw42skfj3wtky4lwddgxqls2mx4 +0x13a80dE23190e82DD00c9d41bdfA5C23D223d20c,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671611933,bafkreicemaks6yyfft5y6h3uzxi5rbflgdzscqh5umpwedmrs5yzlddhgu +0xd32664737fE970EE00e2e95BeD430C3845A94980,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,40911.6,1671612037,bafkreigvndtjn4qruytiaw7qg3ibvhmzvlwi447wrbdhznqt4aarayo3de +0x03C84F943de4CF7bBc40117Eb75EDa994EB0E240,,,,,,,,12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671612139,bafkreiaiq5p2hkjs5uweo7rnaf3jym5l645qtvc3hoq3fxeicwtxthbkfy +0x85321407cCa732fc01B74B201E490Be397166B3d,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,19867.6,1671612158,bafkreihq3prhqmpkrv5loq5mgb6jhqjw2xtayiipgggour3bgosaz2mite +0x33569c101562e1fAF5b24581057E5cEE4c8288D7,,,,1,,,,,,,1,,1,,,12,,,,,,,12,,,,,,,,,,,,,,,,,,333613.24233267165,1671612212,bafkreigbut3igc7bxujbiceztg2cyltvcg7pfydminfmfhq3faylduv7fq +0x09fF3E739a0f87D1a38b551659079cC6BDfbcF79,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,29962,1671612249,bafkreietzmv6by3c7fd34co2zybdpd5se5ljer5pbjvz4leqfbnksjtsa4 +0x4F17E2Fe0b2688636282884066f2CBc8b741a1A8,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,,,,,,,4.15300329,1671612262,bafkreihwos7kjmnr3yzifhdijfr2kphhmvrtjozq4uoapxvlbohbcodmda +0x82a479BD14f05275A68016e5338367200bEE08dA,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,12281.92802788,1671612416,bafkreiazq3do5smuost4cyldbltnzvieuateb2amvjxwfrafgjat3aes74 +0xc55Ea01bFF091198CdA9d91100500b70c532b1A5,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,22.533934923197926,1671612458,bafkreihp7qwyhtklezud5vnvddpnx37yu7weeav3dcw6gbr5hi53em4miq +0x5E8456702Ba82f5143Cfc2C7B1c35e9bEEc02CF2,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,10097,1671612486,bafkreid4enmxddu2vkn3w6g4mdojuqefnx62vz5qpawty7ry36t4mifmga +0x5E999748CBdad576F17BB549F25681c01d6aBed3,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,791.158063234232,1671613058,bafkreifhb746j5wgsgdoc357cqpy3bwdrf3qrdi7cv3bvstgwpnn5znhqi +0x5c5Bdc3e2Bcc382C1c5b05D3f3139BAB829C6160,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,20.694623276662835,1671613535,bafkreign4surkr6a2k23om7rnfkwvb4plkeuwjvh5kstkbr3nxv7l4mcde +0xc8BA28507aa7F1825dB28a7882402D616ad7F562,,,,,,,,,,,,,,,,1000,,,,,,,1000,,,,,,,,,,,,,,,,,,2043.2588341142925,1671613554,bafkreibqgoue3eerqmkywv7efjjcvlkpbqm77b44wwsxp3xc4orchzb23a +0x8928b26dE9eCc59cacdbA095C6Ed6237F48DdbD2,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11274.014978907262,1671614188,bafkreifhjtckvus5w7qehevheqbi4x3rf65ihhihvgujpntzzeluaoen2y +0xd4c8AE4747926c3b09b3A9B83071d94FA6e2c740,,25,,,,,,,,,25,,25,,,,,,,,,,25,,,,,,,,,,,,,,,,,,30594,1671614267,bafkreid2phwemqf7qleij3fol5euxcrzoszae6ddcck7cukcewza2ejpn4 +0x5fFDCe83c21820ECDD98DB65D2801e42d74d9f01,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0307675621158374,1671614592,bafkreicch2ajgx4rw6ljevzim7mspn4atg4nnxx3iyfrrxjkx4zkv3qhhi +0x400e4F44D0cE889E1D09FC12815Befb059D13535,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,82300,1671616189,bafkreidpvcs4mxdlahy67idlpifuxvxqgo3caplykaqx75mwp4yjbd6fke +0xA72D8bf26E605482F7332084944272ec19dE34Df,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,23427.23234621043,1671617359,bafkreigcdz4qcq4ngf37osbih3daep3fphwojuzlq5uqpdpmsyhwjfs35a +0x720A4FaB08CB746fC90E88d1924a98104C0822Cf,,,,2,,,,,,,2,,1,,,4,,,,,,,2,,,,,,,,,,,,1,,,,,,52095.57694186,1671618140,bafkreiaobyrdgqtfnox4txpqedcfqcitjrqgd5634pqrcq3raynzswehey +0x1CC3d66A2DA4Ff929002875E381d2Aa232b7Ec03,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.0000042871193444,1671618760,bafkreidsrbcxbuqhjhtifaaswf4nldgjwapf6pefbb54sc7aeyh3bffalu +0xeb4351d692619BA5d00feBefEecdC38C1a26600c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1.0934840637537195,1671618959,bafkreicolpjwxcfcelzdmrr2vdrxkogxssqz5btvinuc6j3ff3iberabfu +0x7C646E2B34Bb50e373088a41acb4eEba679335B3,,1,,2,,,,,,,,,3,,,4,,,,,,,,,,,,,,,,,,,1,,,,,,11117.74974211894,1671619495,bafkreiac4xbszyjycnn36oh34x7vfmaqsdkpbdnbvzdpyvrezqoynyxkcm +0x917549789757E442083fA3b617955bBb78027408,,,,,,1,,,1,,1,,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,0.23123318180820854,1671622536,bafkreif2lrjjlzflmlktlq4pitt23xkpjrlofmpyzdnxs6225p6ebruqzm +0x4254419739cE5Ea3FB4140357b2bAA71357D14D0,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671623647,bafkreibrzhfwub6om2fpfxsbas3xxlenmkmwgh73y4424nn5svavr7s2ay +0xFbABAcd8EF4dEefa572cDC1A685781c2b551490e,1,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671625366,bafkreigdkbuazjrkzunm47rhgx3fklmreuy2syvg3zlhabljswmqajpn6m +0x52C1493b12758F06d069011dB972E52a6440997E,,,,,,,,,,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,5.5,1671627905,bafkreibmmveq6quwd265ok3e2fhdgbzzii2yyziymvzf5xfkw2bmuj5jje +0xe627fa5b46Edcd0058CA0D39Ef4Ba94448a184da,,,,,,1,1,1,1,,,,,,,,,1,,5,,,,,,,,,,,,,,,,,,,,,0.77,1671629729,bafkreie23j3qerohno5izltemrqodop62w6lituppwb6zpqh7aljdya5mi +0x555a457351906003D7Fd58E9Fa7fb3EEC54F83C9,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.060501443792288695,1671630083,bafkreiblppj5ct65n2k7uglcqeqvhxnk3tb2rrrawt7xgnznvsrzsdy37q +0x64f8e38e19c1B6992969Dcd5769c149951018Af1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,427.08834541004916,1671630433,bafkreidkskmfudx5eqikheu6hapx7ivwglizsnwilghocdsqgtbdzzt3ty +0xf38D1b5288B29406EB7FF548009430c8bF3A7819,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2900,1671631334,bafkreig5wba4xg4omjuwtgeuanehs6e34k5symre3brwlp6svqgyh6cjpu +0xC820817D1c55B7ed99E23E8456Da07bb2b578A45,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,5172.7777278553085,1671631483,bafkreid65v4ufer5thtaeezfqctigfcajmsow4xsb3idc25yiwrvffnrhm +0x550e970E31A45b06dF01a00b1C89A478D4d5e00A,,500000,,,,,,,,,,,,,,500000,,,,,,,,,,,,,,,,,,,,,,,,,178.24235513340705,1671632730,bafkreia3w5byuylqh2hk3zdyilrz3qkvmoksspeyv7qvpkwfn4urgjmb4m +0xbCbb6ebf12Cc1a5e940ECA21dCF6aF617aAd4Ca9,,,,,,,,,,,100,,2000,,,400,200,,,,,,50,,,,,,,,,69,,,,,,,,,3530.104922811242,1671633000,bafkreiezmmkt72ewoyvajctu7cb6e3jpecnted2v6cnckrnjlhhulgmeli +0xD70924a5B41011a6154844CB9dF07C129a0C1624,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1020.7082624269603,1671633028,bafkreibzyibswjf4lnqzbajtl4xujjusaorlpl75zzvpnpqght2pwtydgi +0xa075Da3F8c25018792366e4F4b3029a7083DB718,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,10094,1671634124,bafkreib2kgwclswctbgn6qt6fdozotk2moycw4ff4sah75kbh2wc2o23b4 +0x6cfbF06E8b6612B39333eA7c230208D1d178278d,,,,,1,,,,1,,,,,,,2,,,,,,,,,,,,,,,,,,,2,,,,,,421.71384204725416,1671634261,bafkreiatetg5iuiuibza6al2entx33uzl7arynnieaahuuwcm4hjk4vxme +0xaf469C4a0914938e6149CF621c54FB4b1EC0c202,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,3885.0462532386855,1671634771,bafkreibjohkobyhbkwaioe4mv6fieskeqajl2dcg42hiw7tptfvda3h5lq +0x49f8247F494AEBf1Cdb5b431Ee6dD780F89A98EB,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2559.937630407791,1671635878,bafkreig4qmhajlpm66n25exyhvhqibt2okbhnpm7lhhqnin64i3nxyaicm +0xB88f65Bd2493BA8e4fc15d9D0C3905d16874e9Bc,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,1671636004,bafkreiaa3us2hy5lg5tp66gmdxwlipi6eqhvkkpfrqrtf6crhuccr2qbii +0x180Dd1a1f2D43e0162B62a2F1d19a8e4543d75b2,,,,30000,,,,,,,,,24000,,,,,,,,,,,,,,,,,,,,,,,,,,,,43906,1671636040,bafkreiap37r2q25xcxeetvg6hnkgkedkmrcd7uplgaqobyhvcbhz4f5cki +0xBeacA3595d0E023Cc726109b5BA38c7164daDdb5,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7381.456060834408,1671636252,bafkreig2orwlrcvpyibxpanrmxkyhthlinqzoisxv2t2ojyo4wuhl42j7y +0xe0c48848828F8fADb6F8F75B64Be8f28e7f90304,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.03020235,1671636318,bafkreigayd6uirxj7mwm7vib6cmtkvfxzcua5od4r35wd6yjm4c3yzhnxy +0x7B4e32D7c0a0BAB8083e3e9767a5af2472b5cCFe,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67139.41261273927,1671636491,bafkreiadbkdzgtih744i3agydlhhsubcvxbd3suamiv2otqtqqslaq4uay +0x0c5db788F9eE468906ddc6CcFb1b1fd3d23a2516,,,,50,,,,,,,,,25,,,,,,,,,,25,,,,,,,,,,,,,,,,,,6154.605178905066,1671636548,bafkreid5tndfzug3oqc7v3wc3hewjngwbd7jsodnpa4j7jzbmgyntwq74e +0xA15aAD03A4F9c46161783398FE6d93BA18FDa366,,,,,,,,,,,,,,,,60000000000,,,,,,,,,,,,,,,,,,,,,,,,,13848,1671636830,bafkreiaspvwkqpw4qi6t6oxtcq2qznpscavbhyqqu2ywpe2zscjp4r5e3u +0xF81C87fB76F3Acf458eBd29df60c92F4b7Ce8Db3,,,,21500,,,,,,,,,21500,,,,,,,,,,,,,,,,,,,,,,,,,,,,43002.403202150956,1671636900,bafkreieplquya2p5atdj2rcvy6xlae5oahbpzmd24sfxh5blc5a3ezz2dy +0xBCDDce8B0e2C231C920977854BE736810f1Da097,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,27763.96431931539,1671637006,bafkreig5utoimemtesf4lgqndhbvnydws5tfdcq2de6dcbq4c2r6kmhr24 +0x206d2C788C2D8B0c4d32B36A9DfbD9c6d749C560,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,19338.08685874393,1671638314,bafkreidpanyo65tuymrqu7w67vrxbqydjnn6oymsqp3x2j7fuocc3w53vy +0x768a49D40b674a9EF54f5D1cF3d1054A749e905a,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2050,1671638785,bafkreiejk5wi4u7h7bxkdwwnjyocx5hkq3vpgh2v5ykzjkolxjimte3e5m +0x14210914D6A65Fa2C7747579A7aa287B027fD092,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4150.017325486132,1671639686,bafkreic2lgzjbtn6wittjblipj4dfipgsqv6hzzzter5iyi3g5nrsw5yke +0xAb50Fa55F304bE5089f8C82c1954Fa564cF37785,,,,1,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,32641.012759927053,1671639989,bafkreiar3yfkherkkbzpt4im5vnno7mf5nbnvirjdjea3sevo7p4bc6i4q +0x56511585A5A23dEa48fcC0Aa0a9A13800dEC0531,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22463.68912823165,1671640134,bafkreidjhe26vwedvfexbnlskwfcuppx375kzhrokkx52tet5d5nwpouci +0xa5A0b7c3dD5dddBFbD51e56b9170bb6D1253788b,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,10902.916723846154,1671641071,bafkreic6jxh6ssmh3w47zahf4qgntbwp73xlirzgerzfmadudpez22czm4 +0x69eb73fCa2ea111C5E1bc8983Af5F415841dF362,,,,299,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21.61752308,1671641507,bafkreih4rwqsu2matbmbncfmn5ecoucouj5nsrlxvn6lm6mlfn6op2wznq +0xc374B767f4A3073B3b21f31B06498ca7268439b3,,,,,,,,,,,,,,,,12000,,,,,,,,,,,,,,,,,,,,,,,,,12414.075084343052,1671641793,QmZqneDbRDKFQdoQCicXGuc8vNnpBYQvLkJtX4tH8oi5jN +0xA10605CB80c8110EfA6062eAd80C50b4B4230B13,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,2281.909822749817,1671641977,bafkreicjxtztwuqjsceudyakqo5oaqlc3vlvo2lgzu5d5vqt3vdj2la52a +0x02113E8D06A7aB70bEd0cA583Ec441FCF4Cd37f1,,,,,2500,,,,,,,,2500,,,10000,,,,,,,1600,,,,,,,,,,,,,,,,,,15267.339704766784,1671642636,bafkreiaifz6h2kmuioypuxcxf4crtmylkku3t42leht2xaw6a3qoqf4kja +0xeb83E695adCac2e83f290d2d2815FC58e6491d7A,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4100503852195507,1671642732,bafkreifbarrgwjwl3x4eod2dnmg4a6cgmzsmwvurlw5wrvhztz5l7dkcjy +0xe5DfEdCaAdF4Df48F2FCC56663b89eD0Ad73Da3E,,,,,,,,,,,,,25000,,,,,,,,,,,,,,,,,,,,,,,,,,,,23297.028750235473,1671642973,bafkreiepixc5zi6tli5qejf5j7zew35vpk3diufkjfek4pkelhbkhi6qje +0xef0cFa1DF7acC83aF898e701839Ca7Eb72896eB1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,51986.758035683146,1671643612,bafkreib5wevggzdjhvyctfd6hecngn66jkxzlqocokuatoesfpwkv6fpjy +0xB2DB9f595336Fe490FdBfee03cA3739187343261,,,,,,,,,,,,,10000,,,,,,,,,,,,,,,,,,,,,,,,,,,,13954.758124591523,1671643796,bafkreiedxkx2q7n55rckpra5ueq3mq6s46logulebnao26by67cwjm3byi +0x804a0f3d69365ab0f79aFc079e7Ee3263bC7AD92,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,86628,1671643820,bafkreial4gidln2ptcgkra7myyc4fobnp56qpiq74kyvsltqrlsfgsyade +0xf035Af8a3dFf1f90aeb21F9623589AE1330E9e09,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,2647.846301680576,1671644678,bafkreia7htwcyg7i7ibqu3ml3ebexlhcxqv6kzlrhv3vrpu6yk5da6rfze +0x69bAb6810fa99475854bca0A3DD72aE6a0728ECE,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,866.0981003104682,1671644733,bafkreia3fyd2pkqttcuukbifn56yofcw5i7grljjijtx7w7tnsvbkfptvq +0xDE38de354308Fb26c4814C230000bF9cFfa1e404,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25431.539835969328,1671644964,bafkreicvgm6ximnuqsdkzf2cy6vpznjr4qzxmcjyeolwax4yhfg4pcrjlu +0x4F188CbFA8dB689A6f696CEC3054F42022b800c5,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,350000,1671644985,bafkreib53veqlgg6a7rxhb4sv77uecw32o34pxqwesegp5wx6byigjp6oq +0x3C05E68b43D248042368dDDaea42D0F796D3D183,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11505.676072435926,1671645121,bafkreifd7qkedukax22xwicrehwdwly6xhed5gu7l3uv6jg6luq6al2fe4 +0x385826303C4348C39F521653c45C64C60F1eDed3,,,,18000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17747.00171049077,1671645515,bafkreia23aftuyw2tu3ixhyyztlkxbgsqvhtvwijjy5zrdabiui4jifwp4 +0xce68b1394ED29ECAA6974536244d1D2Aad4a2745,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,0.1,1671645531,bafkreibypazqyut4llar2fcttq5msrgykuwaqyltnasfsggpjpn2jtqpyu +0x4f830947dD75615ff1Ce58687173c3E142568c34,,,,2000,,,,,,,,,9000,,,,,,,,,,,,,,,,,,,,,,,,,,,,13209.185409170654,1671646024,bafkreiaualsou6vkoryhc3foo4kabdqdutyj2usftcc5ehk6qdn3jphqyq +0xf2e03bB3Bae583D72D750b3EF443372F92CF2C24,,,,7873.36,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7873.368720404538,1671646155,bafkreidlyl5zwasvslddffctxfbldiqy3t6mkcbyabcnujd4mkuid4ymle +0x37b3a715a9507c85C1845168ff1801799DacF808,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042,1671646665,bafkreihoylg24dedftzejrnypelovsskkmmab3dakb2zudlflehlszp5lq +0x9814fc9368BA5242d558642E0daC716a75757b99,,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671647130,bafkreiaom5isxog33wptuevo4ffy5migifqm3byjnrufxc22c3f3rw4v5u +0xC864B0Ab18B0ED0BeAb72F915Bacb12971FDb73a,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.4437653448455454,1671647438,bafkreiatopohxjauwbmpgfuy7k2xg3qtucx2ov6dvkrgzayvr4zedbuboi +0x54DfEb0F86A367846e42a29Ae6888eE432e87E98,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7000.767644121386,1671647489,bafkreicrggmmept7jq34tcvzcs45prt3hupk3jkw3ngsu6itps26udvxfe +0x9f0a20B351366872600bF5D20d6870af60e2bCBb,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8552.364724743698,1671647504,bafkreih72l7vo2e5ckxo7qnrdvxcv7ikc76vzjj4jh6zfad4hz7on6b3eq +0x750AcAeB9c1d61596694Ea7bfE8458A74147FA45,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,16688.729793849558,1671647678,bafkreign5aqztqpf6a327wo72q5qsczulbtg25iarh4qv5j3rrqdmnvxja +0xe46347662BDa8301bdC0fb4a2987a466ae30Dfbb,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.1897473720075,1671647682,bafkreidkj5xumnkt6otbithwmqxv6sxt2pguzdw5jlkwtgca4cucwy6qu4 +0x0a2a335B7420db3BaDa6a13E354D465a3d6dE2a4,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,109846.9201366272,1671648295,bafkreibtupz55edamjqswiqxq44exdvskg2fxdkywymt3pvftdwwrqyrte +0x1b523DC90A79cF5ee5d095825e586e33780f7188,,,,,,,,,,,,,,,,,,,,,,,228000,,,,,,,,,,,,,,,,,,228649,1671648758,bafkreifwgjm2xr6el6mmzgohzalfb3p3igvyq6lub5myw2p6wevynlmhue +0x6543609d1bc81bF750d597B7E62Ca3AEec4D3FE0,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,856,1671648915,bafkreidkpyd5ftpflo2dtt3l7qh65eoozii5yo7vxxawyqmowa7bkwci4y +0xFeeD2eab7fc2c43D06f55eCD5ef5DB5f2fE77935,,,,47,,,,,,,1,,47,,,,,,,1,,,,,,,,,,,,,,,1,,,,,,15349.364532654472,1671649252,bafkreihwsjwdez5quzcs45bq2pfvmvn5vtugjxzg5542u6dv224t2yzlfy +0x35AC6DB68555D365DCa0b051a058EABAc01851f6,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671649643,bafkreiepcp5n32jb4qsrju3jboo576jmjiygvyn4cocnla3vbhiw4lojxi +0x98E711f31E49C2e50C1A290b6F2b1e493E43EA76,,,,,,,,,,,,,35,,,65,,,,,,,,,,,,,,,,,,,,,,,,,817470,1671649700,bafkreidum2325gue7hnuybcwobzuiung7g2fkftulkrbb5marwyayjonci +0x3bBFEDF29b0168128cb078b6F45c8E0A1bA10749,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16220,1671649783,bafkreif2bhwadw6cpm5u72dr2c2dacyaosrpfgfls67tahwnzbi77cecli +0x37DDC28FEAE0Ac090661c4E7e24989ff4E9AEA43,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15890,1671649866,bafkreibmb4xu5sygldhgeqm6jzarhyyo7qhsmuvibd2lsrzctbrchsqnki +0x9E03523205Cbe1AAb4bCC0e5B01ba734F17c1CB5,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10836.440621163027,1671650177,bafkreiaq7qujlxynbrcvdmv46ijoozirfev2byercwgwx7ei44f4figk5i +0x0573B2F29aB41d9BdfE769b634EE8cB6cfef92d6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671650225,bafkreiao7mfv5a6rte6ugmwcdq6pzysz5dy3q33tnkzwjgctlzqcro3rqy +0x5672b5d5f063239A0e124862f264cC9Fd1f513a8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,140.2527281,1671650528,bafkreihz7eai56w2lpingiktlxuekaaygyfnawv2vploegiudylbmcjqye +0x6FdC859bFaD3bc680647C8C58530faA039e1fc03,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,55291.06377429299,1671650788,bafkreic3rvdpewmrlcdjuxcyc5ukc57tbq7kggcsycpu74qyzim6qtvlzy +0x9A9E41788824424Af0dc689778c73ff954Ff659d,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,99294.22756354744,1671650849,bafkreibau7qzfy5iblxg3rfb22sbrnk2mnkym4jdjvasdmowsvsfertmr4 +0xE9E0aF4Ed6B6D1aFBfE6CE68cA185d00Fbf55d73,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,103369.20372204084,1671650904,bafkreieoqqiqnqs6ivhelfmfjzr5oxkywtedeunvwvjcvz3gideileuexe +0xdE9B4206B1499e56E4417f8EdB7bE4586FeD30Ba,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,13059.149069305182,1671651035,bafkreihfxfcdgyaymmuagprgs47ntyqu4e5xfcubovraj7ty33hc4ee6aa +0xb3c7BB26ad2Ed197900B72afC9Cd0f7bC2255Bd8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,13000,1671651137,bafkreibqkiimjvzukw3rp53pgvbuwjguj3li75wutgki7nh5s3voclp4oi +0xf532920bb32122D6475aD4Cc7634dC3a69631902,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10950,1671651267,bafkreid66wpfxq5xopntmpjp7uicflom772mrh2k22ojmeklno7j2tcjxy +0x419411643Abc7812221e51A5474e3DD44e083ec3,,,,,,,,,,,48,,,,,,,,,,,,52,,,,,,,,,,,,,,,,,,14356.360236750079,1671651276,bafkreihsyal3sfucka6d6snudj5qz73q64m44hz6aaq323hlpwnrlr77hq +0xeDA4a17d77A9612dAf471309b454E4086D107981,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5449.9302394,1671652184,bafkreien4vj3a7ism7eryxzynlpqockdiuwrjp4kadvxcofm6zazziayfy +0x65fB8f1B19a04B7b189D29ef66E242649B4faF8c,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2000,1671652275,bafkreievptfxtjsuc54iyozc3z2mg6h6loomulzvxoklsrd3pofmfiv2ja +0xf1f1CEb38591944912622aAd84f06C59c0c1428e,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1007,,,,,,98584.5676,1671653005,bafkreiafx6tuxzag6rqnzmrby6w4fibqf4gvld5exvbj7ntzvjmfd2rosa +0x5d8AC519a5a4866784425ccF92F02Df93b1C1F52,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671653489,bafkreibbahj7ayvkqjiiht62di3ck7ltpsx74i56q2ovnrd6bza2byd2fu +0x4A377Ff5146D288523F989771c9E05FA18ceF21e,,,,1,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,515.7149141386503,1671653550,bafkreihpabcul3dtgbbylmbyzqefabahmaa65atz3vc3nmh3ypmpwkm4oi +0x4de0309ed63968A1c249B8ED1a3CB5731676e908,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,6282.228666599737,1671654081,bafkreigjbcxo37yxjp2tx3ypbbtsncyid5s7lmzyvq27ac67rvg74p3vny +0xb8a706bb3eA1AF5002b7a7370d06EC12a54721E5,,,,,,,,,,,,,1,,,,,,,1,,,,1,,1,,,,,,,,,1,,,,,,16490.07217058319,1671654104,bafkreiahpbkxm3wtm4hibg75xqnovll6ee773hvrwmvg4tuurga4m2jthq +0x9222cF504c11DCDC8642192917274b7A9884ea67,,,,,,,,,,,,,32000000,,,,,,,,,,100,,,,,,,,,,,,,,,,,,2964.446538678142,1671654237,bafkreiahmglthjoyplitwgowubodhn5c5safx5emucc3hguy2rit5rwbeu +0x900B4a841fb7948680b0a149B41bF8Bd03702074,,,,6900,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6789.230418983806,1671654372,bafkreie2kgusr2vowkgfffqa3pvotc53hpj7u47d5srootig542b3ds724 +0x1aD7C3d3AC2118335D5437e46BBdCcf69D1f1a4f,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84977.45018727353,1671654372,bafkreihbtqrx457ltogzi5qjmi6ygwijko66ew23esw7v2nh7y2lnaxz4e +0x6AF50342Efdeb600CA1D33a24B0f1166c2A2080A,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,2042,1671654629,bafkreibiizkzdzhin6vsfbl4jul3mrjvzzdqfcifc5z627rfrlflg6fpbm +0xFEFc2850B25FE1AA3e9Aa154DF61C6B9bC7AA374,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,27309.105629333568,1671654662,bafkreiaq3d5yzsw4hchyp733b4vyec5jvjbmxywymg5i3pxbe7zbupbuiy +0x7DE6C147e1926D1cAfBc2d625Fb395e3e1D0C7b5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,13012,1671654954,bafkreihtrbn6ghykaiq3zw2lvi6kzclsofbxsssj73mah4lkopbgaeiteu +0x18a244147F9e7fbaef8F871251C94bfF190556Ed,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45470.24398548903,1671655076,bafkreihnqipccqfkc3rd5bhmham5v4xwyhfs72cnhn2hrxs5rltg6fiyhu +0x6B92686c40747C85809a6772D0eda8e22a77C60c,,,,14,,,,,,,,,4,,,3,,,,,,,,,,,,,,,,,,,,,,,,,1.8224395452187836,1671655116,bafkreigjnskn2qfyusemwefajbrvzzy2zybjavxydiyotp7unwg4skz5eq +0xc93f75b306d164c31112eC659D4C1714d39d69fD,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1000,1671655152,bafkreidawksjhbqgb6y7gi6d72nckfgsdgfndpidtblcqmxp3jczyahuei +0xC9D8c1452f4c7B5f45F4f9F1dD44657682fCee59,,,,2100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042.534648190922,1671655341,bafkreicbodpg43oe4boautjzb7z2lf5cuo57brkqrc7h4o6mirxoaqtiay +0xCD043AE14572cd83F26CEb8442e58C35251eB7f4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1003,,,,,,898.4436984240933,1671655353,bafkreigwsolkkejtumgcz737er45xij756526guv6alpeon2zi5lddqnai +0xdC5A3eD3CE12a78c9b4C8CbC370501ff06F5D90d,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,12142.235455293927,1671655391,bafkreif7zeao6b3nraqegsoeqolslrx3xveo335m4yqltedzvborqvp4fa +0xdA83e3AA008994d8ea172fF85Cf4813763158057,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671655516,bafkreignichc4whhgazexvxxc46ruurreng5lu5zscp2365i33cw6lcygm +0xCecdA5fB8cc7F905Cc1ef70c8865E78069cdfb40,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671655555,bafkreibwma4ar5qljjmwaqtrexoc6tppqml54s4icufv5zfnjwjsrx2o2y +0x134E3bef77905e884F0067bC5d0D48F6D30F2752,,1,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1100.5144866263324,1671655988,bafkreicn3knrwsewoklhenpb5v2zlxif4jc3lc4fpzkycqaedoguxvyna4 +0xEC095048b48AD1Fce13e684C4116d2ecf60db315,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,5858.467567551301,1671656042,bafkreiffywr3nqx7oev3xn3x7pd4h37anrfiephw5kfl2cqgpyhs2sarhu +0xe2A3800884e7C1058FEa4bCBE4e3A63527b2CCb7,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,2920.0267247167076,1671656416,bafkreiadsjv2gwmer6vwzdw4wff3erj7xf4po65e5uecohisquncgoepyq +0x79989C6dFf3A97B097e7DBb6e38F00b21fDB8c7C,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,2929.4825643397053,1671656448,bafkreibicnwx3gbessagtcqh5z7gmprafbzjjrew3t5bf7krvfl6dztx3y +0x7eE5eA1f769703B755A2F7A7C76E9C00fd2aB8C7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,11950.50805695091,1671656534,bafkreifsqbyackwojrjbp7lg6l5h7z4mcobpivoyjc3ynwoquaxzczjp4u +0xB9b2c99200d2FCbfaa901ca61346053D200C8446,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10950.0000000407,1671656627,bafkreidbxriih3jcductyfc47flbp2q5lnroulake36gbczopqrzsztr7a +0x36A3294bE4376Df174364f8Ab61322bdD7390B12,,,,6000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5909.207408914739,1671656674,bafkreiambepjozpmdzmbyizazsy6koh2f4xclicpub563n52sraqwhvooy +0x2749b37ABeefA5023c2b046379988F0B6F6fE793,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2898.0000004795097,1671656680,bafkreihoqxjgttjbmok5nxtmkakhq5i4kdwtfbetdhchdzp6xabaqazu3e +0xdEAE56E368F56A1F2E32aF5481E13B4f5aE3fa4E,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6500.00000310253,1671656701,bafkreiavao77oftyyw7cdvfnocvaeglzghraqjjf5mq7aswpqhjufgwfc4 +0x6CF0a988dC3ca51236c1BC2a67ffB9F88d927Ee2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,11062.247709522946,1671656780,bafkreiegvshyso7n3yak2wv22foa32dc7mzwtdap6nu4mr2ztpw2c6ihoy +0x20B37032eA53Ba81E78BE3eCFF8Dd2fE33646847,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671656928,bafkreiepoadlf3zwmncrgiavlxy7bohepjvfw44kbsj5v6ujkzc56oe7j4 +0xd3416F461518E418e358b33C41Ff9e1287CD7041,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671656967,bafkreih3jwuamlxzlcvcujbnvy6cwj2qjewu2wvxukekbov34hukr42fiq +0xc5e4b43E291C8D44971dD3842EEC1F8CAac77561,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10950,1671657362,bafkreia7wypj7kj3ui6un5i5ll3qw4h4vewqct7tg2l7vab5g6igfw5diq +0x6F32bc68A5A05F8f72F08D2c2Fe088d5c0A8cf55,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,8811.89388045881,1671657396,bafkreidifyvt3pmpzsn5ib25qfrilgtkm7j4exwvokeywzyblztzpjkxkq +0x9244BF7bFD9ED40c6bc31d28f392996eb671aC3d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657415,bafkreicg74b2vogjxa3uibyc6peube6kwe44uzpdbtp7zurjjncfey32pi +0x8Ea5bE2b52CE359BB95CD19d4718B674aA923c88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2902.29,1671657441,bafkreicztmc4yiwaiat34a7ynfurrqsfickrjmuexlzqcplkshcnk5blqy +0x624E5a45c813A1cc8907f1A0257EAE6E29b3d1BD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657452,bafkreigcj4zqyyajy55ru6ds33soagsimgzad4l3ml7kaeu74vaznwyyc4 +0xc9700f3dd73fD677ebDD49A9e3d2140513B6f732,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657491,bafkreicflvmqavvcojhsxtbrmgve25d7pq2zxntl2qnty5j7azznt5ofj4 +0x6Fda541E1474612fa0529F6a18A7Ce222F441D10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657527,bafkreifprys5mfenw4apcabjdpvljfj7xej4kbwkd26caznti46r7sftcy +0x7730378648cb4dE782bEe0cAbb43140248c9AF97,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,20200.85762256548,1671657545,bafkreid2ggwht2bf7m2mz4cv2sgu6ajwwokrn2fcbtarlom4oihdd34hgy +0x31086e56834D4F2A24044a2cEF6CeB71D6126Fe5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657579,bafkreier6426z452g47e2pua4j7ifihw2iixe4g3ds4jwnpl6fdr4gq6my +0xf821B10a64aB148d8173C69FA9531BaeE36Ab995,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657610,bafkreiadci54kybgttzn3jnd32fmcx4diig7v4kppdy7v23hzcg2hpaf54 +0x1578769b8cC98a562D3625A0634D95535BF587Ac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657649,bafkreifgyhwzxj3afnvbypedatlskmksdnpd6hidli6ckft3dtdwjhnsku +0x945191ab90d5B511F80c297681e5dE54E55c50B8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671658048,bafkreigdf62uvdbp55wqijxkqaijvhyv5btkxrcb2v6tvvpfdppvm5elae +0x62e18F2672AC1437b370CF36b27a69A17aC8EfF4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,5796,1671658085,bafkreifqqgj5b5qfidkx7wizz7bnllhagspxtga6lajbhninwwsxiscs34 +0x889f33501aF3a14629f5be4Ee409575Bc35c5cE5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1776.459651319753,1671658145,bafkreiba43lmovwzz23ee54vkdzbehqqezfqois5rioxcaagjhirsf6kim +0xb2F4A2a0e400547b2b9F6C3c058Befb3F5E1279c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2898,1671658177,bafkreifcmnhuv7bsy3ostq7q5jc6ur4go2gv3htnx6wi3attkdia2fh52y +0xb4FF15b64DD359AC7176C5adc32f1C84D52Ce7Fd,,,,2000,,,,,,,1000,,1394,,,,,,,,,,,,,,,,,,,,,,,,,,,,4412.126969585802,1671658789,bafkreieaxpr37v73a7a42gka6wlb7uwffnxuoa2d52mev5sdekl5ouoa3a +0x9BD91abdf39A167712B9F6c24d1c9805d5FB9242,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,33231.60142394498,1671658869,bafkreidvr3enytsgbo3dqzdci4fqmyaynsl6ng5dkptaxlacgq35a726im +0xFdFfCa1246924dE90f54f867db89476D011e5cE5,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,41175.27455460679,1671658939,bafkreih45htgkeldsdefwrvfzhnnrrvivwcutotz7th4k3omexejzvdlay +0xdbf049b470e7cdb1BFc19D9Ca15B1C8C1128aa20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2091.3640515461043,1671658985,bafkreidjnywwdhpinhnw4lzksirpzzyhskcrd76beppprwmlhfpei2e2py +0x68E58f6cC75178840B352d011D6E7B333c1de495,,,,,,,,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1.103630279089659,1671659125,bafkreih2vyrkiymq744oeeuihwxawbq4ncxthkfetwic3sqfsqukbp7yuu +0xD35ADd00d45e8a3e0B7C1b67496662e4CADBb0f5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1851.8165056139796,1671659295,bafkreiftd2dyosy3klfhdqrkw5b5yqouajl4leetrio35ebodcg3nr4mxy +0x051D7129a5579503Ec9554290Ee7b765814aB1D1,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,2042,1671659444,bafkreibbnt3l35gp2kqrs7hmo336wyxq574eyhw5b3bwm4kamrbqtbhxfi +0xedE4a32DdB7353d883399BeF2Bd9Be650CD81bf6,,,,,,,,,,,14693,,14693,,,,,,,,,,,,,,,,,,,,,,,,,,,,28122.003323506586,1671659529,bafkreigekm7wcyv54libv4ulafe4ugfgugripivxbdlefzx63ives6tm6m +0x716415d5AE556D4888356C83e7a46A77eBB72F04,,,,4,,,,,,,2,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,24125.813001727915,1671659605,bafkreigqah7das2efaavi6ezannelxibbnft7c2bom4rgblipgum4rj76m +0xB5DA9A455F931EadA43DE8e30F52dA0d668a1099,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2212.159365720051,1671659716,bafkreidu5kz7l2mvqwpgyu6vnny7i6fxofuzfrmnxu7nunfyhisf5e4q5i +0x23bdEb4396BEB7e179c65A3FcA025EA2ABC156D5,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2224.0100869710814,1671660028,bafkreihhtmbp3ym4z5ezjf33acffnoieyts7lhr4ybox72oecmy4zs5gli +0x7E05083D9D56b306909db26D93c041D7B3b93691,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10119.532995683261,1671660113,bafkreickfxzo7225kgqcjivcedco4i6tuvkt7n2v65ejg5q6k5zp3n6nga +0x9bc40dC6D5753dE0a0EAF02C2B891ae5C95EBbB2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,3400,1671660314,bafkreif4farzu3abr64y3iyflfpllhfnozu6ny45p2lj4cxtj45k6eu63a +0xC6021b536a50F8C3B5Ed7e13A31A8bCf232c1688,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,47310.64232747218,1671660469,bafkreigyb5xpofggaulxycbnoemb7egs6zecsibsy6qsxfnbabrwna5wai +0x7Dcb39fe010A205f16ee3249F04b24d74C4f44F1,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,53295.30601819849,1671660509,bafkreieuwgcprbuo4zenduoznrgokpvorhotbmcky6bf5ivuk4flp5prgy +0xa05DbE7fa2e331B34BB77e7991b902dD2cF9F853,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25016.58521475706,1671660686,bafkreiajkhciap6ruo4gnylmlt37xigmisbn3gvw3vmdhqadve3awccjnm +0xCD02c8b722c8E286fbb353Fd7Bf814Bd38490C27,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,14249.064676033824,1671661583,bafkreigihwsbqkylmtlbbbc5u76drjb7jfky5wq6ub2rpyg6xkzjfqibvm +0xbA9F68fBF20a0316D80287d7ABC9B1377D622121,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,25225.6296274007,1671661709,bafkreibbcya3qzhv7by54ezp66ma7ycvnulnlighkc7jxq66fh37aubqju +0x1F21bC40b2E1f1A210E10b103bB57bfE8d71EEb5,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,81.0085799024186,1671661721,bafkreiccsxxbas2o46kuan24ahaotq7o2drc4u5uex7nrsw7kkptc2sjmu +0xf7225294B6C87790880926821378F39c60C8baFF,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6802.204701131592,1671661885,bafkreib2ayddk52roeyjcu2sgytkbabj4yoxxck6262dijl4u2pszukptm +0xDCA60A4fEeA2337D97380B0aD0eC4ADBEA707855,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,9558.203593726208,1671661920,bafkreiexm76etth6gzmyvs3sl376rypyrbmyunr5iee466i5lxj5ss7utq +0xC4d09e6182ca48cD7F248fed88c5f3a70e2af58a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1468.0817866285727,1671662344,bafkreidpdpe7sgyt2icg44c3nh3dxk5nc67etpvusmfqxpnkvaslvn7rsi +0x3983b6995AdCC40FD3faaE1fbdbc201c359366f0,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2075.9306179774576,1671662874,bafkreieqcndqzqrfawsukg3cicxo35wdkaolnvz775icgicfmpmybo4o7u +0xb3FD5137AA504Ce9c2636521A74B41daba416837,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,60098.92154042236,1671662909,bafkreict634gltarmef7waecioiacjxyqv4axzyqlvmoob763wzfwp26ny +0x122b19a4Be93d7c2b4522ebF7EB3F1b5B0343b2f,,,,,,,,,,,,,,,,3,,,,,,,1,,,,,,,,,,,,,,,,,,260617.96560277,1671662946,bafkreif662xi5ae63kulfifzb4e5ms4txmkdhbkksiqnpesinaaicqphjq +0xD75CdB32aD74116C300db2C10bFB164648DCdf2E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671663058,bafkreia3bjmzyms6bo75tbqgpewpwdycobrffjnvycl4oookqcg5g7nfau +0x47FD47D2B24389c696371284cF8aE38e19F438a0,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,240.62166577091983,1671664047,bafkreif7ny7qdk6g2ucpqc7mrw5q2iaxgrlxe2cjc3fyt2b3nibc2alb2a +0xC2746970b1a4e35106D78A9df7b52732Eb9F42f0,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,1,,1,,,,,,986.1247436795923,1671664069,bafkreidbcl7syszlku4x6jwwbdk5z3jakrzt6ywcwudeyuprjvtbeo2nki +0xDCBA0c55A89cf4705C284cF72a791587f37B78f6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,173039.15399182626,1671664331,bafkreigucwq3i3voykzmvuouo2ojztxilnydw5e4nvuv45fy3iklqczqcu +0x9571990feFaD6184f99247f6AB85E4c1eec8834B,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2044.551435719557,1671664580,bafkreibru3nab27zcrye46uo2ayxeg6nnkcvqhe6ffujcgckb4t26drcza +0xD4bd599016DED05e65594c6E6306308e5de00100,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2552.4107759739068,1671664986,bafkreifo3jhnorrbiy75jg6rchn2jpyfifmyhpbhwsgplytfcxmh2tizsy +0x0F25809d8E83AbC5Ff0f4Ceb8A8C39c79746d0B6,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,1414.446908227287,1671665690,bafkreibfqrjengb5fcdqe6adajvsryxgsjywikis3smvi52vurxmt2pjrm +0x06870BeB1Fd22C3a00c40DA9B659cEB2c1EA4cA4,,,,5,,,,,,,,,36.5,,,48.5,,,,,,,10,,,,,,,,,,,,,,,,,,179357.61491671368,1671665784,bafkreiht5dirdi77mwvayyxbla7yx5e6v7yxvxa4mocrczb5say3xphha4 +0xF235cd60Bd5195239B8F5eD11C1442745B1be2bc,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,756.4858539866252,1671665789,bafkreihqzpafgyoqpzuhmhv2wnod6iluap7mvf4qsnq6j7figpmq4553ci +0x2c74fd427E36a5c22f164093147EAcE027ec5706,,,,3,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,131632,1671665801,bafkreidjez3gs5tzeqmz6hnc5a6h3hgjwgovsz7sppp5jt73pwnbkizz6a +0xfb05238fa4B01f9B703685b620d6Aaa9c306c7CA,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3527.5866795496822,1671666048,bafkreibmspwfjdaygk2ovsmkfng3zssypijpp4odhcvipxo42qyblvisfu +0x5eb8FD22fcA64B72f36A0C69b7C15Fa10C7a1214,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,32335.34618280732,1671666066,bafkreicrq2yp26vvztdscu3yuwrag7pnmo5slzeleb2sjtmag47khzgwoi +0xb898e10C074e1dB46F0C8e89A2B79A95EA256f5b,,,,,,,,,,,,,,,,,,,,,,,12000,,,,,,,,,,,,,,,,,,11375.577232800388,1671666140,bafkreidey4kkejzfwwjf5kuxblazkhyp5o7fkpwbsiw4nrjchdmmtvfb2u +0xbF0D0A4F0a1b4457C08389300bD900a8d8085e9e,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8736.519495941582,1671666231,bafkreif7nbfwhcp2i7dccfhsntyhzlwncful5rpuborqewvnufapsaiqym +0x912465725ec780B378f21644F1F90C8D4b06d47E,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,10.3425632033978,1671666433,bafkreibwv6evdmrufk2ii4ch5q5ictaazifmcowg4lwi4y45usu56imoai +0x5a488B762cA0EA05321405b192fAB0B66a93ca28,,,,83000,,,,,,,83000,,83000,,,83000,,,,,,,,,,,,,,,,,,,83000,,,,,,415475.34627449024,1671666599,bafkreiayh35x673yskkrb2gdcjganqdiaoihjrbyzv2okcm7snjdtun7py +0xFb3ef998D84b7e46cfed2Edb4144bd7538eAB858,,,,,,,,,,,,,1600,,,,,,,,,,,,,,,,,,,,,,41,,,,,,2070.9890390709616,1671666774,bafkreig4vnhazemaj5vzln3otrkqxhk3ifm4bdlplqeejlgqw4awyebedy +0xbE6a5992D259990ddF43DBd681568Db292BA47D7,,,,,,,,,,,,,7000,,,7000,,,,,,,7000,,,,,,,,,,,,,,,,,,17599.76052206266,1671667292,bafkreidpui35wnvg3zqrpkojho4apx2v7vyne6fplxcrhjvg4ahyfbqoem +0x631EC40dbAE6ee11590549b5e270628840093A08,,,,,,,,,,,1,,1,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,13094.867416945654,1671667750,bafkreigqqsogf3b7rb7wknukxou6igpgttssfhmopdrn3xmp5mslozrkby +0xa2F0448f346cE50B9029506c88Dfa58d07bAF880,,,,,,,,,,,,,,,,,,,,35,,,,35,,35,,,,,,,,,,,,,,,110.42470009026759,1671668328,bafkreied2mnxofjwzrxlj5gdbzzkcsq2wjbo2udpirnxtogrri223pzuvu +0x656Db6380A7A566fFE8994a20a4C97C00a271Bf9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11375.0062630805,1671668356,bafkreih4dmjlsfyh3kgz7idpv7blicqorsecvwpaiahumomynboz5hbyae +0x21587b4030e875E9D9B70f38E314e8E2a8b29B9A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,25200,1671668520,bafkreies36nscta3djtfdeyuwzype4y3rsl7amwtrsolwcdv7wc5ifytha +0xCb2fdB77C60bB4AaD4ED71804Fc403f1e650e204,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.3,1671669520,bafkreibn2gpzjsypkz5vs2bv2mruav3nqno4dcfijtrwzkphdny4n2nnr4 +0x71be99c9b5362aD07f7f231bC7a547f4119C6073,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,31805.253011548793,1671669824,bafkreif2y4m2x4fxx2tsiu4zdwo47f6ktjhqo2u5fvzjrgul46hfzwe6gy +0x584935F602F669AA9296F5ef287b6461E3999E39,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11111,,,,,,15034,1671670235,bafkreiekfqznecnxltp47ru4czorm2fabbxdbtfvjzj2axzfi6waqzzpb4 +0x0FF0c7f91C0a15DbB79c6934970d70Ca7fd956bA,,7,,10,7,,,,,,,,6,,,,,,,4,,,,4,5,10,,,,,,,,5,7,,,,,,25984,1671670339,bafkreiezq3b24pqbhu6se236nfp5gi7hqcfmhxbng7lfwhyernnbos73xq +0x713f90407fc49f0BC59A6661C23FB67692a80E6d,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,20320.499023843837,1671671770,bafkreicb3yy6qtcmb4xoi57akld4mupcbvl7jfbcbrwiffz7uiezpcvpwy +0xf9eD4dE3793Bc577C8EB1A269387d28cf11DEf2d,,,,1,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,3895.469397543145,1671672525,bafkreifdpd7cak2wznyad224g6dq2bm6mos5ymed6fmikxjbo25y6ep6ga +0xC92A13FA4C59f5349B4d45E8667547D8419F0906,,,,7,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,81991.582158161,1671672946,bafkreidi5475i6qtidej6kvyjsw4i6bftzxgjnjyfm3ogjvshna6e2xify +0x4B1e684d5143eb7435E5D78385FA8cbdCcD8f7EC,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,93975.20901704718,1671673207,bafkreiajwlidckph7snkhw72wo44o7mvvzuano73lmccmpnri7cpi2y7ea +0xfaE48b5E9b1f38BB8D41B3A43B632e72Fbb16d27,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,876,1671673279,bafkreia5uk6rps22qkkn2zgndsgxmz6rex7yjezoiqy7zbkocedl6dge6u +0xb01E95F517511E0616263CFC1ce6DA11211FBc5f,,,,1,,,,,,,1,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,10086,1671673353,bafkreidfkq7sadmshfmjujjhh7ot4plnpfhqcncrzavefuejz3gjvod3x4 +0x50c8C602Dce643aFab7C1C7b18dD5fa6c1a207e5,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,29686.0035,1671673464,bafkreieufvgbpwutw7vdm7f7hg563c6cxcx2rhxm7veuxwdxolcceyrzmq +0xD946f4983DCe96A0057E34EBD27f807125504d15,,,,13143,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13143.100589331849,1671673480,bafkreifudd576nus3noxswpqi5sptyvc6ovv5jkf3wnzgz3qyq23iojt5y +0x7040e9Df2f2e6EB8DdEC539bE0DFd156902F6B7E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,10949.6271814,1671673492,bafkreia4wb36u4zpnfehzcx5no3sdyhkzzsjlpvbt2yplmzppleluezvzm +0x2404D6857d7E90c3eD9E74E0d372a4d6d7399504,,,,,,,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,,,,,,,40372.023661234765,1671673530,bafkreidscmefuc4eyplywpivqcenhfd5iiohczi2eory3ywdohrrsuzwry +0x96D2f13C453A7d210EA3CFc55f16C86cBC940cda,,,,,,,,,,,,,12354,,,,,,,,,,,,,,,,,,,,,,,,,,,,12019.633873740346,1671673650,bafkreifuzqpqb7gau6hkzldfbnewibe7o6rdvyp3etgmujtgppnxpimsn4 +0xaDC72950B98268Df2b19aA5aa7Ce04C077F70804,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094.721944617451,1671673856,bafkreibu6fysmaej4ddpm2jeyk2whwenyyahbqnx6utgr4c72zl6lzsdeq +0xa0444EB9b3c49b5F1C2044A996d06c8b8BB6D252,,,,1,,,,,,,,,6,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,11855.950604989528,1671673875,bafkreidvpx6ova7jdqigfczgi37mhz244zoljxyzd3my4ekn2it45we5pa +0x43b5FcFf3CB6fA36673cFA65a6f71C9AfD182E19,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,164843.58943203607,1671673899,bafkreih47rvz42rakruuh4ubpaaq6jja2wynzlzczt7wr7h3pdpfa5nqde +0x48FEf92b7e4E8dE8338C87B346A982bCafC81a54,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,20304,1671673905,bafkreigakqhfhmkr2sx32i7zkh7bgj75ereod4jj2pu7j6bkkkuyryykoi +0xfb147870225F9492B8E2B705f92856d43f8D1D70,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671674015,bafkreid4gxjxmqxtl254igkpdjnzykqfjbhfx5zwxf7pqah7x55w3cgima +0xA7B100ecd7DBf8445688297d889394D001563A87,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,2136.188814264471,1671674077,bafkreih6ngj5ozqiurumdogueeuvcniufgvpc75a7h3iuisvqfomw6tqoi +0x16a9E81cd347F4Ba87B14E64668a715A8f278Bb9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746.365920408094,1671674138,bafkreievs2oc2caufcrdfbn4chnyhy5w7qoveakoz2f7y77b364sx5jsh4 +0xa242cA5D7AdaFc84Db05B4944057f0e83Ba9cA2E,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3059.072133988645,1671674148,bafkreieoo23zcq6z4cektln2ln2nte447thq3iptc6c53jzgufli45ibda +0x40a5168566a8088753Ba94Dd45181d205074Bd81,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,50372,1671674329,bafkreifu7uodqtfb2z77fbi5yy7hnyfed2ltpmnllafysa33qavhh3ixeu +0x020cA66C30beC2c4Fe3861a94E4DB4A498A35872,,,,82,,,,,,,,,5,,,,,,,,,,13,,,,,,,,,,,,,,,,,,1171929.6774583901,1671674367,bafkreic4nxtddgoasutzli2prf2qqnr2pv4fsk2pilrpv4bssfnurjgbne +0x52699374E0447044A62778B35a49d373fDFeB0C3,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671674380,bafkreihjv26g3u6vye2iikbpqjn6mo2lna467ilpxft5x6thws2qjhagdi \ No newline at end of file diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index 58cac24e..87a9d589 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -4,16 +4,22 @@ import FileStorage from '../../../src/lib/storage/file'; describe('VotesReport', () => { const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; - const fixtureFile = `${__dirname}/../../fixtures/snapshot-votes-report-${id}.csv`; + const weightedId = '0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927'; let cacheFolder: string; let cachePath: string; - let cachedFile: string; let storageEngine: FileStorage; + function cachedFilePath(id: string) { + return `${cachePath}/snapshot-votes-report-${id}.csv`; + } + + function fixtureFilePath(id: string) { + return `${__dirname}/../../fixtures/snapshot-votes-report-${id}.csv`; + } + beforeEach(() => { cacheFolder = `votes-test-${Math.floor(Math.random() * 1e6)}`; cachePath = `${__dirname}/../../../tmp/${cacheFolder}`; - cachedFile = `${cachePath}/snapshot-votes-report-${id}.csv`; storageEngine = new FileStorage(cacheFolder); if (!existsSync(cachePath)) { @@ -27,12 +33,15 @@ describe('VotesReport', () => { } }); - it('caches a votes report', async () => { - const report = new VotesReport(id, storageEngine); + it.each([ + ['single', id], + ['weighted', weightedId] + ])('caches a %s choices votes report', async (type: string, pid: string) => { + const report = new VotesReport(pid, storageEngine); await report.generateCacheFile(); - return expect(readFileSync(cachedFile)).toEqual(readFileSync(fixtureFile)); + return expect(readFileSync(cachedFilePath(pid))).toEqual(readFileSync(fixtureFilePath(pid))); }); describe('canBeCached()', () => { @@ -68,10 +77,10 @@ describe('VotesReport', () => { describe('cachedFile()', () => { describe('when the cache exists', () => { it('returns a votes report', async () => { - copyFileSync(fixtureFile, cachedFile); + copyFileSync(fixtureFilePath(id), cachedFilePath(id)); const report = new VotesReport(id, storageEngine); - expect(await report.cachedFile()).toEqual(readFileSync(fixtureFile, 'utf8')); + expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(id), 'utf8')); }); }); From 9a367317741914d7332e5e4d96022b9ae110d3c1 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sun, 23 Apr 2023 00:02:09 +0400 Subject: [PATCH 028/103] feat: add reason to votes report --- src/lib/votesReport.ts | 7 +- ...d62851ea47f6072f2296ca53a48fce1b87cdef.csv | 94 +- ...451459ddd18d4b0bce37c22aae601128efe927.csv | 2352 ++++++++--------- 3 files changed, 1228 insertions(+), 1225 deletions(-) diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index 270d6c46..7c11dbf6 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -66,7 +66,8 @@ class VotesReport { : this.proposal && this.proposal.choices.map((_choice, index) => `choice.${index + 1}`), 'voting_power', 'timestamp', - 'author_ipfs_hash' + 'author_ipfs_hash', + 'reason' ].flat(); content += headers.join(','); @@ -113,7 +114,9 @@ class VotesReport { choices.push(vote.choice); } - return [vote.voter, choices, vote.vp, vote.created, vote.ipfs].flat().join(','); + return [vote.voter, choices, vote.vp, vote.created, vote.ipfs, `"${vote.reason}"`] + .flat() + .join(','); }; fetchProposal = async () => { diff --git a/test/fixtures/snapshot-votes-report-0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef.csv b/test/fixtures/snapshot-votes-report-0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef.csv index 655d7396..22f5a039 100644 --- a/test/fixtures/snapshot-votes-report-0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef.csv +++ b/test/fixtures/snapshot-votes-report-0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef.csv @@ -1,47 +1,47 @@ -address,choice,voting_power,timestamp,author_ipfs_hash -0x9c1b73E80D992389078a8ABc8B6039665C4846e7,1,20.992980242869496,1681954050,bafkreicfll75wtsmsvjk2oksmvfrwxtdduf72hfygcouwnkjitrzkx34ci -0x5fb1E3A4b8968f6D0B276514A22eDF3a88B3FdD6,1,323.2730220659731,1681954081,bafkreiho66x5sasd3h5bfs3on7bnoxiwn55x2gx4kcvq7el44mkqf257fi -0x44c80295d194cf25BDc3454b4016966ac319E848,1,0.3,1681959291,bafkreie2hie4f3lgv3vx3nocdq3v553qmbsgjnqcbc7ezcda4kk3h7yzua -0xa1ab28131CdFeca1eC167045C8DFb9d2Ae75Ad0C,1,817.3041281237311,1681960650,bafkreigigiii3euxs6vcxrocy3rexs63gurpgnjbwgeb52zpr5jsqlbo74 -0xb6d17997Af674EF938BB3ead45bcbb54284A9a9F,1,4.876577470815307,1681960739,bafkreifoyraw5pz7d2j22bgqepzvo6gx4kyxgxzx7riavtkl2uozhax4ve -0x843146d71d57af0E731F85dB1F094643776C8E91,1,1.0076503593247748,1681960828,bafkreig6gdyx5lkx6sxqxxfs5ab4n7recafwzmwhcgzysplh5j4aocxhf4 -0x7683c36e3067aD69e2ac06DDB21250EAF4e4Ffed,1,39.08821671397446,1681961100,bafkreifrbmteh7tzfptlmf5sl6or7hw4jffugchd4aentjmupniwlfhtye -0xF860AaC8d4D61370FAED243C6C4C7c93dEe65679,1,0.00855293507004935,1681961562,bafkreidnd5qbsblyihevuyvziccinghipzkgymrzkliq7o62sehh2riltu -0x9261FB273d1ACcBe2f15df1C254E7fCC971468aC,1,10.759693759553794,1681962445,bafkreig4yznqgixw3r2wkfga7mgsn3ggoec4f3ks37yldcdmefxosx7tny -0xb24869a014065b2255797f98DdF72c8244f6F476,1,1.1945708804510298,1681962867,bafkreidelkqkm2s7vyt4uappt4df55t3a6pi7gr7rux3cmscconrc2tqrq -0x4C9640a65af420A339cD2D5B2cE8D55ae83BED1e,1,9543.953905227729,1681965054,bafkreifmgrtoczi32b5b4oy7egfynuc5m6thcsycpkfcaqibmnd6mtamge -0x4214C3DD58651fdC5d4a52aB69cB16433408A169,1,0.056,1681966678,bafkreigkuyfxej53rid5sa3v5ihimgjbxhjxesqfl7eckkpiutk7yjjte4 -0xB5A65a7b0373e3d6385f5DE7F583c299982B865B,1,0.03526254356347258,1681968420,bafkreifc2yrjrl5nx54y7yzh3heidiqqzenbqvuvbvoasqeq7ev4wsxscq -0x5BBC261De4Ffd714585d75B242575A2C55e7d89f,2,0.2676423905614063,1681970107,bafkreidacjzj7g3r5umsatw2ltreq444e43oe4w56a5nxhcngcjbgkdpby -0x4895bd5Fc670D3c657064bed13A5180e9a3C2C39,1,0.363410151520198,1681971330,bafkreiexqahvhexvznntpp36rtcnow4fbwap2zuu4wjahfkh77uubnm3x4 -0xF943437C351aCeD31c5a5Eb224B107E99DCebaf6,1,0.008783680598275861,1681974497,bafkreihgagmyp2f2x3s5gr72g5tk3fkabkt7ukvhb7oc3wglwrtoamfzpe -0xD41cEF4f79a2cF4b9Ceb670E64029A93a62b8FB6,2,0.047011016629204774,1681974851,bafkreib7elmyi6rkjszq3exymo7dlogqqzo5fefsgmvoxlbgphbcsblp3i -0x6c07619AdB26f83b81B1DC8e5AA4B71444F50053,1,1.0101487431893934,1681975703,bafkreiadzxyi26lfvtf5h33ebyexd24lkps5urmvjpsuxpwannkgbqgsxy -0xC1d02aBAdc2fed2619512ADeA1418Bd83490E66d,1,0.25336116942241244,1681977973,bafkreicfowvl6tad4u6olez335tw3lrj3kqfm2b37jipgfzvsoorkbglb4 -0xd3AEb3A729EF9713847696E1363DAeB378474c06,1,0.007117064411653239,1681979081,bafkreiae6iwec7hbnrjctazlqo6wuw5tuphygnxt7aqtpm64wukpinjw3a -0x614168aa18fB121833Ec9E55f9a038D4bC2E2Dfe,1,0.04257576529766999,1681980827,bafkreidywpmusf2mp374rgryu43z23aghfhw2xfs3nu6mbnnmsfqtjh6yq -0x3A3495A75167C40C29F7f4cc8b844A418aB0b927,1,0.1187,1681981769,bafkreiahqnyrtm53kd4iydjodxfbc6iy7f5jskabaubg5ufl5izenwmnxm -0x43Ed9D9120fb7e9E2de1A9dEb7BE2A8B75230DEf,1,1.0370890131067922,1681982003,bafkreighxdofakupv34s5bmmqfo2psn2uywjnghjw5mx4vee6zvyzuasce -0x241202A851dBb3cBE68a42Ac2c7f11aB2628a5dA,1,1,1681982459,bafkreifavlrhpqophevdy2kjeor7bexo24bm2miwhyi4elmyole5qa4vqm -0x6Dd540Cae53fFD24928595520bEc73cf08A5748d,1,0.008782925857173447,1681985862,bafkreic67yn2cxo4ooxaltrco3cyzoujbrk2jdzh36pbfczwbmqg2ten7y -0x11f07f91C8965f4C1fdB37E9896751CF6CBa420c,1,0.00878217121334398,1681986298,bafkreigmmthvsfvq66r33btcegrrg3jlmaez3jltryr5zbnk65bose6fee -0xA73adAAe3C6924977f9950212B688558c87b65bb,1,0.008781416666770745,1681986584,bafkreibjxwkoyxxrortdxl26lscnrturqvgw5ntccvqa4pxijk3lkeszl4 -0xB35b2d4366f8405036F28411c2d224C53EF8D828,1,0.008780662217437028,1681986977,bafkreienxpc4lkklcxszybrlnc6ch2dexaamjqoaerohuotpmr22zgpqb4 -0x5CD53625FBB43139155301fBC75E19C654633696,1,0.008779907865326123,1681987839,bafkreihiqnf2wak6wn24l7pcncpbum2egnldkhxnqlmqp57j5f2mx2cqdi -0xC1fF3BA04eC76EBc5554819197780008C52C6Ad4,1,0.008779153610421328,1681988247,bafkreie5d3s4dzvkcu6jpkhclyeoiai73nllgbuzii2gdxigmur57anlwq -0x89B105cA091FE2fC6121259B4C69eB5eED590ab9,1,0.008778399452705936,1681988556,bafkreidygkhpkbzekjbl7kprfvep7hkdqdi6llmhfd77xfj7fsi7onmceq -0x92877E5da60931df93aaAa0709976bCCBCC10457,1,370.53966786102785,1681989124,bafkreidmva3qi4r26wgybo4zr5eulx2tsdmtpp5dkyfahzco2wprahi2vi -0x944F885101d75e559B3C67892a816274e67fC93E,1,102.17540817044627,1681990551,bafkreicivjdmeuyzsen5z44xsa53d52zdpcprv6htrky5ssdnk5shaxchy -0xf69f3f81f9f99B183fDeAD8266F5DE10D91a2A36,1,0.596635891413412,1681997019,bafkreihlkotx27nkgsaudeauqu247iaevj4efwe7usvkdslrxxevyivb54 -0x0b5CC691fBF7923da8a30DB4A8bb8c9F9CE9f7d5,1,1266.6242669607032,1681997081,bafkreic4zlczi7qpvtjqzppskw2gde7rism7hx67nhi45b2suwn3abvyla -0x4D11AAA69158595085D13D5e1a2b22c1d0D5F348,1,4.113974105568486,1681997257,bafkreigjujlu2njxinfxx7xm47akv2qpvgwgcfs5kjv3gbzokvhkgcjdai -0x40a82a3aC2bb08E82133E25cBC6Ca128dc7162aa,1,1.102770884550539,1681997819,bafkreihsyljqnqxianweveqs55gp2ohcelc6jn2qyb3b2b2wteefmqc7qm -0x4a27BfD91B30EfAf08706d2105e5D8A1ad09fF0C,1,0.8802996349326384,1681998881,bafkreie77oi7v5cruoomb4mcmyjpl2pgcambu7mfhdr6cumep6awcjmibm -0xBc9a6eA3E32B05e87f3e3e0DdbB23FC0C62c61f3,1,0.15,1681999125,bafkreiaqa233efqbmrazhuafob7m6j3bekzrftiufssyghcw5hgh5t7tom -0xf094C2406f91E946d8C4757A2F8c00D9Ec4D703E,1,0.14105291551394503,1681999487,bafkreic7e6pnt5kvzhmbcuz3i7gz5frlwgsi5mb34zzovixppedhctdjwe -0xf967817B892F82da16eE21fdd0667fcF9Cc9caf1,1,0.09029066083725476,1681999968,bafkreic3f6wv3xpgs23fvwjeacihokohyt5xewvtfgbe6vkmeb2q6a7asq -0x87430f80f12ce92eaADD51D26e26dA71F4dCa41e,1,4.994,1682013194,bafkreidykcj2ix27k6em2tiyxnv5oybgkwcew5o5ioktxejx5vvlzx3jwy -0x96BE7245790Cf38ab589ce2a3a908C4c70be15bd,1,1131.2047418585335,1682019336,bafkreietpxjvzxmfaoq4c5p5x44lsoeu3ybzrslpayzoiz47tlu6mi5bry -0x6336808ABFc29A6168A15B72D6BEDC6562a3Cd82,1,420.575758599564,1682020613,bafkreia24ib6wv6ofskajn4fyedvmnak4txjalr7id6dferxttlvezw3ja -0xce6364C714bfDF453f01b0A5E6EBA500392976fF,1,7.135262207754166,1682030293,bafkreideeoh3ehrrscsgewa5nnli44mftnefvvpsm3ldpakqrravmohspy -0x6c35bBEa907A5E653199ba885a7D9abd5Cb3a2f3,1,0.2,1682040019,bafkreiafjencjrmwj4b6otsebkkygh7sw76dcpjhdrbz2vi6jrc44eybn4 \ No newline at end of file +address,choice,voting_power,timestamp,author_ipfs_hash,reason +0x9c1b73E80D992389078a8ABc8B6039665C4846e7,1,20.992980242869496,1681954050,bafkreicfll75wtsmsvjk2oksmvfrwxtdduf72hfygcouwnkjitrzkx34ci,"" +0x5fb1E3A4b8968f6D0B276514A22eDF3a88B3FdD6,1,323.2730220659731,1681954081,bafkreiho66x5sasd3h5bfs3on7bnoxiwn55x2gx4kcvq7el44mkqf257fi,"" +0x44c80295d194cf25BDc3454b4016966ac319E848,1,0.3,1681959291,bafkreie2hie4f3lgv3vx3nocdq3v553qmbsgjnqcbc7ezcda4kk3h7yzua,"" +0xa1ab28131CdFeca1eC167045C8DFb9d2Ae75Ad0C,1,817.3041281237311,1681960650,bafkreigigiii3euxs6vcxrocy3rexs63gurpgnjbwgeb52zpr5jsqlbo74,"" +0xb6d17997Af674EF938BB3ead45bcbb54284A9a9F,1,4.876577470815307,1681960739,bafkreifoyraw5pz7d2j22bgqepzvo6gx4kyxgxzx7riavtkl2uozhax4ve,"" +0x843146d71d57af0E731F85dB1F094643776C8E91,1,1.0076503593247748,1681960828,bafkreig6gdyx5lkx6sxqxxfs5ab4n7recafwzmwhcgzysplh5j4aocxhf4,"" +0x7683c36e3067aD69e2ac06DDB21250EAF4e4Ffed,1,39.08821671397446,1681961100,bafkreifrbmteh7tzfptlmf5sl6or7hw4jffugchd4aentjmupniwlfhtye,"" +0xF860AaC8d4D61370FAED243C6C4C7c93dEe65679,1,0.00855293507004935,1681961562,bafkreidnd5qbsblyihevuyvziccinghipzkgymrzkliq7o62sehh2riltu,"" +0x9261FB273d1ACcBe2f15df1C254E7fCC971468aC,1,10.759693759553794,1681962445,bafkreig4yznqgixw3r2wkfga7mgsn3ggoec4f3ks37yldcdmefxosx7tny,"" +0xb24869a014065b2255797f98DdF72c8244f6F476,1,1.1945708804510298,1681962867,bafkreidelkqkm2s7vyt4uappt4df55t3a6pi7gr7rux3cmscconrc2tqrq,"" +0x4C9640a65af420A339cD2D5B2cE8D55ae83BED1e,1,9543.953905227729,1681965054,bafkreifmgrtoczi32b5b4oy7egfynuc5m6thcsycpkfcaqibmnd6mtamge,"" +0x4214C3DD58651fdC5d4a52aB69cB16433408A169,1,0.056,1681966678,bafkreigkuyfxej53rid5sa3v5ihimgjbxhjxesqfl7eckkpiutk7yjjte4,"" +0xB5A65a7b0373e3d6385f5DE7F583c299982B865B,1,0.03526254356347258,1681968420,bafkreifc2yrjrl5nx54y7yzh3heidiqqzenbqvuvbvoasqeq7ev4wsxscq,"" +0x5BBC261De4Ffd714585d75B242575A2C55e7d89f,2,0.2676423905614063,1681970107,bafkreidacjzj7g3r5umsatw2ltreq444e43oe4w56a5nxhcngcjbgkdpby,"" +0x4895bd5Fc670D3c657064bed13A5180e9a3C2C39,1,0.363410151520198,1681971330,bafkreiexqahvhexvznntpp36rtcnow4fbwap2zuu4wjahfkh77uubnm3x4,"" +0xF943437C351aCeD31c5a5Eb224B107E99DCebaf6,1,0.008783680598275861,1681974497,bafkreihgagmyp2f2x3s5gr72g5tk3fkabkt7ukvhb7oc3wglwrtoamfzpe,"" +0xD41cEF4f79a2cF4b9Ceb670E64029A93a62b8FB6,2,0.047011016629204774,1681974851,bafkreib7elmyi6rkjszq3exymo7dlogqqzo5fefsgmvoxlbgphbcsblp3i,"" +0x6c07619AdB26f83b81B1DC8e5AA4B71444F50053,1,1.0101487431893934,1681975703,bafkreiadzxyi26lfvtf5h33ebyexd24lkps5urmvjpsuxpwannkgbqgsxy,"" +0xC1d02aBAdc2fed2619512ADeA1418Bd83490E66d,1,0.25336116942241244,1681977973,bafkreicfowvl6tad4u6olez335tw3lrj3kqfm2b37jipgfzvsoorkbglb4,"" +0xd3AEb3A729EF9713847696E1363DAeB378474c06,1,0.007117064411653239,1681979081,bafkreiae6iwec7hbnrjctazlqo6wuw5tuphygnxt7aqtpm64wukpinjw3a,"" +0x614168aa18fB121833Ec9E55f9a038D4bC2E2Dfe,1,0.04257576529766999,1681980827,bafkreidywpmusf2mp374rgryu43z23aghfhw2xfs3nu6mbnnmsfqtjh6yq,"" +0x3A3495A75167C40C29F7f4cc8b844A418aB0b927,1,0.1187,1681981769,bafkreiahqnyrtm53kd4iydjodxfbc6iy7f5jskabaubg5ufl5izenwmnxm,"" +0x43Ed9D9120fb7e9E2de1A9dEb7BE2A8B75230DEf,1,1.0370890131067922,1681982003,bafkreighxdofakupv34s5bmmqfo2psn2uywjnghjw5mx4vee6zvyzuasce,"" +0x241202A851dBb3cBE68a42Ac2c7f11aB2628a5dA,1,1,1681982459,bafkreifavlrhpqophevdy2kjeor7bexo24bm2miwhyi4elmyole5qa4vqm,"" +0x6Dd540Cae53fFD24928595520bEc73cf08A5748d,1,0.008782925857173447,1681985862,bafkreic67yn2cxo4ooxaltrco3cyzoujbrk2jdzh36pbfczwbmqg2ten7y,"" +0x11f07f91C8965f4C1fdB37E9896751CF6CBa420c,1,0.00878217121334398,1681986298,bafkreigmmthvsfvq66r33btcegrrg3jlmaez3jltryr5zbnk65bose6fee,"" +0xA73adAAe3C6924977f9950212B688558c87b65bb,1,0.008781416666770745,1681986584,bafkreibjxwkoyxxrortdxl26lscnrturqvgw5ntccvqa4pxijk3lkeszl4,"" +0xB35b2d4366f8405036F28411c2d224C53EF8D828,1,0.008780662217437028,1681986977,bafkreienxpc4lkklcxszybrlnc6ch2dexaamjqoaerohuotpmr22zgpqb4,"" +0x5CD53625FBB43139155301fBC75E19C654633696,1,0.008779907865326123,1681987839,bafkreihiqnf2wak6wn24l7pcncpbum2egnldkhxnqlmqp57j5f2mx2cqdi,"" +0xC1fF3BA04eC76EBc5554819197780008C52C6Ad4,1,0.008779153610421328,1681988247,bafkreie5d3s4dzvkcu6jpkhclyeoiai73nllgbuzii2gdxigmur57anlwq,"" +0x89B105cA091FE2fC6121259B4C69eB5eED590ab9,1,0.008778399452705936,1681988556,bafkreidygkhpkbzekjbl7kprfvep7hkdqdi6llmhfd77xfj7fsi7onmceq,"" +0x92877E5da60931df93aaAa0709976bCCBCC10457,1,370.53966786102785,1681989124,bafkreidmva3qi4r26wgybo4zr5eulx2tsdmtpp5dkyfahzco2wprahi2vi,"" +0x944F885101d75e559B3C67892a816274e67fC93E,1,102.17540817044627,1681990551,bafkreicivjdmeuyzsen5z44xsa53d52zdpcprv6htrky5ssdnk5shaxchy,"" +0xf69f3f81f9f99B183fDeAD8266F5DE10D91a2A36,1,0.596635891413412,1681997019,bafkreihlkotx27nkgsaudeauqu247iaevj4efwe7usvkdslrxxevyivb54,"" +0x0b5CC691fBF7923da8a30DB4A8bb8c9F9CE9f7d5,1,1266.6242669607032,1681997081,bafkreic4zlczi7qpvtjqzppskw2gde7rism7hx67nhi45b2suwn3abvyla,"" +0x4D11AAA69158595085D13D5e1a2b22c1d0D5F348,1,4.113974105568486,1681997257,bafkreigjujlu2njxinfxx7xm47akv2qpvgwgcfs5kjv3gbzokvhkgcjdai,"" +0x40a82a3aC2bb08E82133E25cBC6Ca128dc7162aa,1,1.102770884550539,1681997819,bafkreihsyljqnqxianweveqs55gp2ohcelc6jn2qyb3b2b2wteefmqc7qm,"" +0x4a27BfD91B30EfAf08706d2105e5D8A1ad09fF0C,1,0.8802996349326384,1681998881,bafkreie77oi7v5cruoomb4mcmyjpl2pgcambu7mfhdr6cumep6awcjmibm,"" +0xBc9a6eA3E32B05e87f3e3e0DdbB23FC0C62c61f3,1,0.15,1681999125,bafkreiaqa233efqbmrazhuafob7m6j3bekzrftiufssyghcw5hgh5t7tom,"" +0xf094C2406f91E946d8C4757A2F8c00D9Ec4D703E,1,0.14105291551394503,1681999487,bafkreic7e6pnt5kvzhmbcuz3i7gz5frlwgsi5mb34zzovixppedhctdjwe,"" +0xf967817B892F82da16eE21fdd0667fcF9Cc9caf1,1,0.09029066083725476,1681999968,bafkreic3f6wv3xpgs23fvwjeacihokohyt5xewvtfgbe6vkmeb2q6a7asq,"" +0x87430f80f12ce92eaADD51D26e26dA71F4dCa41e,1,4.994,1682013194,bafkreidykcj2ix27k6em2tiyxnv5oybgkwcew5o5ioktxejx5vvlzx3jwy,"" +0x96BE7245790Cf38ab589ce2a3a908C4c70be15bd,1,1131.2047418585335,1682019336,bafkreietpxjvzxmfaoq4c5p5x44lsoeu3ybzrslpayzoiz47tlu6mi5bry,"" +0x6336808ABFc29A6168A15B72D6BEDC6562a3Cd82,1,420.575758599564,1682020613,bafkreia24ib6wv6ofskajn4fyedvmnak4txjalr7id6dferxttlvezw3ja,"" +0xce6364C714bfDF453f01b0A5E6EBA500392976fF,1,7.135262207754166,1682030293,bafkreideeoh3ehrrscsgewa5nnli44mftnefvvpsm3ldpakqrravmohspy,"" +0x6c35bBEa907A5E653199ba885a7D9abd5Cb3a2f3,1,0.2,1682040019,bafkreiafjencjrmwj4b6otsebkkygh7sw76dcpjhdrbz2vi6jrc44eybn4,"" \ No newline at end of file diff --git a/test/fixtures/snapshot-votes-report-0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927.csv b/test/fixtures/snapshot-votes-report-0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927.csv index 8f53acdd..6166b5e0 100644 --- a/test/fixtures/snapshot-votes-report-0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927.csv +++ b/test/fixtures/snapshot-votes-report-0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927.csv @@ -1,1176 +1,1176 @@ -address,choice.1,choice.2,choice.3,choice.4,choice.5,choice.6,choice.7,choice.8,choice.9,choice.10,choice.11,choice.12,choice.13,choice.14,choice.15,choice.16,choice.17,choice.18,choice.19,choice.20,choice.21,choice.22,choice.23,choice.24,choice.25,choice.26,choice.27,choice.28,choice.29,choice.30,choice.31,choice.32,choice.33,choice.34,choice.35,choice.36,choice.37,choice.38,choice.39,choice.40,voting_power,timestamp,author_ipfs_hash -0xF41C5D9B2aef36ADB47F520380108eF5D67A290e,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,2045.601142949226,1671156046,bafkreidjlyexyhtjp2gl5kmtdvvalzl6ij7clwwvfsp6sp2y4a6exj52lq -0x5FB33d75A1cFcdC922e736c06e01c1505b4643Db,,,,,,,,,,,,,,,,,,,,,,32,,,,,,,,,,,,,,,,,,,550,1671156127,bafkreihkzws5igjgavsrzxj4tlqh7757gi3e36g5dkhxyohe2h7w7rpv6m -0xe99284ca6742f3d539dA5E7407997744059BD620,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,0.54218,1671156130,bafkreiet6iafkawlwj6fjbjacwidiwmled5crrgpzb4t2l2fvjjcbh6uxe -0xE896675803DA7Df23c9BbDA3646BBD82593B6668,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38481.23950989474,1671156255,bafkreiftjv75iiyhatazfir6vy3wqbeeas7clnodlthtedzsms7z3lgoqe -0xEAB974fae1582AA8707586B836C7B6313C47992F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,16168.355365777225,1671156310,bafkreidk7eizyyqio45d6elnq4ze5lhtdrotydtwcsxgps3rjmkrs33mca -0xE0f5AFBFa874cEF79E67deb4F9BDbf96F36c9083,,,,40000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,40224.34710385403,1671156328,bafkreifzs5aoz2ziuhd4rxbxkilgovka5vilu6j5gbfgihijgoeonkwhhu -0x831283A628f377Ccf760d885968c6A0b8019c22a,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3988,1671156624,bafkreig72h2egoxutikt66mshajq5glnuad2i6gsdqfwnc2kxcqhmimx6u -0xb7905247daA1E10CF2Ebc70A47DCFF5fDD498b40,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3323.6744889186693,1671156626,bafkreidox2axxhr7whwpxvu6qhl6q7evzenbdnhpxl3vydsiycvotv4fju -0xC49e8918ce75751D2fd072C185A489c375A3510a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,12365.31449161642,1671156756,bafkreiausx2dch43v6kuu3ou2xjgf3zanpd2wg3pej6i4jv3unw3gsz7i4 -0x97932301B956B8487132975D331b0A9aB1844AfE,,,,,1,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,1,1,,,,,,13772.633469978586,1671156778,bafkreiabrjtfqgh2ks6tb22ru3yv7y2hoaljz6swncct4iokymuilkak6a -0x636ba3Be5AB3a03FD164327C373d6eae15b0fc22,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,16065.77621448325,1671156830,bafkreiadu7s7sav46ullrvsgjzjbilt6bykeh3ekw5uovf2pdbbf5363ha -0xaf1807F545828845a37Bf1db6F6b25B45f37f7ac,,,,,,,,,,,,,,,,,,,,,,,2111,,,,,,,,,,,,,,,,,,2042.2131838269547,1671156915,bafkreif5c7sfpiuhwtgc4ocrqa3f7dy5jkuwewn5diq25hbvl7i26a52qi -0x89A1145FCCAC1a2a9350eC1A4A486E4458D26274,,1,,,1,1,1,,,,1,,1,,,1,1,1,,,,,1,,,,,,,,,1,,1,1,,,,,,3503.3620550703067,1671156970,bafkreig556hmvzgugsbh4c76f4lih3a3svz54kncc5nyhtosmpncv3wiki -0xE6e5F2dBE9C7999465A4369D785caa893009ec3f,,,,,,,,,,,,,,,,,,,,,,,,,,20000,,,,,,,,,,,,,,,12000.812044929484,1671157067,bafkreickn5oeqi5u3dncjpamlmwhlq3qwvmscl3nozh254pfcz6ogxx3im -0x893480D472bb4bFE04d3768e3c9e7a6E4Cfae7b6,,,,1,,,,,,,,,2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,4609.071407951126,1671157117,bafkreic5yx7ki5qzl7ppyoqh72w7v6afuyemvfiqwhurc64nln26y47goy -0x245719EDdF2d68ebf8AA54dB2550891128962B42,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2001.1510430544963,1671157126,bafkreidot5aegeqwt4kria3plri3jok57gnzodqt75z5syj7oixceozwcu -0x6e9078a3773a5035A710709901c41e1d9131db6a,,,,,,,,,,,,,,,,,,,,,,,,,,20001,,,,,,,,,,,,,,,164.43402023456864,1671157168,bafkreidpkge3qlzr4tv4ilnawhhlba2egsbik7ihs44rnylujlgts2avja -0x2A59d2927541d17C0fa19140703ECB4b697b765D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30000,,25984,1671157213,bafkreihgs573mvyippodxvicuob2r6lc2w64askbxg3lelhoujdnd7qnty -0x83BC34e69a7F79116787f2FCdcB22D655fFD9a5a,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,318.14657130215835,1671157276,bafkreib6puvqtoimggtaeyhznqyxiuquijayczswitru4egntvludhftdy -0xCb96594AbA4627e6064731b0098Dc97547b397BE,,,,1,,,,,,,,,1,,,1,,,,1,,,,1,,1,,,,,,,1,,1,,,,,,1,1671157302,bafkreidpjy6vvzmiwurb4yy4cw4yxmwuhoqt7nsh5mqy5rd5eyilwt5tq4 -0x34f0F1a9AC76e45211D42166346C4289258d7a10,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671157396,bafkreifjtpynswxncptf2gjtpl7inuj5is3hiya4qo7klokws6yyb7jwke -0xF51dD21fc5Ead51c10Cb6266628A39027492A65E,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,19390,1671157475,bafkreifrvvrdzbbawm65tnxicap2rrq5hhzodfhxkf2u7rm4soyvs4wjqm -0xBb08C0f067f80237636724e28e3414C4fef128B0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,3.485115172958701,1671157512,bafkreihuelyge6h4fq5ucjmbmgv2m25emduq5awcdplwcu5z4syhxf4yza -0x4B0107E73D2FE5F3aed35652452B0eB4cD121b89,,,,,,,,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,62.68404375615104,1671157512,bafkreidxdj7qxohr37g4x6ifdlu4htxwaxshxl5xjdcbx2glmiydr4suc4 -0xDf4C73730b431d64c4c2814bB9e77A4De8530216,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,9679.118307532808,1671157549,bafkreiae2e3pw4ivcjvuyu6zh6f4bxcfdi3mlvf7zafbuh5iruf3cjy46e -0x2Cf84928261F655A47d04EC714D3Bedf9375De46,,,,,,,,,,,3,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,13251,1671157588,bafkreiekfwutuvoml57fdygxt6pjhht6dns6rog3sb75iuzs5ofmsocz7m -0xA188A3b49d793568709Cb18d70Ff135FE3A4563B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2900,1671157704,bafkreigpkr5qahc2rokavs6vtwjzxmckufpdef3agitovmv3xnot6a54gm -0x5e7f2929c6020baF1aB53B2172AFB41Cc6F635FE,,,,200000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4886.813847712151,1671157832,bafkreifpc7qnqtdpbch4ubstgvikrfrqd4m4nngtcro6trjcvr63rtxbre -0x8B30540C770CCfcf4b86bc5478Ba1803eD313841,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.24266348,1671157966,bafkreihpiucq3oefvim2ca3ib4n7dhdoy7tl5pdy3o3yvnjaoew44ihhqi -0x9519D34cF0Dd9CDa22CF84d9b9f8dE5A7F22600c,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2011,1671158020,bafkreicm5zwnbzvtnuoodjyklpxgmge6ppqrl4azyqthje5vya6eh34qiq -0x2fff0F98909bAE74d00583e65DB3aDe8a4F634cA,,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,38967.045543921595,1671158118,bafkreih4frliaxk3hfzdgdv2ytqb4fmkwup7xk5fa7lgbxbn7ruhunimby -0xA0556E8e8b617f184c6948DF2c08AC795036DAA5,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1671158154,bafkreih7svldk6houayzyg4z2ittvt33s7yee6726uiq7zbospu727czb4 -0x38F0e547f6F617967b88043DD77195514eF85EDA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.0799744827364065,1671158391,bafkreiakl37r4mpofxcbsx5uprzc2ikkxx2vsynajmwx2hhyl5n75fcmzi -0x4278D3E39f25D690B2d060c119AB2478fa09AFf5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,22504.390309555856,1671158496,bafkreidnsjt63jqhgzryy5md32qzv7abmdxe36qzskuaqwlkp5cieit33m -0x770BEbe5946907CeE4DFE004F1648ac435A9d5bb,1,1,1,1,1,2,,1,1,1,,1,,1,1,,,,,1,1,,,1,4,,,,1,1,,1,1,,,1,1,,1,1,1,1671159224,bafkreicg7e7j7ynifsotgdgqhrj5h2xrgvyivm75wg56l2ebpzqirzp5zq -0xa61AC31A55690F3bf65fC7d67052693Da564882b,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159531,bafkreihtobnxqebtc2rfowddeaaecp52bxhxjhsozsi53accclcjt3x62y -0xE9b2CaDBc6cBE6E504C9d61F6Bf583D9AD15b14A,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00008,1671159553,bafkreibzezdavh23ffx4f7xsktv7qzpaekhrvybobs54vtrp4jswrtjhju -0x0d323D390C75E717e5807fc8B97ecF9C26741AB9,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,53943.464862442845,1671159571,bafkreifkvjz3vtjxb6xh3fgqjrhgp4r77pgkvhlce7br3ghfvg5fpzhgzm -0x0516cf37B67235E07aF38ad8E388d0E68089b0F2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159580,bafkreie57p6wgpsd5ocp3tthbftxpq3vtr33gc2pevdcuoql3gc5swvq3m -0xbDa0136ea391e24a938793972726f8763150c7C3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.2,1671159593,bafkreiavmk7uls2embdrgahx5lsq4tc4q3waropafmwt7xqb7kk2pxejaa -0x9Ba6baA919BAc9Acd901dF3Bfde848FE006D3caE,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.1,1671159605,bafkreiaipgdrqpryhh5c6oryurgq7odz4uesujhjpl3azkcfr4xe2ualj4 -0x35E6fc00e3F190A8dFe15faa219368a01028ec14,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.2,1671159618,bafkreibjmoufxtl4upgm2fahzgw4rzd32n65xcmmfh2lq2hh7suub3m22a -0x5E12C24d4564d7627B8357dc9e8337C1ca10808b,,,,1000000003,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50503.09109547703,1671159627,bafkreigupmrefwaauznmxpei23ltez5f46456ygtrj5eadwufrlmr6leha -0x0fF9B6AB6Ec58ceB6D5ae8a1690dd5a0959aD002,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159629,bafkreib6ueanlw2dfsi4oz4egxh5uf66bzblvh2asqmn4coevxhquqw4qm -0x344b1E4Ac175f16D3bA40A688cA928E3768E275a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159641,bafkreiduaqzgnexf6r5mdei7x7p2g22bqwlogvbeajpizwprdpv3j3h3sa -0x70Ddb5AbF21202602b57F4860eE1262a594a0086,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159653,bafkreifb6wrcm4pncqine4vtd5qg5bxkppoiciotoc35bhfmpgwfuopwj4 -0xc97370F22eD5ac4c7B24A8E1ca9D81FEbb3b9457,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159671,bafkreia6ycwco35ahzmf7uga76hct3gkcl6pjof632tibeqzsb4p4xcqa4 -0x707D306714FF28560f32bF9DAE973BD33cd851c5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159688,bafkreigatxnggwon7u5hit5npb3ga7qbnhjligmxmkwvkzlmosnqdc2coe -0x04029bAcA527B69247dbE9243DfC9b5d12C7Ba60,,,,,,,,,,,,,1082,,,7000,,,,,,,,,,,,,,,,,,,,,,,,,8082.236937330858,1671159707,bafkreiayr24uifpsaxpcslm445a2z3q7ibknt34dcguostxlz5arczf2su -0x15Fab1cC5262D69853b1196f74d38C7FC96Fc6D7,6,1,1,,,,,,,,1,1,,,,,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,4,1,1,6.175877050947295,1671159750,bafkreien4wr7dfnm7v4g3xmdvepi33gfs4udxxwmhnbzjo6kp4vgan7nly -0x1b5b4fCEDF1252cd92496a2fd5C593b39aC49b01,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159798,bafkreicngmnrmcq55fotduqqrlfbunihmnx422zqin7yt3eqpxno4a6dqq -0x2D5823E8e8B4dfbf599a97566ff2A121Cc141d60,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159812,bafkreiblfgddqmffh566sug4r2ux4mwhwb6e4ujvrbuioxhewbbuvc65ci -0x76AC6Ad4e4E7c2e0b4Ceeb30745bd53df3a85774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159824,bafkreidinkis2gynbjh45hts3o4p7xsim7f5lfxoohqdu3pvmnlcfugr64 -0x00432772Ed25d4Eb3C6EB26Dc461239b35cf8760,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.44,1671159837,bafkreiephpggvijly4eicufwjxrtzdeqlbkpkyrkp4tqs4tflqgpktlzmi -0x7A3BdeE62dd34faC317Ae61cd8B3bA7c27ada145,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159849,bafkreif5xdqlawjqpwbzcbzbkcgxzfnwvyagfm57stfcfrnwuc6eglka6u -0x972a8B7D891B88220780421fE4D11f174354cEEd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159862,bafkreiai7il5zodmd35slr5izedbfdfcd2l7peark45udmkwhdwubfulym -0x1B9DA462D07512Fa37021973d853B59dEbB761Dd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.01,1671159874,bafkreiaqmcq3ksalkxi2q5pl5a3iumltdbbm2qdvaqfv4inxbf7pfjstbq -0x79ccEDbEFbfE6c95570d85e65f8B0aC0D6bd017B,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.002,1671159886,bafkreicudnelr3aaitqehfv2v4a2jkjypni3zehkvzp4np3wclmxtx6yvi -0x119383B0051e920D6161cEe971247D625B8D69Cb,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0009,1671159898,bafkreiftfammhrgvmo3gdh47thhhb6qgp7do5himfvvn6n4gzvxwza5z2y -0xeEE5Eb24E7A0EA53B75a1b9aD72e7D20562f4283,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,106638,1671159911,bafkreif4pohigbg73eefcwtls36w6uw7kf6klnnlzswkn72sfx3xsdlyca -0xAEAf8371BF9Df3eDB08BDD7D05099D49965fDf59,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.000004,1671159911,bafkreifypwge2mbfzg7vminigdzjaqvsjj3xrjrxfz62xgjduxbbafmdua -0x787c8bE38E968Bd0b41eaAbe0b69d1c32ea09262,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00008,1671159923,bafkreial55xcylcrdxpchclubab3e7geakahkwzqxz2u5k55aeiwrvzatm -0x4AeF8B6CA98cA20087E6b0827a50868172A32AFd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00007,1671159935,bafkreigfeip4js46yjlades4bimpx2ftaofshobm5ciwtocozwz4i4d3ou -0x9FA7d42Ef9eb89ef6FAbDdE88207FbE6AfA70626,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0000001,1671159948,bafkreihexplhzdu2k5c2hz7hij6oxthdvt3rxxo4tdk72y6zf7ypvxyrsy -0xD03Ad690ed8065EDfdC1E08197a3ebC71535A7ff,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3.1468659,1671159962,bafkreid5x2u2pm37cxqtksnunpecrjvi4f7eekz3bzuvw3oidc3lrjulne -0xfD82C31929F370D00168DF5B5B0c9B8f80bC4315,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159974,bafkreialy5c7cf7f4optkif677ir5qhtkor2gtmu5pkt62giwd3gbxwnjq -0x0E26F5bd12EafaE9753E2741f2dc151bE894070A,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159988,bafkreigdjecwik53vifayvdxvhvie4owhgjrkwxh3d6llswuwtjysxj3qy -0xb00933F18388a77a85f00BAe9B50Af4299c4D0ba,,,,,,,,,,,,,2898,,,,,,,,,,,,,,,,,,,,,,,,,,,,2903.4796369864393,1671160036,bafkreif5qxgya7ubxmfoami5fgm7izt2wvr3huollum5xcucomsfveemem -0x68F516Cd11A1f8e49ec826fD5aB9D64114D2d31e,,,,1,,,,,,,,,2,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,2959.7394101397317,1671160145,bafkreiha2cx46nzsx7sbiva4ikveq4rq54cnb5ql545dq7h2kdnvkc5ovy -0x76E4f864bbEb60Bee66Ff5BbcD32dEcAF7FBDE71,,,,,,,,,,,,,,1,,,1,1,,,,,,1,,1,,1,,1,,,,,,,,,,,1.8733765535654587,1671160210,bafkreiax2kjiv2eiezvyq7p5biviwcgvxtzccokfd4wmp2qlr3ngp2asra -0x8Fffb08a892B348C3df82695F55F866D85BCD358,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.16,1671160363,bafkreidw3ubi7rmbgle2hqu2c5kkhr5dsroizbhnl7i7eaxutsu655mtuu -0xAe74399237E02458aa42283e7c3ef2929AD4896C,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11.770886492512252,1671160414,bafkreidihmmyvmezimhcrmf6t2ainekinqixy655f7xvhxlyx3tlaqaedu -0x4CcBD2273715c283490959081eAD820Dc297a121,,,,,,,,,,,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.11,1671160789,bafkreif3s5niz5jxl4rizfqlujau3hjvpnbgddp3khyfpofifk3oaoxh3u -0x3851F114819f93451cb0D1D45A89dff974aBB50f,,,,,,,,,,,,,,,,,,,69,,,,,,,,,,,,,,,,,,,,,,355.2900106802586,1671160816,bafkreicohrvkwgb2tvogedxkmn4xwndyqeonbsuyydiurxqwrm2vn3ukuu -0xc249858a122387d54b92191aC974E8628bCCe34c,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.249581110121209,1671160897,bafkreibek7q3edqu3rtdezhvgb3or2hur5elwhoa57mvlduve3bxz65xhq -0x3Da0B023110B73b50d1Ac5eDDF4D381102cb78b5,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.05,1671160907,bafkreigxpujrqdavbjzyw4gnjy7cvzrs2gxpbnzol46l2vmgt6k323as6q -0x6C2b9696627612FB7656ABEC3b0E9Ce4c6E98B64,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.05,1671160929,bafkreieevf3i6jg2a6sdi5qjcwmf7cmq27iiipazsowx5bt3yql4yy2ojy -0x0fE35CB5c7d2dfD63Eb4eb9e02A6f20117a3303b,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,119.84283184747311,1671160941,bafkreiar7w5rk3k5zssd4s5k4w3ivrk2b2s4ubti4ufujkeewk34fx6cee -0x1a2D03e71D96FD7e7389aF8C28E2DE834247061b,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671160968,bafkreigbmzptb6ufmmer5gvquvia7mzhsriweikevl54knmbiyhspsfgfm -0xF58DBd74f26E4bDBCF2A26e2F848E8348530f0e4,,,,,,,,,,,4,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38450,1671161091,bafkreib4m3x52epku3byvbg7dmjvmdzyw6nvjghwlr4plzpbrkgyueibca -0x298d0f26472e364Ea84090C80B09b187098F84b8,,,,,,,,,,,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.11,1671161093,Qmc6XWhytKx7yyu3UiaA1zYdHWedYzu6kfwCAYjAJonBnV -0x3DbaDc86d19416eC16D81aa07fF2609E6241E7E9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,0.023372655047747,1671161218,bafkreienxiocvz6jgr3omeeku5p5pkm2kw6htobvu4ko72fr6mcmqrjp4i -0x85488d8616Ba29219a8EB0E25229ff36E42ff1fd,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161258,bafkreigk5mpwwmwuyfrzulummqxppi4da7rj7tdhh7g6hmjazta2zoiuhm -0x48a19Ec96B8750B22dEb049Ae9916094aA03F3C3,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161263,bafkreifpobshktji4dfgsk3pzwhmm7uxotovk5whubtrdfnav4m4jyyn34 -0xbE4Eee9ffbD539FcBFD93686b703dFe200191Cc8,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1.2,1671161363,bafkreicrwhzcmfu5psggww5dxjwnczfxsm3hxj4lprexd2ail6n54ppsnm -0xb4093fD7b67b0048E8a72fe60a63a80AAc41D34f,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4094.6963333839544,1671161388,bafkreidrvmxzfl7xszngfn4t4hjbsny3pomkd2eycfxp273sdseh4tolga -0xA55aCEDb58B498fD1CA0a7287e3bF7044E592ea0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161407,bafkreieh5xubesu4aarrzfmcdrgynvgdcjjrpsrmz74dourkvarvwp5iwi -0x989fE87EE8c8DE837908D4AdcbE575aD8b349191,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161557,bafkreigudji33zhnhm4owjqiwqtqh2yuc6xpg4dtigzcqgtfatzmnc6nky -0xc2EA013e73E30BAd228774412fb611b5f481e378,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161604,bafkreif6bkrbqg5urusciwrbefws2qmmdfr73jfcmleulbwullklebdefi -0x9Ec98c18247Ce0d90de4613290EC8247186249e5,,,,,,,,,,,6600,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,25526,1671161605,bafkreich5dfkfunu33tzlxtcbtqqffxmzevafpegh2drluz3bntsg4qmiq -0xd18fbeFDDEA78Df614915234939619c9bAD0c18B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161650,bafkreiexug2fpfb7qye2pg2mqlwvruzwpxaljdg4rddwkkfcjyam4n25i4 -0xaf6346c448B9904a2af6Bf07E127E93d016f7B8D,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.2,1671161667,bafkreibompceqxf6hn22zaey53igosegzd23hccy2wgkbhtcfd4iejzh3m -0x1be693074c32541919Bba91aC873464A29c09D68,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.20455238594870762,1671161714,bafkreiahi3by5xydabntvqnr55dtuagreb46sfiwswajfhfdewzpydnwae -0x808c9062C52bED82d09e7187E6b7B0eE75eE98F6,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161715,bafkreidvod3lhm3gdle7kkxhavllj7xbaxa5w2e5vsmbi55dr2rohls5qi -0x2855C893eff9A15236c293e8dF845a76CC325c49,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161846,bafkreicwmfnarlxwi442b6wyx7lvd5qtdufvltjseytzx5e5l4mzzhr7hu -0x31A95aDAa9435f6381Ab41b38C6C8150Bcb845E9,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.22,1671161965,bafkreihba5nrwtsava6qmumohhgokchtnvsq2satrktqqcknda35bsbqxi -0x38cC3b9e7f3A747958865cD95F1141Aa58A6Ab24,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671162031,bafkreicvggxrrddncgyszenwgoqs5v2e4ai3meyn5hp5wzvv3ukkscl25e -0xe58F5BBaB1Df889d399f21585404db24926c1D78,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.6,1671162054,bafkreiehv4arpwmqsefszeoz52uglfdzpmedktxqd7fwxvdwjw53jrrwla -0x1684C382352FA8992E2d12264b08CBFd8E06b7b1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671162071,bafkreibwqyrolwczc7ob4azlncaqadzq3yrpqkw3z2p5bxd6twmc2olluy -0xd23b06012790E2D8E01a7607127588b609C27f0C,,,,,,,,,,,,,1,,,1,,,,,,,1,,,1,,,,,,,,,1,,,,,,41649.92083053342,1671162153,bafkreihxwaj7kepcb2g5p72klgdfwznft3o4ssgzvmehiz5mqsnyaeaeda -0xDF6481be0eFDF8ADf562Ba86b00785dBdeeCaBC9,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.570583372048844,1671162172,bafkreihxlpz4pl4rnpioijiahf5qeaybdibnwp4kr5yycq3j73gbdkfowi -0x0D64212576F75b628F670B59b64A74580e24F0c2,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671162180,bafkreifx22opfj4oceylqysvucypujtpettihj7bhd3h5d3qzn4tvcd4bm -0xA78E6515db1986f3FE47C486Aa9177932106c769,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.24111167894688745,1671162203,bafkreie2npze3tw4jyws7rhrd4fomqdgoeioxy7yofrya6xpbmj6msf2ti -0x87f0b29265fd4C8bbB078CC9e1A1C88FAf83240a,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.47389991281222127,1671162271,bafkreic7v6zhmm446nwfx5dshpbqf3m5z57zbhim5ic45zges6oj2cn2he -0x1b858731cf2d0B1033768c49476e31B4f985ca75,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.52,1671162382,bafkreihom744ojq6zhrc3l2nbsiklyd6gtqtp2o2alngf4ftnhdmsa2h2y -0xbd95c7cE1c6FCA2cE0B7C1B86F79DeE0Be5Db7C8,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671162393,bafkreihv4zr6piqb62ouvw7wvxnxcs7jtpxigegnvfouaqmglm75pqj54e -0xa6D5D51F6df223778B169D63e0eD9AC017A055C9,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.5543750183298607,1671162412,bafkreia2omlwe64as2vspptpamlo57ohyvcbn6bfppoavza4yuqz6ufoje -0x9195b4af13394A76856b698bae738515E90d01d3,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.26400527713452,1671162480,bafkreihdalbxo2pnnfhqdqmipni4s6f5vwb2wkye7t4ne5jisiv2lmzjra -0x5Bf6d03fDA1Ff0f75F4C98AB7C48eA8c5f0556FE,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.44219984121561223,1671162570,bafkreihljj3i7auold2qhtetlbocwtyivcq5vk357zgfhwvrp33gfysg5e -0xBA3D4228b2Fc5b6751eEEcE88eae2Ebbb8008f42,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671162624,bafkreifjzmo7t4wozd5kapefc5bbiu6e7zolxdbmn336dy5tavij6ofxhe -0xd611A3350321558BDa7d15Da88e4b74eaF4c8986,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,166202.39188604843,1671162956,bafkreidjadjszwzfdrmapype4hvpyz2v5i3hujr57nyul4z5ukpcuwl6ku -0xeA5bbAD59C45A02AC0B0F48C9b4b7CcBCCd73c36,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1665766122894211,1671163039,bafkreicrfrpdllcgleyeyjczyrax4e77ikuhizwrhqnjcmlia2v5ftolj4 -0x2119973710DB14775d696Dc3664D623A1DdC2e10,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,31.748872879416236,1671163040,bafkreidgcxqclzp2si6cnzik3ivsyxvqhrcbgkzof2koaxvuc5d5uo6v3a -0xBAab83De8DbA764bF02a530cad33555bD23eba22,5,5,1,,1,,9,13,33,16,13,12,7,5,6,8,6,8,8,9,19,17,10,8,8,6,3,3,4,5,6,17,10,2,3,2,3,3,72,15,8.67,1671163045,bafkreickaymttvpi726asqbtpzlrhqvva6pi2wcnc473hilwa6lzwkbk5a -0xd49d7f4b390169C80F13a828198FDf6Adb7aa206,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,9296.76689959718,1671163286,bafkreietvx5rlzsjxgcckzoevam5m2atwyiojzehpfg6av3c7ulpv5yrvi -0x2C2FC2f6c1B1c2cB6d46ca0d66CFC372e5183C16,,,,,,,,,,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12812,1671163302,bafkreigxtp3xiorkzmyub7jdnjxfxjduglrgk3ab3s4xqbofaqifkkwdie -0xb30a154d44c97262cECc51E4c429B2D138a161CF,,,,,,,2700,,,,,,2700,,,2700,,,,,,,,,,,,,,,,,,,,,,,,,8437.596019286604,1671163323,bafkreigxsbrsw6igcs7tqb6bgvyp77zg2bdcsxeaqp6en56f6bv4tl3ete -0x13dDA63C28bB95FE9822FEA43ad5fEaA966636a9,,,,,,1,,,,,1,,,,,,,,1,,,,,,,,1,,,,,,,,,,1,,,,0.2772924544975298,1671163471,bafkreifjpgczs5gn4xnsxwhdt4zgwlohq555fvtctyijlyh6zycjed3ewm -0x08D816526BdC9d077DD685Bd9FA49F58A5Ab8e48,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,5200,1671163491,bafkreicph6j5fur2h4gxj5yj44qtiuep7m3hf7wefdbstjhnpqfaoesuqu -0x2744a205b3a599508295e53d0290b949104d57F4,1,,,,,,,,,,,,,,,,,,,1,,1,1,,1,,,,,,,,,,,,,,,,0.1,1671163639,bafkreiekeeb7w7um3h7d25lrglujiewouydj3auxi7sdezvjrn35b5nkke -0x13E35b33b929BD96A004ea88d1fec552B205a23B,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.2218586168842042,1671163771,bafkreift5jys24uadimllp5z6fqhmlznmur3yx4ho4zxvbxrglmd47jici -0x2259cC4ff58Bcb4A748e2143EE35BE3e0564fEb7,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,35360.863495716476,1671163800,bafkreiggxjetdtpzallbx3tvuokisygifrdjtgzgsrplcwlrrc3phj4ocy -0x8AdeA5A258F0e4E0bD02FD3a833Ec25f2A4672F4,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.26724951,1671163979,bafkreiagwyhzdj7cvrhjsiwqzoxkv4nf5kabqadqfx3dqt66oqfhi7hvvq -0xd7fcde28dfFa87790e2f0bB6fD0D1496A8e7cF0E,,,,,,,,,,,,,10,,,72,,,,,,,,,,,,,,,,,,,8,,,,,,12641.41,1671164204,bafkreibdfbrpny2qbhdcfc6kt37hu5hp6rhuuayqgi3wg7pluy6e5oa4iy -0x7Ea9b8ba0d889Ba42458f657Ed27244AD593dfe7,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,510.2899174529677,1671164369,bafkreigx2aej45op3mkeag5tfdloligqslw3eye7bmyjuj53c3pyzba45e -0xe2aC0fc8d6E1041BdDd90BD1C2156785bb5dcf4D,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,214.07882032374124,1671164403,bafkreieyb64lwfkcgxmebxupmzmmdkv6ef2ckzpvrnzqzdkabblbk2vbfa -0x1bea80C2b888a6A44fC43B87e5c84823E97Af614,,,,1,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,1671164488,bafkreiga3nxpnhimb4rhbdlidf7gnckpbugbsadvl5rpw3zfwhht4d72kq -0x7f6ca49D1e50671A586A76Bb082dD6b3F73feF17,,,,,,,,,,,,,250,,,3950,,,,,,,250,,,250,,,,,,,,,,,,,,,4021.594760011768,1671164540,bafkreicwqlr2xs46kyffxgti7qrsjvvmgxnnx34u6p4aojtdjopjley4be -0x8eEF779818Afa953b0652e45438423ebE089F55A,,,,1,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,1.1841165449058306,1671164556,bafkreidzosexbizketmz4wi4dc365mnftdql3icmap4ktttboj63hlty7m -0xdfBaeeF21396BF205D4B7D23345155489072Cf9B,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.25,1671164659,bafkreieopi66x2td7bbh46nqgq5xtct3cv3m3p4osqfp5nyqxm64u7y4re -0xa1aafb06268f3396c4683e3F635A4AFf0E040e46,,,,,,,,,,,8959,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8959.555626016387,1671165050,bafkreiexp7wz2aw4wash5ldzngtflqtpykg2lezr3vun2li7fkusfzahtq -0xbd7dbb5886786AF713eBb1841323C528699BD92D,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.060929189945934,1671165213,bafkreickbyztqywe3s76r4gjc3dba77e3dmpisq27qeyavq5fpuuqjooja -0xa2E455c0963643276473b58B320e5C75923F6DA0,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.14209028508370924,1671166934,bafkreiceyqfrpquuni7y2dykywuspbx4kupf4kimtr76dpyp6pj4g4offq -0xe10c8e331173484e8e296d6a68dD029Ad1489958,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4800,,,,,,4800.01,1671167039,bafkreiaje6mh6gsjgcmafspttgsq6tarfx3553mwjyd4wpnko2tacapikm -0x231De4975FA7ED182E4a83ADd1d1b5b69b40A41b,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671167168,bafkreiemzljpap3dx2l5u56poalirtue37mooryfyun3otzecraessylvy -0x44362d233C40E2Ef245581bC0b55A24545F20B35,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671167231,bafkreiexi6rr7dyi2xbj5w6grqo3ccnsvgejhjlfg5kejub7bk7cjbv3ge -0x623c04BbcCae0363d37a18f1B704DcBe1F9f5805,,,,22000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21834.541118435398,1671167289,bafkreia4g7etcmn7qpsyecgymuv7sonp33ajhab2gp3g6fv33njme4gdpm -0x046Bf094791e28aA7fc22c8ecC81b65a24b48219,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,40943.100085898885,1671167309,bafkreibglllefwtqseen5endlypgr3iqy3bjirtlhzcua7qogxqp2yqawu -0xBb81B5F1A5a7C604810FA719fab66Efa5Cf384fa,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.43377310132063157,1671167904,bafkreic7iwtsdcxlelnkomnt5mjv55u4aekm3bl3zel3htrw5poytdqa34 -0x4939C26C681706F0e780204C7414ae998758a12f,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.100160684025446,1671168053,bafkreid7hwyqwskuj355ufkb6tpk763xmfavoc3wnvedw5ee6x2ze2nzz4 -0xBac335098babC9a695dC059fBE5737949c5a24bB,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,,,,,,,,19.11,1671168148,bafkreidy244zxvg6cjladagk5wyxgu4rjs5bfsx6jwrwobtmvj2vbf4vhe -0x7fBdE8B27D2B4F164B66F2a9dc02bbD6697e5b19,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.240259,1671168166,bafkreig53tgffeez7vf2i5qhbuypet4kbr5ysem2epdgrodopaena2t3pq -0x4d477F1aabcFc2FC3FC9b802E861C013E0123AD9,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.19191703045671038,1671168176,bafkreidboqnfljmlldohxtcypzwbyrnvmj6h5damgtaxrvzipbudidqyva -0xCB45eCeF6780FCB4EeBBA8b08680a5b50568e258,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,6921.639122840744,1671168311,bafkreici7ijb67lh57rflt5v3w2b6iyhylmnhlsx5jf7zvzojgedey7ycu -0xde7104AA20770Dacc65a42Ae010707D9E51a2330,,,,,,,,,,,,,300,,,,,,,,,,300,,,,,,,,,,,,,,,,,,651.6093114664501,1671168406,bafkreicjwk65azrt2fcbgrejmhrhxxyppxnh277ez4hor6o2ejgv4jg4tm -0x9cD7D1981B3e15a2DEE4d512ac60E0579Ae18546,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.94,1671168500,bafkreiam4qpigxikt3wmyfegl4jqkwj2vu4co3ssooi72aedpay2i6vure -0x9516E80ba79b97D5085eA4553Df9E35022B1a656,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.09576919842496559,1671168661,bafkreihw65lcprrbcrrtgf5bz7oh4alxpbsk5kf64xnrzdq3ig2br3fvuu -0xDD3508149304F3868A993769F3911009abEa3660,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,0.2,1671168668,bafkreifhdgbnpx7v5tapzht4ufg7jxqiqempbhrkdxgkvcnkb24ks7ft4i -0x60663af31Be6Fb5F4c89cC2ccA07F0BF3B2CFA94,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671168729,bafkreic6gzdw342ihkjol7pepx3nqch3gz7vzvdxmmkytaupsfifndfx7m -0x894C933C4113fA86a84262F12610d4e8266e9194,,,,1,,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0544771196447604,1671168965,bafkreie3njhvzqsufuk2m24f3vmkzmcyomvfdjw7rsxhbobbfgjexpgslq -0x087Eae3a20901197F68bAb6fAD5966254c8Dd52e,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.12036483355126293,1671169029,bafkreifyf4jjjfrv4jhn3a56ir55b74ierdd4bxnclwubwvlykijzzan5i -0xA8169bfFCFc29643781d5d2d0d10cC7fD66ae377,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.070410461924732,1671169259,QmSJrvX4467cfMsUhM7ScuLigJDg95htCiFYyZFQvVM8Kp -0x4a4B920D19C6636311069355710C3201689E6d90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,44822.58864681473,1671169405,bafkreiamhxo5b3stda5ygpxrqdsqcpxomhphgsxnvzmr65dqfqkbewzmyi -0x4976F0788020c2C1A119f5251d0E53b0B757C3D2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1408.3785903313426,1671170081,bafkreigag4dkgd6ya5muk42zvhmgczt7f5x22astc4bul57nh564zadn6u -0x63d612Aa37942803ba62e03C2F6FDE6B061f6A6f,,,,,,,,,,,,,,1,,,,,1,,,,1,,,,,,,,,,,,,,,,,,2.007746658359618,1671170376,bafkreieeppp5o3ay7vcwfplrnij7phua7jtigi2jjr6alr4tfs4hkkhgiu -0x7E8ba3fA5f0102004e734437F18EB2de612C3187,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,5218.47836153045,1671170579,bafkreihmxigr2zjfk5fq7m5aluz4gqvvkpw3cqrb4oaeynqyje54tronee -0x994Cf01f34c51426bCB12bD30Ff7079E280E1140,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,1671170863,bafkreib7xblaxjawv3xw3bhi24nxk24fgcyrea5laoubairnlma3vtrq5e -0xb50edC59d7554d21A5a16b5a128BfcAF1279F2F0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,176197.72865468837,1671171455,bafkreidp2dmjhnppqxvy4kse3gy4izg3jjjyjjgk3qnkkfxvgawwx7q6r4 -0x5ab4bCf284031a67fd8cEf10d0Ef4388f0851401,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,15034,1671171587,bafkreidsbpednd4a5hxz564h6ruispockmf2szo6vg5io5u2orkbagc53i -0x20990BBf370e410898Ac4F5a9533a29b4f5fbd52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,21686,1671171691,bafkreib5xr727oibpyrkfbjmz54koxy2veuit4iz6mgbhi37ox4filnbpa -0x3F5D2058971DFd0103E3bF5E423620B5A42Db357,,,,1,1,1,1,1,,1,,,1,1,,,,1,,,,1,1,,1,1,1,1,1,,1,,,,1,1,,,1,,0.5801465730602591,1671171928,bafkreie5g23egl36acmmzsxrjspdx2tnpnvowug7umdsp4rpzs5ot73kri -0x079CB50A38e4A9b7AF49adA16201D00c25Ad965F,10,10,10,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.44439985715801,1671171957,bafkreidb2eahn7sudyyniew4ycbaht4bhotk2fmrv6an67drg6ttezlnxe -0x97432c12ea8C957C3aE2d59c9953CF8dF9CBc5b0,1,1,1,1,,1,,1,1,1,,1,1,,1,,,1,,1,,,,1,,1,1,1,1,,,1,1,1,1,1,1,1,1,1,0.5,1671172106,bafkreigoebxlu2y7oxxpte6sajhwud23qnd73ba7pnccsu723vsatd7dki -0x472F916934161Be833E924DA2F31b8100F321eD1,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,1,1,1,,1,1,1,1,1,0.4014177155344104,1671172191,bafkreichkgclz5klaiognzfiaxwzbnwdmwy3r457shurpvkbap4jmlfjni -0x2B29833a831207A3B92102b0708B32D624AA0F65,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.136459298893462,1671172200,bafkreiazw4fh4uprljvst4j3qubp3lgovzompdca7afzjevlwkl6brucxm -0x23fB34F91Ce9Dc6D8B0051BAaba39C16a1352222,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,1,0.20469285639342644,1671172304,bafkreihthtfna52sz67c4ecl3l7hoockjejqph5gena2zblv6izth3mdiu -0x47A76DF5F20b7116A33B9715bC73092Fb3690b36,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.131856012616721,1671172414,bafkreiaf27xy5nu5ycvudwws25rhxxeiqq5g32mqmx7nfjauv3stppgn4i -0x6071E91AA75f2D1ffd8ADF308D76bF3c97E3A108,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18384.21576496257,1671172566,bafkreigvskfhsj2deasrtonup56gicfdvndp3haiw6tffojbwwwy4g7wey -0x88F659b4B6D5614B991c6404b34f821e10390eC0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671172618,bafkreihn4h6mlg3gx56dptq3fhq3tbz4oypuau2pjafqfuyjxdk7iu4vsm -0xF3903BE7516c9e208bEc91854b3d9D35c709716b,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,10094,1671172889,bafkreifjyo6ip5pldwwisfyt7g7n56flozq3eqnx4mb3mhm237tkxv53oa -0x61Bc7Cd78a974bE5D19686142F2ee9AaEf247974,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,12992,1671172937,bafkreiee4i4euzw3yw7wjciwncxebrdfs5ctszpb7ylxpjlusilzft5mli -0x258855D09CF445835769F21370230652c4294a92,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,50372,1671172944,bafkreiepv3bfil3kz5awjo4o5gss2cnuluffpk4rcsf3ebmob4tacnqaca -0x768A836A225c6Fa3A570D74BA3d6375d965cB38A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,0.4320223149654717,1671172966,bafkreihaa4kui4423hjhfioiixlme5dkrlxmgvmzwjlixw725s6ifbtcpe -0x89C69e649EF9ADc6646Ae456A1D8D6e6022f4695,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,16034,1671173042,bafkreieinmbztcbjglurczntnwqj7ytkh277hob3xwhnl4zjcvycckavuu -0x7e651F5f597436cD0fa941F5FF2cD45Ef3F2Fda8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.049943,1671173059,bafkreibvagwuzubrel57a4ii4kxvz3wy2i6qhbhyzzrjtqjzzynjckja2y -0xa68aB6d6668745c4585667aE4a91c0032dBb932f,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2448246471012847,1671173085,bafkreieskkrqplv4qnq7wzatcdjujz22p5uoscd65s5pkkeqr44cbsfbma -0x4e8D75d8b17C0d7D7FD658040CaCD6aD6b206015,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,30282,1671173134,bafkreia2c54wrpjfmrfxc7lu4oplbcqgkxh456uvlu26gcmbdkrq62c7pq -0x07cBD4e4473140b6078Aa987907aafF5E500b9f1,,,,,,,,,,,,,50,,,,,,,,,,50,,,,,,,,,,,,,,,,,,28.755825145340467,1671173141,bafkreics4ohje7m76z66x5n5hliwyzyfrlwr4ojyvxp3jv5slgd4gp4qei -0xa928E40011D5991f9EA478c7532807Caf94d6859,,,,,,,,,,,,,50,,,,,,,,,,50,,,,,,,,,,,,,,,,,,15420.555049179296,1671173238,bafkreig4t4niorbfv4e2pbkzt74wsiged266ob6eucy7ujhjhg2cpse2q4 -0xF278b687d9D41DebDD34b4D4B3EebFd8bc198DF3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671173544,bafkreiazqxxhii3aa46gfgl2eet52zyab5fvrehlnr7o5uy7gbjntwk6yy -0x6a93693b70022b1d0D21E3ca4436dc748472367f,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.326225483390474,1671173605,bafkreiafbqqih2bwomxg3wzrulnkkyh3vggtqni2pl2ru5n3ki2vbnjb4i -0x4930D3d0A85848F25B6F89e99708909A82F853e8,,,,,,,,,,,,,,,,16192775,,,,,,,,,,,,,,,,,,,,,,,,,14274.13563035972,1671173606,bafkreiatqa4ozqecos444aj4h25olsb3qdmgcngtfptl6z6io3pckf2bsa -0x1d8c5303DfC01D3a486fC7133958B45720CB314a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671173673,bafkreibxoror4sq53fdldqdbt5swebxmybdjv7t6pg4iuyz4berzmndyiu -0xb60Bbb26C8fFa3f43D4a1276657d802DA5653d2c,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,6105.103482684887,1671173749,bafkreiex6b6ngsd737gnsplbjfb2cg2ykojkgrbiqywelvkftqog4mtarm -0x76D03242952F35260D6A5cc697192808c706d83d,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,8694,1671173809,bafkreigruianiaam77psde2nvazodlx7226fh5kirmikurkthxa5awcyky -0x216eAcf4A2aeF0008e5fF355d6d0F82bd30914e5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,14178,1671173900,bafkreigjpxu2sd5ruzd5lzvlzbsakpc3dtj3iqw5ga3m7mcliw2t7vrwtq -0x7bF8bF27e3F300FeCe90EB785e4F09aba827eDde,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,20206.816949543398,1671173917,bafkreifciu2pqdunckxklup2zedvtswzydgujv7e2nqsuumdujd7z7cqfa -0xE48608C7Da53A6481A46Bb247759b6d3B0eDc6AF,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3190776074289374,1671173987,bafkreig3mr7fpc2cpog3depg77p6jaqfqhcrysan4tguvef7yilgbmhhje -0x44C4107E53a5e5e483a9e528B6Ed54508aB0c812,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1062.2521370331406,1671174019,bafkreihvxz7fovk4steeif4vvx2xk4xryreemqkzi7uzunptg4cnbbtnni -0x6f07a26C7bF4ed24093944006C77733d06595666,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3259947039503073,1671174137,bafkreihjzblryag5pfio67bc32j6mozvm4dtei5lxap4wvmrcfus6druqq -0xB8B5709D1f161A353bb5e902c0FFd761Bc4d8074,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,31439.6198676,1671174167,bafkreia6uykopvsrw56xrqbmnnmnovrsjaxghemfdpsfijhgxwguntwpne -0xC6A7463A7Ee700d035Aff7BFD1EE198D680A4164,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,99900.99676724138,1671174200,bafkreigc72hhwahhm4enauslhgvt3wrycitcjlrsezjch5qagw3qxvteqq -0xbC7D1F081039acc7DC2C1e7C06ab3879db5CDd1B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,4558,1671174226,bafkreiarabslx5kraapkaclrex7ocuu6x4v42oum36g3zuhgs5ygclutcm -0xeA4B9b75CD563a9E003bb9c16Bb7a963D2fDc750,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174286,bafkreidswpe44ufo2pktgjh4btrj3d26vf2d3hi3suwlqjn3jbkxwynpme -0x55f09FB7566bA51d822f1Ac2617037C144209D9e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174339,bafkreibxw4wt36i34qznkk573efwdby5prfkkeebtvaj6fd3mryzl6roga -0x944a79aaf88C2E9eBC647a3314712BDA4d0f331E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174405,bafkreigit33ailfc5qddyr3wwlklonyuorzmkslsjiremkqv34v7sovazm -0x9BA8575C255c9D54836c579bEe5901aeB6623e2a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174454,bafkreidgmkt2t2ew3myrgo5ky2oizgv6tv3wzk3bbgggc7grfjnhvs3chu -0x0DFa5f2efC41DEb13b23163DD794613b40444509,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174500,bafkreifgwnpaywv7m6lfnd5ctta7o5crqbts2sanukzfgutcw75j56m7ou -0xF957A7e0698E356BE75e4A25Db6712c11e682a43,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174546,bafkreibyhbnqfmf3kvw7uifefhy4olrhezmuiamsftu2bpix62cdkfapza -0xcd0b67a61E5e8F4616c19e421e929813B6D947df,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.000230998494134902,1671174567,bafkreiccr4tcygzrtxezapdlrcisuzuvlhh2ey5s6la36zhbwo5q5b6qmi -0xC8960736Beb04804fbd1301033d6a98820c09A9a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174592,bafkreigggzp4eqpifgwwnp62rtcfew255kf4eennib7hituloxo6kz6z44 -0xF507dBEd7F75389cf3f45292E7Bb4C12e05932b9,,,,4500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4457.685865202084,1671174625,bafkreidqv7ubp7wx5f5brngwcsn2iizfvo3qs7jcymctrodagu6xw2qfam -0x0b1AcD141937C85FB4aaCe0622E20a37eA006693,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174644,bafkreihbdiopa2ii2q47oobos5752q5c7nsajbjytubffzvjitv7zcrwte -0x953d8D6419F8B0F7B7a15e7C8009B411011a8B5d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174692,bafkreid3u3d2eniudybfnut4km2yitidyr5nkthmtbddlzlzba7hl7azea -0xdDA4A35346B9a8B6fDfE349f4FfC85e94718697d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174762,bafkreifno4gynqzhjqzogkmh5yqv64xoxharubkj46jdxpzpf53nagnyxu -0xAB884368Ab49d771CCcDc3f5c9Ff682767e450d1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4744580884427233,1671174798,bafkreibqjwktwkryuynnjlcema33bqmdbesafyq2zclr577e65rkro4yyu -0x01A49bB89DB31C340BFBe474f944944b96B2eBfb,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174811,bafkreignafcmbgj5cibf7iuzqyybleubenaznxrpcos67fovneqpzdmsh4 -0x469DE767E44981fADB4b2FDAc578FaCdF017c613,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10088.054601893731,1671174875,bafkreicifdyewge4i2mqaapp2wz3naiqgmmf7qb5qby4dffaxojeisors4 -0xFb1626C0311392c62723D06Fd3c9160404DA0f33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1.3025737922489966,1671174929,bafkreihhbenq476jgngm32znhzuyjnlgr4t2vecj2la2xxbw3htlk2ieuu -0x7F7aD73518C490885723B425a998921Bb3Cd309A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.7513647337185243,1671175346,bafkreig3cihgg44shgrdgnsh5bj62mny3w6j62f54qfi4bmi6g4io6ruju -0x11B540e8C00ee1B1B383e8c463B3D98155360BAA,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,16038.7526067,1671175417,bafkreidwqq34auuncvkwwwmwidwz5fe77gxj4nrxpus7272jlax425nody -0xE2C7312d747C54eB6E476A2Bb79EC38835fc2568,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,3390,1671175697,bafkreigsmcinhza7hnjwcrkk6h76xbr5rg4ygjp6tft3hbyeq2wur5job4 -0x43dA2bd51A514b3a3c1F90B5B482E99b0F787669,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,9965.90788028,1671175754,bafkreibutehfrovwzv2wt6jnhoxyggiwqv5462ts72vx4jpq6uzmwvfkba -0x758A7D086917067ff956aAE0732e113Cdd9C1d94,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6183.2330408900225,1671175794,bafkreicxw7rjuwv3ihwikxztszwsbo5th7653pp3wmiep7uf2pjdgvno54 -0xcd5609511a931dd5dDA9edE146aC83FD40f0FD87,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,27,1,,,,,1.5920637061257905,1671176043,bafkreifiywl2i6cfmh6opqkhuvqlvxrofftpwxbp5yxkga6fkwlxuvloc4 -0x06d0f03416fBc95a69BfFA1374E597F8AEF752D8,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,22230,1671176136,bafkreiftprqpwkhnl74gux7nazazy4i5pd2q36ak6tarnuq6m77q3akfmi -0x821cC25a6b6E1d9b80b3Ed99Bb0B3f85cFc18693,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10093.23029,1671176198,bafkreihkmgopny2rzbd3elwzmeberhq7spyczuximo6uuqnshbqs4uql4q -0xa22D6bd7BFeca97C60063087265a9Fb2BB8cCd1b,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,19595.813010609876,1671176208,bafkreidxbgmerztacdfueyy6pyvvqesen7fchuqz53bb6ta7fjlidirqb4 -0xbB2844146f40689b1fE38460935e31830204c104,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38124.80816665569,1671176426,bafkreiggxo7sc5qya2y25ya2dsmqw7ompdulq6yxs6vbdkkgzm2wyqbljy -0xdd4098207aF1d675B690053F0057A5d97D8B1C88,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.46367385178273024,1671176431,bafkreigrnf35ozkkbagugtrxihnm3xv2ua4iobr3734mzthy553efv76ei -0x66DD2E46331219D1046B8452a04806EB6Ba07EF3,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671176436,bafkreigqg5ar3heprzulsk42ysyd7vxljvqrh767s7xscq36rt3nzaxinq -0x775FBdB2273511a864c3DF883BC3759b12474d26,,,,3,,,,,,,1,,1,,,4,,,,,,,2,,,,,,,,,,,,,,,,,,13925.806057133295,1671176563,bafkreietyhwm2p6qrsgqztvn3cd6gbw7nub74oqgj2p35txbappzjtnpbu -0xCcbb0F60620ce69f7AbE647D937d702694EA94A4,,,,,,,,,,,,,1,,,15,,,,,,,1,,,1,,,,,,,,,,,,,,,16746,1671176751,bafkreig6zxkdyjf6tdjn7giauqnz6a34clm6afxat2rymbti66jpouks4e -0x6Ac5a8D0203b9Cc4752647f2aA4aA87C7f290774,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1615107177892012,1671176999,bafkreiar3aw4ymsttbrtqdyizxiak3k3jxp2l35r4to56tjbzkudecy4xm -0x6B87616D8fe9eb216975D464F13A82f72114af2F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1671177180,bafkreiacx67tijlqye7dfemwm3b5k7u6tggjeczhvwrc4fnrxjshqzkjda -0x769641550a8fbCb68b5a6216BA7E14c32414Ff4d,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,192.14069689,1671177208,bafkreiacdu5l2urumtvbrjjyeldikykrke3hragsnwggc7k5l2khp3xa34 -0x4D16f58F0030C794c6bF5AD9676559946dfad550,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.301,1671177210,bafkreihurmvemgny3npe4brydr6lbgfuc4ksy4fijwiwqszgigtwcmyhne -0x9A44CA4fCD041062477360b77Da67401252f1752,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671177506,bafkreih35a2bhvudyvwtyc22rje24ub24x6wbjuxchwqynr35u3jk76vjy -0x896002E29FE4CDa28A3ae139b0bf7bAc26B33a8C,,,1,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.97260353323612,1671177781,bafkreiemhszecjf65ufsmm6bebfnyiqpcf6askwan6ploorxgoym7yw3r4 -0x81F7c3796f4b024B6700A0134A1C509ACF920324,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3945,1671177824,bafkreihxwvvrx3fltxnxpeu3jbhw7aupef6zroh3empvpvdphl4fwkjqai -0xA12deF0B79Aa8226984F8a26076Fec579A3972f8,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671177850,bafkreigamjuo7pkmxxnb7ohwmlb6xtcthfpy5avrfaj3olh7z3ciq7txi4 -0xD204e260ac2b6295298151E6AaadC2C6aF29f780,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49719.262714758515,1671177989,bafkreihk57la4hvrke37k3m3ogyvkluqg7wev2r7cv55lssrnflopmhkxm -0x88AbE5f4Cb006947662A058d6ed82D62B7839036,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.304,1671178006,bafkreifuojpnoc74o6wyccrymfuu54iyurn5ky4c357g6fq4bwjobccigm -0x79dA9Ed4E3226EfDADAEd613d488661A40F38b97,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.31,1671178365,bafkreie6tsu34vip7ktqvgh7kxe3feizth47teicquxpgik7sl3obqtq4i -0x6fa0B5cCA8F1009541Ff697955813D2AA0C8CEFB,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671178609,bafkreiav4lwszrke66hmslxru2ehlxn6pefcl2kc4zenjak3iy6utcxwpy -0x078Ad5270b0240D8529f600f35A271Fc6E2b2bD8,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,1.6143336387207583,1671178696,bafkreigwllsl4fcuplgkeyrjmj3g6hi2ww3ed2v7oonytu5orhtehxeyzq -0x71213a9C9504E406d3242436A4bf69c6bfE74461,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.1762588894795614,1671178755,bafkreidjyh4x7r4gcf655oe3h3iuqgt5rd5dmcyejjo7jkzw3sun6cgb6y -0x82053fa9505DFBAb217499C8205e55b135d25B01,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.32,1671178819,bafkreieeug443yobj7jhtgg3lsuuxuy67buubybfnaicqfoho42oyo7djq -0x06e6FC96De94E49b771898642831F370A07E0f8d,,,,,,,,,,,,,25,,,25,,,,,,,,,,,,,,,,,,,50,,,,,,0.20767793,1671178846,bafkreibjcy4uhegfn2rqiul7mxqy5qbmevgcfmrh5kqrbghzklil5btvxq -0x594C9Ad8D38Fd59daeAe8520Ab1E31B2A866C4f2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,615.38446,1671178914,bafkreicbgm4mbkz7betq5npdcxd5pdt3pkvibzfiprzetha2auazjs6ucu -0x3178fC052C3Cbfcd2Bd2008bC9787eDFD12cd6DC,1,1,,,,,1,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.74,1671178952,bafkreig7u5uomuriiabasupwc4g76kb4t7x4ds67u2nxksbfyjnidvvaoq -0x79270E3BEe26D802D8EE8BB905235DB9DD94A915,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671179080,bafkreigh7jnaqq2j42d2gaxvoyymtwd4l424l3pcituty4ic57hl6tiite -0x8F2A0c6BDd5c1f61552558D2C0D2Afe6d3dC5272,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0500000000000003,1671179272,bafkreiez7suizgsdqinsuor4tiv7d4mr5xk3kv4tpqrqgyasvizjzgxklq -0xe8Ee3A26083A76F22Cde45E67632a17a143A9d33,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671179295,bafkreie7jvvhniuixcorrd5aykoblyn236uk6kq3f4jx3jgqdhffq3n5iq -0x29ee39be789aDA5cBb2051f4bDd70Dd735Aed7d0,,,,1,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1,,,,,,,,1.25,1671179334,bafkreic4i5zub5i3l7deh75irh32jbxwr6xwb2og4sugn2iworgb6koc6y -0x1D784e25ccFBE50b1f4e118F97765DB6Bc44ea7a,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.335,1671179527,bafkreif7apxtluwraqbmyb5n2p73bb627yblr3p5ghru7dqu6vhrfd2mxa -0x5244736b3A8F898149aE33f013126A20cE7abc62,,,,2,,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,2.8357027802918684,1671179586,bafkreibngjszth5zegs33qbz4zeysrxcnewcd5mwg7wu76tuytzzntiria -0x9979ac671fFd09e49D22790Dc6588feE74fa777D,,1,,,,1,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1,,,,,0.256421529490551,1671179651,bafkreigbyq4vv2gdpf3gp3oondxeawsmhcphly525z27z2w3ggj4jg54ey -0xE159BA4717fdbEA5B45dC49FdF991534A71B8755,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.33,1671179941,bafkreidizi5x2pv6rul5cq54cjb26yjisbddvyq2grtz3pxyiic6iij4mq -0x8C155A38dF395Fc6C913e1Eed4463c03055FFBcA,2,1,,1,,,1,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671179956,bafkreidfdi2jmltscscgaym3eqi6oy26fu5rvta24ckjby3tmcqt6e5dp4 -0x74264aA892C5C4B596b91F961B1387f94ef3d5a1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671180022,bafkreiana7ihtzsqafr52hlubdxayzzmzf2i5jcilz55w23onk5erk3h6y -0x91882B545ED077354310BA2015Bbd0994Aa0c834,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180036,bafkreid42ppd7l64hlhlvrt3fwb7mn3depuqsk4wykopxvrxb5rgthnbxm -0x9b67271c40E6bc930530aE45272cBD56Bb014eD9,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180079,bafkreicspevxz47mmdidasfib5xmtto5ltl4xu77q6nnpq3xbvnq5fbify -0x3A770AA35DAF18c3dA763Cfd8A34Bb550097836b,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180185,bafkreidx4soysmf646lp3k5rwh2hizbwecl22smjebvccgsihwhl7ayefa -0xd41Cd94FBA987fD46d51Ab2104a4707822666666,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.54,1671180255,bafkreidyd2sf2ngve2xqpsaenokpozp2u4aako4dnekrox7s2s74nc6ktq -0xd7688428E60D2cba8a9c3979AD73a2A337a6556D,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180266,bafkreihh6642lll55itqju3vsudsgq5bl7nt7ksytabrogfghfngbstbcq -0x4712DF6d282c8830081cc1c172FF47E04Ec7aC60,1,1,1,1,1,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180290,bafkreihsozconifzbarwuftblgo3bwlieqkmuta4355tjfy4vodgfrfspe -0x2169Ec73eeB5287Ed3180b401B6383BEaf5a2011,1,1,,,1,1,,,,,1,1,2,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,0.05569815079381274,1671180296,bafkreiacwumhnsiyvfsw53v5entlr3cgw2rlskr33wrqgm67z26cem6jm4 -0xE2c1a36f6d39F3D1698078e6579fCAbb779B5a32,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180470,bafkreihcwp5dv7mnz5nrkhtiilnf7rdy7himj27sznjeh4lrz6gsxq37ei -0x1982bD37E91Fd7a8c88805E9a7aa009fA804b1f9,,,,,,,,,,,,25,,25,,,,,,,,,,,25,,,,,,,,,,25,,,,,,1.5505916398832649,1671180950,bafkreiakablm72qouqvpbqwaxcfdfwhr4rkb4qcf63aju5ihvleoek4dna -0x70B7454d7bA86666E9d29B551f2603a6acc8DaaC,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2813053252,1671180966,bafkreie6l2yjbiiftoyqglb6y7ukvcxkak3ailcex3iwmqji5awboxpjmy -0x10f04eA206ec0a82A268d4489365BBD02f6ab41C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,41.7774,1671181191,bafkreieumf4vu24ntzo76f5f3t4fs66filpk66x53r4phsn72gq4awt4xm -0x15c823B0e6c08FCc75c8DaA930dc8b693EB477FC,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5190385478508064,1671181220,bafkreih6xmwb4dv4amesk3czeuzgbxcnxzuuawb2rymwxumwgd3rscp4pq -0xAA32059AAAdE38e58948067cf9f62293323dE1E0,,,,,,,,,,,,,,,,,,,,,,,,,62000,,,,,,,,,,,,,,,,62001.32505863835,1671181315,bafkreighujdgxxsextoybgfe7pcmpqhiv5fmqh3akcyhe7q6j5zlstttqy -0xe337a9212E15bE28148A4188dDca858956ad19F4,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,36012,1671181427,bafkreia6bcrpk3uco2sw6gs3dzsh3qehcfn3w4mpexdaj2ugu5ncgknusu -0x4fb63D01Dc521FceeabAc44E57bC675077656DEB,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671181438,bafkreied3h6ovokeeoioarqeu7pkiuosld7qemfm5dnhvdbdnnchbqg3ri -0x9aE6B470D238a4ab42cAc5fEB27CAA5A19F89510,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7209248689,1671181448,bafkreibnagj3ks7swdn3wxpkiuf2dknxgwnugs2dl5cp5g2nccpz2qeozu -0xd0788c420418a1E5fEBBb6c210715F36Ca885C1B,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2727176937054279,1671181691,bafkreibf3spkynr5zqffaj2n6yakvz2cm3xgskbo6mju3rs36hlrepljrq -0xab62265D80c6B88A01FFe8a7Edd58C2a1a7B0db6,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10966104063272286,1671181725,bafkreidlqjgg4govacfchv5ta5uo3p2p5f54fkyc2oc65lgmuju4lkadlu -0x0e198F0c34A93aea5F6bD3967cbD1B8F8c8C8319,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,1,,1,1,,,,,,,,5,0.012568103118443086,1671181747,bafkreictksig3ms2sooa2q6dkpj5tytzbg5dayv33earbzy566i6g6mfva -0x1d202DAfF74d2a6F124A95b588fBd010b896D267,3,,1,,2,1,,1,1,1,,,,,,,,,,,1,1,,,,,,,1,,1,1,,,,,,,,5,0.3124127692296935,1671181785,bafkreic3b2ierg335ajcgk3dfxom7raiamme47fa53ffqfrm4axtnnmeq4 -0x4EFf2F739B1B0d5719662f9094A06A742ed99c43,1,1,1,,2,1,,,,1,,,,,,,,,1,,1,1,,,,,,,1,,,1,,,,,,,,2,0.29481846854028226,1671181815,bafkreiaeyxxkjhr7yeqhblnhztnqj6lhpfd7ixdf7cj34f5nvdg53wsgye -0xa94586fBB5B736a3f6AF31f84EEcc7677D2e7F84,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,4,1671181901,bafkreia3iwf2skjauoquzpe26vkxmrixorey6rqei62gceb275w7bnxeie -0x70a913620fEE00f6120FDaBABf5d65291fcE8899,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,0.4463176584293698,1671181939,bafkreih332re4icdzmvxp6pv7lniamxa42skdukribxjk2hibvpk6ptg5q -0x640E8A83Dd64E9d1CbbBe9c4a1433Aa736def624,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4032241994156843,1671181985,bafkreide54e52relwg4wcaggrjg63xi6dlg6345ltz3jqcbtvok2ir6bnq -0x3a45255D69c878Ef45e012BB03f2E31782104885,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,909.1304600333609,1671182205,QmRLGZHs5BET8hSU3FGg7GZaK7moUaR9AFXcCxsMNBYvcn -0x95D8Bc3ebcEc8A8F2D3BdAFe141EA118fBD7Ca3f,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6867252996,1671182210,bafkreib7oxlts3xrvqqtngcbq7ye4dzqlb2gaufk6k2qzlab57yj4agxjm -0x3f170496f84c11668e00c572F391DFC5Fbcd1db9,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1.27792,1671182273,bafkreig3qrjxxjntcwxjfl2i2ncxrhqtiqso57upfedmapiky3ox4ygnmy -0xb689D0813EF8d63aD619Ae5716229eD0D994c2ce,,,,,,,,,,,,,20,,,,25,,,,,,30,,,10,,,,,,,,,15,,,,,,13191.307280834013,1671182378,bafkreicbfw7a5dyyokrxtrmzq565pgwp4d4wmxxtmxfdedy4dgm4y5nxu4 -0xADa29d37eF1ac3Df5D76413eCF752013F7870202,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.016362355333957024,1671182584,bafkreig2hmwxqrsgnvhqp43letpsy7vb5tj6cxu5qfo4b355bc74n5x4ge -0x56B5f8825173527690340B14D6fABf129Ef5f1AA,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671182946,bafkreicgxoewzjd3cm7c2st3h6foqt4xqux5ya4udc5sqvo6i7ayj6w5hm -0xAB3F34994048c2714CF403fDBE38eF8BEE79b4BD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.8248329645,1671183071,bafkreie55r3m6ky6hbanpomi4qvhhytdctdj4bvd3h7vakzxcnzjh6tbim -0x88441DCD4Bc985965e69ecf5A454B04DC84eD876,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.8933402603,1671183135,bafkreig3kos26pj3nk3b4gb2brdrdiwmb2fa47grtrmauy3ejshyxlpexy -0x245b0A88060D9e992e7950922c86FEA91dD40FdE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.6072429401,1671183188,bafkreihk6dt6txudeqau4r5ly7ybtzuqxh27ex54euad224gdjbm4n4ngm -0x670f2a946F731C6A1Aede41f27f2Fd4a378AbB5D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.74257786,1671183242,bafkreihcjlclbcvdlzxmuo2ncyh2uyytsyijxl5ndbha74xxy3zsw6yowq -0x3DA952Ccef2b63bf708f7f78A0ED333FaA5cDaF7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.84787476,1671183300,bafkreidmgx3y4lmjj63bbr2lk65e7io6skl2l4pkfgtro6rjf5j3tnvdum -0xB5B44C678659035cb6ff87E9F1393b54A4d0A335,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.62555928,1671183358,bafkreicxb64zzfmauktfdh3h2dz3k2yqur4nufaonhbextmqcl7go4x2k4 -0x3516175B2922dC53A8607E94ad34aEC9506011F5,,,,,,,,,,,1,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,1000,1671183370,bafkreififookfdppqre33dqgfb5yz6fcvh5uxrhxsawrwi4vijopghmlvq -0x0064F043786e8c597d6565FCBF4F0989Bdd0F9A3,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,1,,,,,,,,,1,1,,,,,,43.40180377005323,1671183430,bafkreif25oppw4ul5ioazhguue5ya4ibhg5f4zj2je7xdw5vf2q63hv35a -0xA1118D2663D83857e858F12a9cE29D8FAa2ef62F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671183451,bafkreig42ea5oyczaly4uznoe3mfumlo6wkzumquaxxq3e6brbpi46opzq -0x608109470AfC9857561F9E33a3EfBE2547902302,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183508,bafkreicgotv6l5plb3ece2mvh2dok5kbt2pqtp2sbhbfpyrhgpnjbpx6pi -0xdAf45073A54CF4Afc3122BF39D26E9620192f1B4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.445030880635007,1671183556,bafkreiadnkzhc3ycedpeixrdhbl2rpamz3dvkvo5osudadguxpt37sld44 -0xccB5D53c4721c008a65Cc02F5dF10A9cE67C6044,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183562,bafkreiaq2ixtm7klzvkvtn4zkympbva2gevxdlljivqenoxj67j7abnzja -0x0426B2F8E43DeB95AD7A840F8c2a517Ee33c6FB1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183620,bafkreigbpuyaz4m26fa4v76yqjso6b3jheibkvwagwtoyrer33butpau4a -0x5acAd6E75bf6Ddd63aD5D88DbC9852bA401d8d02,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671183670,bafkreih6zv7hzvnxtq6ug5nzwsnchazv3ylblmnkjewbmwksnsaox5r5du -0xdc78107155918e230246439E4159FeA4c477eAE9,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,26000,1671183744,bafkreid7pvb57yuu5z7cn4kupfzxim7n33vnpxob4x4ohurord5yvid2s4 -0xD22C848BE105e341b8bbC2245B5492B02D6A11F4,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671183828,bafkreic273toi24okfnq4h5tn26cimdy6irm7sohpz7ndkzzll3osk4dhi -0xB49806Cf8DcDB108D318d6f4F7ab087851445D94,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,18360.64542231,1671183896,bafkreicdwaj2ymditjmpuc2neaco7eqh3lifjrbfcb6bvzpmndwos65bzy -0xf660623b6Cb27c161C7B98857b994362Cf58530d,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,0.5,1671183904,bafkreiconjfge7p6khsbe3hjzlxktrvg3wzv2fdmpbxqoydybzzyyxy2dm -0xA249ED6B533E811E3967205B49A82C6b092F8D25,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,0.5,1671183944,bafkreiag3zm6nzwpnigxrf6hmdm3aalt7znauqitxvka4nngnepmvjnbii -0x825df1f29aD0efbFA11E4175fc8a9Ef28136e6Ff,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,0.1074,1671184078,QmNtzUmK4H1MyWkUnWD8CMZXKaVySqYHDiV63vaP4M9Npb -0x637Bb85f830CFae4b5f1Ae83919cCA896c1fB6cC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,6,10,13,,0.004999028541701285,1671185054,bafkreietv46cubihtf2nm7l6a4rsmsozbuey4hleujye4cfn4wsus64cvm -0xCE95728d52bA3d54AD62959240c5eeccc2975B57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,5,,2,,,0.3762410339185059,1671185184,bafkreif7hc3ejo36jxaaseli5pgzxceqhdb5ulbpvx47ig3nbsks4z7zfm -0x1D04e429E74fb808767f40280F93a904ff091954,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671185224,bafkreibtbrof3pp5ukkpjdmooijr5vg5r374ipwdlqeiwheqlb7g7qanuq -0xEE2c2018eA41b7bF2F95E4Cc4cCD65d98f6945e0,,,,,,,,,,,50,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,0.648721518583398,1671185798,bafkreiddmibom43mrc52wdv6rtvgy2uudmr3hncfw4flie7ejfqvhao5d4 -0xcc16426C8a83AF0719C18bce84A7d66336A74507,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671185888,bafkreia2kb2u4ch4c5cg3hmddlr55z5hjciwzxdizbgcip3i7b6yjeun5u -0xb51494CF55127Ad1dcE2f0fBC2518FD51b43A3fF,,,,,,,,,70,,,10,,,,10,10,,,,,,,,,,,,,,,,,,,,,,,,0.7602896779573454,1671186037,bafkreieu3ltj4dsaybxakyc3qobvykvq7zwqgtpfvh3tjhxuif2tiyazxq -0x30bcF4C98e6967EB7e9A2166DF9A9b95848881f2,,,,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10746689,1671186824,bafkreigfy2ea7cyk4bzvo75txdea7zgyznq72un5j5tux66jvagm5nvuz4 -0xfC55274D4B5e885180403584Bc9A3B68022B8a25,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,2,,,,,,1,1671187134,bafkreie63m3s6kbpc37bph7rpms2bvc6hijmw7v7qzj62w6dxpvc27dfey -0x3be9909766f2D5c3bf3e587fF4E53790ba4E40aF,1,1,1,2,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671187208,bafkreifpoffbcxpjqe7kxfjsakklmddeka4ccpp774egg5jms5bntkxbm4 -0x6F0c3105444e9Ad288ed64674C12420593A1Efb2,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.08148075143835591,1671187233,bafkreien6bk6wudcvpsjo4c7oaiaezcbh5bcfwklifroby5muaqrycqhm4 -0x0D140f62E02879f8801a21B91CaC302aDe8bF7C0,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,514.40773427,1671187678,bafkreielvuqkmd7nkji3p62tt6cjph3urthgfdz3h45djt5kfn42bfwjhm -0x957e05840d80a31A26df11eE2DF13cc894b588bb,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.000067624977621013,1671188400,bafkreie3f3c3jet2inwxkinmltlwnaezhedpsfny2sfgnrejtzneek2y2i -0xe0a013A77C2eFEF233dBcF2175fc2681bAee47e5,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3007026484074228,1671188473,bafkreidrbs3e2oz2iwqvh6eyrddi5anheqoczhmegj3ja2ixih3zyofome -0x7d55507f7D96b373706C0131FFFbc4Ffdcb3B6f6,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671188520,bafkreiezw5pscevdn4j25bgztpivccdhfmaafhnvntmaliomuwz2zkxhzy -0x66373b380ee7ef78541ed93dA685E41Df47a96Fc,,,,,,,,,,,15000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13761.295,1671188554,bafkreibpuyy5gkyda5shgy44y4ywn6dfgctbtetjshlpsqsbj3ilueoa6q -0xcb02Bd278Da4F0d2385aD47622A80c844EF355A7,,,,,,,,,,,4000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2998,1671188961,bafkreieuv4qwutsytjnbrxffklbakm3kwf7rcsdaxwzvr43v374of46khq -0xb0D11De0F31a33684FBdbA3dbf008992ff418810,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,525,,,,,,525.3397644421311,1671189524,bafkreihuu5nlmgqo3izb3thpfgplfpzlfg4rbbfwp3u6agco3ityzdgygm -0x9E080f9bbB6C1DC91A29056c6007A0A529Ca45Bc,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,,,0.74,1671189697,bafkreicmihiu53q7xm6xaop4365wnffvptchvoihqgc3q7tkcpchti5e7a -0x492b4a8e71E4072d59d93B127f246055BbE82A5B,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,1.26,1671190424,bafkreibau3paldtg67wlj4te736x2ea3ad65fdem6hmryq3bvgasnt2ioi -0x77259366bA576CB32c3cCaa211192d276352E3AD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,0.03277019550513782,1671190581,bafkreig4z346by6ivtwuu7gv7smbkhtru5ljavc7qgr465prze7mwphpqu -0xed3e1B62ab2E4E0CD42EEa5F3CC8Fda33dBccaD6,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,3601.0846721207517,1671190814,bafkreiefl5v26b7wjfbbtm75bndsu2h7znzdnakgosaqsg255zgnbxcvqq -0x48A9789428F2067338D02B1EF3612DF64F05FeB7,1,1,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.94976,1671191147,bafkreigb2wt3wljvdwgualqoxx4id2mjkrm52p3pwapal4usngeclk6e4u -0x80131e57f111F2354A86Bc2Af2fEA414eA9C66AF,1,1,,,1,1,1,2,3,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,0.86,1671191183,bafkreiff6rcxe7h6iktjgdlvvzwnuxlrvjm5z53u3b3xhu75wozyvrc5ha -0xd007058e9b58E74C33c6bF6fbCd38BaAB813cBB6,,,,,,,,,,,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,101344,1671191820,bafkreifzikuiyfdxqmqx3dsvjjatnqm32u4breqrlqjddapzplgqo6lnky -0x7D5A56B2BF39D8B35DF46905EDf069B6E49A0265,4,2,3,5,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.03777777,1671192137,bafkreihrxawsug5lc375ekxtyt7a2bka5ghfs44nqkmxfehdkgue2k4dda -0xE73052aA21B655c70F4Aaa1F947f793C4bF7a95D,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0042322436732152,1671192345,bafkreidjo4srjmzh5qekeiwnmb3xirms2iapv6ranmf5ukp5g6hp3l7lbi -0x15668eEE7F45387ffF4020A7E9dcD3d3d2968477,,1,1,1,1,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.74,1671192573,bafkreiemnksg6wfvnmuz33gybujhw2wipsindwdcbhgmykprhlvflj5ffa -0xafb46441AEc7a2c9625c5c89edCB863671e310C8,2,,,1,,1,2,1,1,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.32786783305669553,1671192960,bafkreigyb53it4cy6scxewnot65bm7lkpkhzx26ufbedvhsehvu3e55pfm -0x400b06b7236F51Bc2B4a3e88C3bCc0E8cca04202,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5387.433149710227,1671193157,bafkreiegppwlhpy4amtxbgr2un5lz5mdr4qeavzjgwqo7kobu3ywfbggrm -0x0b4eE1BDA25C3aA420b74acb6E3877D6DC868a6c,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.09265654519532524,1671193385,bafkreihpkdfwz2f3kpl2fboa67l7txsugdpumvudtvjwvk6ukho3kdwhyq -0xA635196147B6e53cF8f1C48D28b887F45A8A4e4d,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671193519,bafkreicg7wpz3yab4jybf2ecoaaahtd5bi2m6qflfll7uatqmkfsyakqki -0xe7710D16410ec069f66d5bA3e5E700278e18B22a,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10733246908675693,1671193560,bafkreib65iltaw5z3cylrm2y2qlr354jv4guwe5xkqdtc5zbqa5gpj7lji -0x05087ADd640Eecad416E66e6DdD97A0c085F96d8,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671193592,bafkreif4btv6hrkhkfti36sjc3n4ylj5zv77se2acuplf5tenbb2pyy4y4 -0xbC1500dAafF721f626Ef1a4F1a8C4e333648c5A4,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5.373783960563614,1671193601,bafkreidhfzy4gnruzjyzj37dac5cjvstzeyae75rgieizzedu33djcu6om -0x59cc785DAD9E98a84Ce47388E09220Ab0E4396a4,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,630.8813065135042,1671193655,bafkreifdxrjk53u6xbndmkvr5si63qo4j6blueugypomfansxfoaoyqs5a -0x088A38c2C22D4766f3864D1309A4bE4d5573712C,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671193700,bafkreicfzcw4xvjsowghaml7milphyug7ruov4qbr7ymlaljq4dqdpqoym -0xd020E6a76bBe0139ec231Cc2C3160810048df405,,,,,,,,,,,,,100000,,,,,,,,,,,,,,,,,,,,,,,,,,,,15339.84392112661,1671193873,bafkreieaus7cvnoel6bapvwbqiuhhlkfdylioe553vghtimyopmxzrak3i -0x6A8ae9F1EBEfd842DC7E9eA68d48D0a9a753D5b4,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.2453614711826217,1671194551,bafkreigfqd4ni3op5cmg3vff7juundgf5j2ksmdefhmwuvk3remtchtury -0x6882726dfcC0fc223B63227270da89BD5e559e37,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.016950803702227735,1671195080,bafkreiej7ophru3thgy2hlmlsl4gmipntmytugfiwnp2sacfs23zxioati -0xBaC7fF48e7c958644258b8451e7392d229024BE8,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.04256805584064915,1671195159,bafkreidhph4e7snw5pgzvyvzyaw337m5regc3mswu5zkjkmtket46ksjou -0x2B6E0ccff545c428CeB31C539d00Acf7aC9b00B1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10977578776915364,1671195458,bafkreidtlmb2s6smie2cdai4x4bostj7v347zm75zs4qhwph4ritjo3o6e -0x09b6fB5d910d675c6B12CE7906CB6cA30BCBFDb3,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.517242280040473,1671195522,bafkreifdqbn7s6k2j6mvze5vlytyvfp6aepjbatvetaokk6esjbeyxptoq -0x7bcdf76694d630F32Cc156520D94ea8398F94571,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.13620112,1671195660,bafkreidtofy3c4jdvribo2xpuepk44wqwazfsuvko2wddl2om2ckbn6wym -0x3420C19BCd121E6fEbCC20Fd502B14A71C2F857B,1001,1,1,,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.19504697,1671196018,bafkreif4qilfrgjj7ktpcoftpuwshpetbhi2ywvubbiupttf7kl6lqdpee -0x8d58eA8a2BdFC72B5F0C0cfd2473a4D92F998902,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,109.277396454534,1671196038,bafkreidasjivvpwvlowerj6peggtexbmp6l5q53btus34wmiuydamdnqoe -0xa8fA325872A3929fa7a3BBB6bc7CcfCBAAdF2Cfb,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.52,1671196040,bafkreihvuij4ou5umozxosmlxmvnsrok3hwpf2aszkp3fo4l4kh47ee6yq -0x6C7f3cdd089fcFF4F24C78157A92C488D011d91B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1.001786591030274,1671196218,bafkreicevdzb52zcbpwt3vtnijyia7ob7isen2uhevom2owqdslxcn5opu -0x05f7F81Ef8b158be44b96A3a3Bd5351BdF28946c,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.3973101599657906,1671196406,bafkreiedzjwgjyounmqdqwzs6kovgudvofwbqmrcsuf4i3avabrg2x7ocu -0xCBb54Eda2048b57d1b0Afb19a73948E9D58B6973,,,,,,,,,,,1,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,316.54980272731285,1671196589,bafkreighyui76vogs4jqcp2m66tc5lxt4l5hi7hrs5roy2cvav3h2th2mi -0x3664aDf16C2a4691E21EFdFCDde334891c136AbF,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,388.856234024717,1671197379,bafkreialyqcqeof2656agglyabof3l3gdljn735wrnnwoinxgjs7wm22e4 -0x5B0c276E9Dc16B113b1EE36bfA4f1113750A35a3,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,5,,3,,105.942079609764,1671197785,bafkreiggynsquq666rq56qhnt2i47pwtnvbvkquwgb6hrrse3drz5vqgwm -0xE2294705AA121D149F04d3c5916019BF3A403169,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11974.363363923994,1671197999,bafkreif5fln5ndppf547zx2rkmvzqtuoxoh5gygpi2qk7u2slymk7nvl6y -0x9ECb420c8177FD28495052439e0B032b94291c91,,,,,,,,,,,54,,46,,,,,,,,,,,,,,,,,,,,,,,,,,,,64357.6354,1671198144,bafkreifkt5y6l6knew3r4i7lvi4zooawayf6a7aermivs7i7jqgzznbxfm -0xfd12bCC3026B2BfBC42F7A2944450A9b2C3EcAC7,,,,,,,,,,,11,,,,,17,,,,,,,72,,,,,,,,,,,,,,,,,,115521.15,1671198299,bafkreih7e2ynoin5qoqiecb7z6tgdmfipehwai3owgwd5giij3bj22kgqu -0x5d977C17b93cF836f63e3E38751f8E52afA711A5,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,58926.21,1671198375,bafkreib7gghlssksjsnxkyjlor6j4ku762d3vdo3gr6o3fbd4yeslg3oje -0x0678e836C26AbcFcd2b7e49559aA1a8B0f3ad36A,3,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,,1,1,,,1,,,,,,,,,,,,,,,0.14547604914987,1671198464,bafkreigjjmdn5fh4i5dj4vfts2sjrqkzsptek54orjz3dmg5lqxsiiirdm -0x82F23De5A474fC904041c357576aFE53c30dD250,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,5097.333167065434,1671198564,bafkreid4um3t7akealkk3ajqqda2g65y4dwmz2mcvqj6h3f3ztnmhoexbu -0xca833FCC545c8678F23514907e4CDB31073fAE41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,4940,1671199891,bafkreifqgg45vg5yjiadg3gdaujspdbukg4h5iao3c7x2sg5yn53emzlh4 -0xF8e9a3E9B4054D1ae3eEe530C1b558885cdC6D9F,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,21.73637850917692,1671199942,bafkreif4yxlo7nirjnnrjmhl2t2xu6egcwv2jhwgxeyqnb5svkvlshlpja -0x4cB7BB7B9606a0F03E46229963766cEDBde1880e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,11592.784020874786,1671199983,bafkreidrdg5inqn3antalp5v6rgyhcsoxksgh4fehmenzgerqrmkpl5vem -0x96e5478e73c4BEd24dd6ce1874105c3832b31a6B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7487.891795143783,1671201819,bafkreidndhp5outqg35mzxbygwmkue3knjv5cyia3xavagp5lqi56rror4 -0xE748d8aF8f0088dbF8CA7821929cAE297c1a5da1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7496358969248083,1671202408,bafkreibfgf2y4ukqw24anyuaiajlgz53hw3m77h46e2kcugcpt2jtuib5i -0x9F9EBCE72C0715CdbAD4d589986EB22F6782A1CE,1,1,1,1,,2,1,1,,,,,,,1,,1,,,,,1,3,,,,,,,,,,,,,,,,,,0.13509970429591345,1671202838,bafkreib7rzfwz6tzmzxa257eczrnxg2or3vns2ha7lhxinmbpxcg7cusiu -0x2FE2ceA1dc2Ad8Eb8a3913C91c33C338aafdFb40,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,29054.08837171794,1671203015,bafkreiecgnhndf4s4o27db4nzburk6sc3xv2run3o6y6qox6g6bpkpa6y4 -0x2127dBF1B8b7022Cba6Ddc600BA7CeaFfEfd451B,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50039.87127211457,1671203104,bafkreifhu2lxtxwvn4ztmlwm5vyjlx3lqcc7hgyqvkmjnuvicxhzkjkwki -0xeb0DA32C9d1aA1aAbf37798B347638E57bfc6a6a,,,,,,,,,,,2,,,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,500.26748064,1671203217,bafkreicxchux7ov226vh7ca3hfjcfu7weqfoeibdah3z5dimoal6zukap4 -0x2EFDA14A0bdF5629aC06Bb1fd70Aa09A7d382a3E,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,,,,,,,50,,,,,,1299.2708451203305,1671203697,bafkreicr5x6hh6ym47stqursqohrgdexxluktzbuhqpbvyc5gi6gkps5xu -0x5da896f87CA23a2A0c9b411274F997180618F1EB,,,,,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,637.5300101273529,1671203766,bafkreie5ine26mmqhjt4mqus6pqbrjcgm6aypvf533bfg65k4kqily65nq -0xf843B6F5E0376483273B92E88caa20b79aaB46eF,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,,,,,,,,847.6853764291736,1671203876,bafkreigyxcz3qr4lvzaicr7kabdz4uhyszegloygmpwnynmisvwcuek2j4 -0x79b6327487E1105E747656715b4cbbD38667EaEE,1,1,1,,,,1,,,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,2,0.04786973608421607,1671203886,bafkreia6344444536k2sv74h2fgziv54yvwlpnpv2htvdrpvrxwny4bioq -0xeAAB59269bD1bA8522E8e5E0FE510F7aa4d47A09,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,32.47867182247146,1671204183,bafkreic6k5zmo6niypkv7br3m7b52q4df4k6gw5ea32a6oymrxnekox2ru -0x44c616d081e728189d2c1afA794BBC8dC0972837,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,,,,,100.00163217743646,1671204283,bafkreie2de3yzr6leuf6dw3yq7bdrjipihfii4hnrjrkyd252sgxytekam -0x700B46F4CdA1d668920C105247291C640E521F0c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,0.4437556986248575,1671204298,bafkreig4kedegv7bvzazclochtj242gtgjna7z7z2s4g2fmlqf5vteumre -0xbA86E23E64828781A43b71647cC2D2a32BfE8890,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2.6612,1671204533,bafkreig5plza74fgtdzu3mye62h5ayc4g4icsmzymfp2snlriz5hovdbrm -0x0765b64e5c831b0DB47eB50689FAF27640581F46,,,,,,,,,,,1,,,,,1,,,,,,,1,,,,,,,,,,,,,1,,,,,1.34968,1671204583,bafkreifx7gu7pbchnrpu5akw4ypxzrgvx64kvqoakhtobes5jkmugntpza -0x56C0A595C18bfac8498f0a111321a6c13F0C6c8F,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,5,1671204683,bafkreiastp2xwn5oypk5o5vx3eqttpddeua3o7sxqqpmdbxcskrwpdhoae -0xC9fF715ff5fDE21a10c8054085a756ce098fE896,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.349027752954284,1671204748,bafkreibixdfitecyxgajrrbsezs66f73ivvkoax3oajvqf3lxa5gtmcpn4 -0x96cd55CDd63F1034591b11A9003eAf16e7fe715d,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2256.600830942315,1671205499,bafkreibcoznyjefxwfnzttx44ga6xs2ksifbh5rqqwzqdvq6wtpzysz7jq -0x429caDA80d5151BEe07478Aa3998d7fF662c934a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1975.1090068795834,1671205499,bafkreicrtzrdzlq2lzu52w3heqezoy2e2mvxpu4h6vncgpjbc7o3gxfi5i -0xcbf14703817ea9BcD920c45e073E43720220B971,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37347.998309205395,1671206097,bafkreibonnddz6utw3xyjlmubpblhoyirnyiusk2lcjuuvla43o7lzizvi -0xec47741B1102b74C51cd673Fe5572719aDd8a838,,,,,11550,,,,,,,,8700,,,5700,,,,5000,,,7500,,8700,,,,,5000,,,,,5000,,,,,,54130.600902104394,1671206339,bafkreicdkhc65eu3ggu5mhpmxvj4jneqwht6re4wwxfr4w6rjyiuorhsam -0x9b2445f17BDa06F29375feD1B00A966aC3EAeA6b,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6995075402796984,1671206651,bafkreibc3uxxmgrqobsaaiisqp3y4l6466fvkvfmnqltp4b45krfz5lnie -0xA8D57c23cD6709d47efa8760c50Cae13008e1BAf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,102,,,,,,1.1860387250983817,1671206730,bafkreiaqy4ubs2qktq2dyekc3ohih6ln6jb6wno3qxhp342iq7ezczwi6i -0xDB561628fcaC1f08Da4C3A0ab130705d542b2161,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,101.01022129,1671206739,bafkreigcoj4eddlu2t2we7ztdv4wscip2frlf2qh2zj4hgqvck4csawvwq -0xCBA711BEF21496Cfd66323d9AEA8C8EFd0F43e9d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.2553455619303106,1671206804,bafkreici4gqu3pz6xhyh2bgypwsn7sn3wz3i6pwyqs2pnmlxiw7h4o6cly -0x302Cb4B44dAD92448078e82C04b033704D558EF7,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,35.8684240097027,1671206959,bafkreico2ryn4gjzwu2rj7shkufti3lzzrscplvnra6ss4aov3zuonwocy -0x681a8d5212855d6953BA425f8D6E94cCCaF26D5C,,,,,,,,,,,,,25,,,,,,,75,,,,,,,,,,,,,,,,,,,,,5803.43,1671207283,bafkreiaf6yocmheoc3lesohiofhbcdwuy56nmsdpr4vyojhprl4qkrkh3q -0x46f374Ac4a4E6779973812e051e72d9d6379e756,,,,,,,,,,,,,25,,,,,,,75,,,,,,,,,,,,,,,,,,,,,2121.2305254048565,1671207422,bafkreifjfpojx2wyde4delt25c3xyikktfc3lpa5lhwuqbmbgz7ykl6wna -0x83C9440dc34DA00c47A0d4dC2b598d7BDB1b53F7,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,1.7676241269289703,1671207481,bafkreibzk4rrxfw7yo3wfjrjvgpntezi744numrlkfuonli3us2bivqfhe -0x2BBc8FC8DF4B96Bb0Ab8090C15e0128176328465,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,29.34747896430588,1671207506,bafkreigy4f6grqrofrcyswiy5w5yddjc26cc7semipqvnltc3s3d2wnime -0x919537727FB3fdb5D6646bE93D615122ffA6ed20,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,1825.5232547186997,1671207541,bafkreiebdt742x5gpayklwzzigm2t7my5tps3bcg2kgecc5az43zrlw2w4 -0x2D73dBD5C9b9CCc1AC273F155a7A335A88ED51c3,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,2898,1671207581,bafkreidqv3gazxorxlwkakhi6rowtf4odob2dp4mdk7r7lohswqo4tyh4a -0x40DE3299Bd8a10D8Ac3f32C1A55DE40640cF9B75,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.1837882513481409,1671208032,bafkreicqlak6qsrnr6zfdynznte2wrh5a5pcetpdhchkve5prhkf5zbvwu -0x49d1978DCe1a788A0e33Ac59C004e5fEe4093e95,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,0.51827,1671208076,bafkreiezajln4c7pbkmoblrafawsetza34jwtqtsalzsjieacvrdvrc4zy -0x36b8A824dce619575067A5a012dc4F7434953F43,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84.42308041,1671208403,bafkreihonvkvtf7muyb36d2xkvdpuyw4e3b2us24253lzy6rgj7apxuwnu -0xb197bcfd992ED6c07eFfe2ad662d63706bF10762,,,,,1,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.66434016,1671208579,bafkreih3eo6kijowmitcpgygvswoskuxskuwy3vinrztriz67knyo4es4i -0xfdc4ef8a7Be1ddfe918A0D4822273b5FB01a33f5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,69,,,,,0.0973639753565,1671209602,bafkreifxt5henn5zgdhq5jjenlqi2mai7mmrlz75wpzkyinmkr7oaesara -0xC4a0B44448C98f14a498e8BF98A1FC8f8Dbe2b66,,,,20,,,,,,,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671209681,bafkreib4e47kzx5fw4bmci4c7l5zmoslkdzuicxq2owehyq5pu62zrr4rq -0xed1426A8B06bD1328C3640d94e70E8c04f42F72e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671209886,bafkreifs2rpvvhbpft7yx2nefqgaiawohi4sq6fyw62ulqtfwmyhbpnqd4 -0xd73F607911967e716E9c275e71831d90C22E9bC2,,,1,,,1,,1,,,,,,,,,,,,1,3,,,,,,,,,,,,,,,,,,,,0.65,1671210151,bafkreih65e3jfde4nqlild2gb65wbgf4xwmdtrevp64cy2hl66bjobkhwq -0x26d82ECacE3eA30A8F61CEc406aD8b8df5c7DE2d,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.09437993920357,1671210162,bafkreie6rc6pidrcopqgkzuls2zjsplxkzq5utftnb4bamx2nlzay5wj2m -0xDc9C5e34959eC3643AF1e1D34A83D6b251AAb1eF,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.01381927,1671210212,bafkreialvjpvv3lnr243yesyb4jipehwb4b5qnywwl4jthiz2tdhd3prde -0x6bA11B425C35064D841088d2094Cf0A910E27064,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,,,,,12992,1671210759,bafkreicqbqgzn5zl6bxrbdga7eta4gv2zkmwlwd6lp57atchzgbrzsbtgy -0x2957C2968ebcB91f5683768a9bdC468d08C2a2C2,,,,1,,1,,,,,,,,1,,,1,,,,,,,,,1,,,,,,,1,,,,,,,,1,1671210851,bafkreifqcoado2plvys5w2kvvlpjsamqt2hkjdvqxzh3vw25luz5m7fskm -0x90DF04c7C80FC13fCBd24d7bfd9E9D1DAb119F0d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,10950,1671210944,bafkreib6o5outdm5visjazhnc6e3etd74moxnco2cqu2fkdjj7eayep7ny -0x940B06e1deAB94a79545Fad26Fc80b0593Cf3ef6,,,,,,,,,,,,,,,,,,,,,,,,,,12363,,,,,,,,,,,,,,,12363.4388340838,1671210965,bafkreidv6lvhxwtfltonxmjgmutyvmmhvgchp6rsi75lct34jkqnj34icy -0x19D7A7086E3a96E0aa783E59594eFf743eb12aCf,,,,1,,,,,,,,,1,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,1,1671211085,bafkreigaggrsafg32z5bpvwzzdcqmzvzuxzqplw7lxl3ox3sukpspscmha -0x6EC03eE16bcD001A73B18331b954542368F79e45,10,8,,10,7,5,,,5,,,,,,,,4,,,,,,,2,,,,,,,,,,4,,1,1,1,1,1,0.1,1671211285,bafkreiaenjkfw7pwambzixambgx2t4qesavv4kflecvgf2p4hjgxrqhj6a -0xB13Ab448612ebDe40D25bA8E229760f70120C0Ab,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19617,,,,,19617.018208970716,1671211969,bafkreidsf2qwstcz2woo7zr5pwslcxblbwsudev3hyyh6gwadnmbiggnve -0xA24a81bCeBBEEB8E6687BABF99Bb4d0F72C22aF5,,,1,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,0.08572442165927624,1671212476,bafkreibsixdgifphw24zxdwitxozy7vh2lximv57jibkbfb56bnxsvrmb4 -0x7eb413211a9DE1cd2FE8b8Bb6055636c43F7d206,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,313559.07832660264,1671213805,bafkreib7iyr3i4yvt6zmyk7rycxrfma4mslgsq32qf7qcijufqfzu54vbi -0xbb59f8ce665d238A9e8D942172D283ba87061F6F,,,,,,,,,,,,,2900,,,,,,,,,,,,,,,,,,,,,,,,,,,,2904.598055979192,1671214214,bafkreihbambspg2k45tfqcv3wiexqpgtpu2pxxinjcawru5aof7gdpnkr4 -0x9740F84Ff965f13Cd8C64B3E375CDf4dD5079e4A,,,,,,,,,66,,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,3016.0218223101856,1671214784,bafkreidiyyafmresrc2n2js3yaii2o6plphgihscva533aaoetqb36z6h4 -0xe26E7F7D5f8B554AaaA1564437708B0F73eF035D,,,,10,,,,,,,,,10,,,,,,,,,,,,,,,1,,,,,,,,,,,,,13696.87380755508,1671215035,bafkreig7jgmkt72mrr6u3a35dpb7667ed2qzs7izm7zuhoako7uifiarte -0x7AA46b228d0a865bA1Bb473f935079cECA20e107,,,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,,,,,,,,,,,10956.928028402404,1671215052,bafkreidepsiz34ttgbrhjd2sgtpvwbapjscz5vfmotofrhm2ylunk6bb5q -0x4650D0c9E3148A8f66AF374820AA2eCa0A47DAD4,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0657727312992504,1671215199,bafkreibtswbi2byxqcqcjsrbn3cgbc2pljpccnkeahjzeb2ugc7wrdlgta -0x92655644842aE1c96d4439a4eD9f56d57089CC74,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,100,1671215228,bafkreicmo2iy2o23whegbv6cb425p3x2crh6mxizuje7r2ndnmqah45z4u -0x5c149318E8295F398bB555dE04fe8753688782C8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2.053033639470262,1671215374,bafkreihl6z725qw3o5dg2qnitrdkq5qv75ari4mwzvbpozv5gzksqq32am -0x805C36F06e1f1233aA9617932431C425d5385Abc,,,,1,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,4033.7466748236775,1671215569,bafkreif4tdb3kou3bclcnmjgmlkjjvh6xepurvdb4e4nwsb4agipfapwqy -0x3FcD271Ef09476C4dE09Ac4e500a8E79008aeDcf,,,,3,,,,,,,2,,2,,,,,1,,,,,1,,1,1,,,,,,,,1,2,1,,,,,1.5,1671216275,bafkreihyyvnwjffkozur2kog4nmxljlkxxddtvpm7yo23fssoytaskghvq -0xF1A5e8075fBBDdF495a2A18E5De377B7741a6350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,1,1671216450,bafkreieclero74uy5eis5gbm62moms5fagx5x67nzir3ogtahuoh5gnjca -0x9550bFEbaa3a2b17be89B90c607ac07B3Ad8C630,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,14311.35,1671216529,bafkreiemr66h7eq6tgucxbds2lczffyo74acznqy4cxvhtypj3onkauz6e -0x2584Cd4EaC415B8fc5Acc02Cc6E552b13110592F,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0000889965265607,1671216690,bafkreiedc6pwsbjhmda7uxjuyxk7bmpxt66uflomm26uqcodlmiviqc5gi -0x6371D2309B7F79bB0FCaa6e7E8CeEEf8f1D4C484,,,,,,,,,,,,,,,,52,,,,,,,,,,,,,,,,,,,,,,,,,52.949334291317186,1671217202,bafkreibgcj5kjhkc66xq4lrsbjcwn2jjatrad433a44nkqk6dfylwjkj24 -0x268C824BE6856348A0c8A57F3F14573E16057FDD,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2.8724260212838457,1671217570,bafkreidfdqpwkvuz3udktngcnezcpgd6djaiu2mwflstcftbrfc7wyt2gu -0x2e8c4a0D5e0Ee4595e8c96B1570dfdEf77998A9A,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2064.616453126144,1671217669,bafkreic7omdlrehanp5y6ap6ryggmacir43hwrlprmezusyuhmwq4l6cni -0xe452D49486a37247040c7fE045eba3a55338FC70,,1,,,1,,,,1,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,1.0273526092158547,1671217945,bafkreif2oglvbrpd666xuffosfwt6ywo7xbaophpmskdoihwktakvg4soi -0xf3A11F948FfC1ec0becF7961d9A0C013249A573C,,,,,1,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,2.32908743782098,1671218184,bafkreihtglnngtpzbibrpvv6ngccso7cweovadwqqhpvvwtfdpvsbsmrvm -0x3A8D75b79a27d75107c697301E8120D6ee47535d,1,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.841923293145493,1671218482,bafkreicl5wzmsmodk75ruxclcwb2vsbpixvlxkz33b4c3gdcnnsqz6kun4 -0x7279F93A1C383743Fbcbb0730D9C7623BaC7e3A4,,,1,,,,,1,,1,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,1.2943157191481065,1671218789,bafkreieabmsvpxrxaz7roomehj4uvyqzjylp66c7mbxwwsykrnxcdd4ojy -0x547d7Ef04c005a44a3cC89109D2CC78c85679586,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671218822,bafkreickvg5pxxodjyj3nqgasqesct5d4d47fvalmvkzzjtgimllda76qq -0x27dc8063CAB466c901E554dA5113d0bE42D82D06,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671218907,bafkreicmzu6nvmai6tgya2esxujxymijzupiutb4jzlxlvnb4khspbzwi4 -0x9a74eC99Bd88ECA680485dA7F32FCa05Af375dcF,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1,,,,,0.43340849600165005,1671220292,bafkreicvlml6qumzcstg7evav34da47mdbtieuryryszi2rwr5tjkyyos4 -0x703746902985E6ca15d550B483Ae76DCf040B96f,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042.9156456662424,1671220419,bafkreicndvrfbwssrzkfq5ghneribptko4nhbabaysvhrec5qtxndg6you -0x747B4638BE368fad22139948f3f08a7Ed4244A8f,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.72549376671005,1671220530,bafkreibj4wq3tolfwzjtvuoas7fxgfouu2lrna3fop2ibankkctglmaueu -0x08e84a9fa044dadc4a2329834495eE12AD0845d9,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.8987945341781245,1671220782,bafkreihg7t7wr6uujnpeggodbadw2snkevcmvcelvousvjw3evkgyrsxra -0x38F0C7d7e92422B68f2d5b4a388c05Df6D531F52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.1538404847148487,1671220941,bafkreifg3okchlp3sodlsmicznsxcj7svbhbw7hr7raplbhgbi5d2aqydq -0xCC459846FF7587A972CaEFF28315c8D20390c4bd,,,,1,1,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1.1767782162315465,1671220946,bafkreifeo7yuhk5wxr4bqwrdpprqpyf7ch5mnv6o66nq7tpaaphcubcbma -0xA37FbD2264b48ED56Dd7dE8B9B83DB35561700eF,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,41052.657273307166,1671221046,bafkreige7bxuacdvmqiuxozm2kodoomofz3qoef2u4yaqphgdjyafqvvxy -0x78b74016f06EEA3D9b5498aa30f6981F2A01cC84,,,,,,,,,,,3,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,0.5561407619747151,1671221828,bafkreica7yun2nj5yu4fmdsx3phtu6rumeexjpzx4lmh42tt4hrjbkwcna -0x153321Cff12c46A8b94B916fF33DdC684182583c,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042.024008607839,1671222026,bafkreidfskudqvs6sjlat552iks2o7rtbbobebhnodvzimzgg7ina55wym -0x11b3637ab509Bd5F177d1382C8FAF41585edd108,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,51273.74947058975,1671222058,bafkreihjh5txyri6zlo5xhxj7c3wjltohjuooxf6yiltntkys66c6xcj2e -0x1CbD1cd53dD1a91b15adE97F5D78bb54dB598538,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,6,,,,,,,,1,1,7,,0.41018908201563425,1671222386,bafkreifklsek3gvq7mjjgijbrlfe7bv44ie3mhvbm42slmpr7lvlopleqa -0x6854FFFA71A4aE49df700d087D377a297C595386,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.02711050473202231,1671223146,bafkreihctcov2sajmkd5z4fnzpwgfiaavklhc6isojv2r5nk6kscav2tni -0x7baD8c1E1895F22cD594Bab7b0d5C6a2B1c02acA,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4987.378498674448,1671223493,bafkreidxzxzxid6bft2jsdb24lekacvyaiydjzpso73gck2qkgaatfdabe -0xacd32cf13855Db3A1e49e49e1b67206ae5561789,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2000.25,1671223700,bafkreiff2lxlbaojtou6odk7dtzcu3fcdj5vuyxlrxztgkdhnf6cqvdxza -0x66525cFdfE1438a1A130ac83BC7B9500912e31B0,,1,,1,,,,,1,,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,0.2168493754986168,1671224518,bafkreigzp22lfhdhpwtfql2yumonjjg77iddnduvjk3ddlqzlj4lpvxjmy -0x4453796B9cb9F43aeaFd511728Aa738569f6Cf93,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,9278.30676951538,1671227735,bafkreid6rn5mz73vkodkwrfik3x3goswlogx4az37xmirazea4rqvc2uwa -0x285d7b3C4Db8C27C9DfDb08D1808Df205f76866B,,,,,,,,,,,,,10000,,,2000,,,,,,,,,,,,,,,,,,,,,,,,,11743.882657884855,1671230055,bafkreihy6mlcduj3pvidppd52m3d4nu3tde6ptxkmyw6anndrempwuhjze -0x22811cbb477bd2E18313B7113Fc8b66ABe929861,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,24719.718437700954,1671230566,bafkreiaews6attbbqtvxqulkidl7c2yeiia6q74bdgt3grawy7gvyfwxji -0xa9f1efc2e4D79635B393cd35c5F4993A5fa36d8C,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,138.15225188541865,1671230749,bafkreihwshsipumv3ynbjlrwakirradwtsmsr3qet3wvg2qazamt26zqya -0xB083d214a934f556580f850B8dBCFECCEFe8ED8B,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,7530,1671231530,bafkreihqaoysbwan7z5agel36xvc2dpamrht37oig7vnyslfgopckzpqii -0x5af5b3f842fBDA3783C3fCeD36aE88E8A893848A,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2287.04180427728,1671231777,bafkreihdeax6ui6z6iswz5kwm5vzj2e4de2dzekkriu2s7pdljfkfplksi -0x1Db5628f9443A603615beb064106BB159bEdEebc,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,2,,,,,,8443.144801450919,1671232524,bafkreidtlawaneqsxphc54wkdo3yna7y3ab2p52vg2u7igclsaynab4dwy -0xa31c0D37b970B2aDF47ea2F606f4DF0b6D890bd0,,,,3000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898,1671232868,bafkreidqtvv6hwnikddpgv6qbv3js3z66jhbefuk7qvznahufg5ru5r22e -0x8eD57576E9219b2c6b966f966BA8dab65444E443,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671236086,bafkreihixnd6tcqbkmhfxgegd36icicmm5t6ccyya4k4g3xv4hnupzh3cq -0x0E98493285D6AbB9E2979C9A117C5C2Eb4EE3737,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,70610,1671236229,bafkreibgffkkdeycjgoa5x45gwsmws7rmho6qcdc3uilz4bdkec5o3cyxu -0x24749AedF18208aB74A8110E07E820286Bb5acf8,11,11,11,,,,,,,,11,,,,,,,,,,,,,,11,,,,,,,11,,,,,,,,,0.2428375704435186,1671236694,bafkreidnox5xotvx2njx4gch7t6iyum4f54q7j5htgxmimc445ov4lkp4q -0xd314cB3388D80236AC7111be118F86D8558dE8B5,1,1,1,1,,1,,1,1,,,,,1,,1,1,,,,,,,,,1,,,,,,,,,,,,,,,1.0331537342628272,1671236861,bafkreigg36d5xqysgw7p5kzbf73phhv7dhlo23k6yu7i5usev2uht5rvpi -0x8B9Cc341084337c0A5828BC0D5E20dADB197d991,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38646,1671236901,bafkreiavkd2gzepegfwr6wxqghish3odwwb7roqfjah46so5j72fk6cvae -0xE510058152640c40266D910eEA4c42bf58ceD7f2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,1,,,,,,1980.77669521,1671237143,bafkreib7pd4eibqlrxxoksczd2qyt6sck43mwxthlxhgbngslzrkcrtamy -0xd31A84c20bc430aD75E6a1903E7dDbee52211072,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3884820939313374,1671237659,bafkreias575h7nbp75tqcdhvdp6hbo3r3oualfnvkwsilabw3ermapw5nq -0xcB2940837b919e86899d62c19242fA49d3821F47,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3.5309229076074486,1671237864,bafkreiceuluoyexejtlttxibfth3u5j6hxaftqonbooy3fimjj7d6s2euq -0x63BDF2Cf160A53D38a08e69AEe860828c3a930C6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,62.95294118,1671238271,bafkreihzenfsxyj6l3xwt5myqlkua4oh26wvinayljmc2c5gl52p4wmjs4 -0x26e437baBD9388F20D00fDC7A45E26a516925f7f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,50,1671238345,bafkreieb36em4o7zz5zkpxokm44pctyxbotb7rn42y4qmx5adtnok7sh6m -0xB68D15Af9625Cc33BB7357c293CC0D82D449eC14,8,,,,,,,,,3,,3,6,2,2,3,,,,,,,,,,,,,,,,,,,,,,,,,1,1671240486,bafkreihjtjvvisl3ri6h7evdyz7zqb7dciri7ytyydaar7w227662urpiy -0x14DabD5b3BA60D97a22b01ea185c8124ADa6760e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,7854.519213651425,1671240758,bafkreif2drkjkklk2ec4ekx6nv5aa6jwcrfnoaak3llfy5k42rqwegoaj4 -0x510E74e9Cdc8Dd5627D652a26E49480A81264ED5,,,,,,,,,,,1,,,,,,1,,,,,,1,,,,,,,,,,,,1,,,,,,20926.185918820403,1671240977,bafkreif2fvd7qzngzuf537mg7nzlagyyfxp3m4vqcsonwh64bxmbu4732q -0xe3F97E97576b4EDAF30008a2586f9fDd417a745f,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671241798,bafkreieyo4srzkad3hyst3c34phjfxpgoc3k36nf7gluo44bkl2veojge4 -0x0928AE0e403514895B692476F052CeCBbDAd9EC8,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1461367596991081,1671242077,bafkreib5zuyuwe2cbhpzhr65bvl75giduzfelav2hks57vwqyv5xphkj2i -0x565Ef6Cd1d7aE856ff3D8A52607b8A0d81bF7E0C,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242213,bafkreihm5g22bkgh2g4zwol2enhacmpqwzutvtipkv7rjiz7h7bsgu4xhy -0xDf07b9f4394CbE97A8f1c89e910155c71fC1Ece7,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242392,bafkreidwpakks4szbfaj3uf57izbfdrd25rpf6v46tm2mxwfqmrz4mbqeq -0xD9b6bde79863135Ff29A5A5ec13DbadBa50eb3F6,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242517,bafkreickji7evtygfwhhyd2mkmrhqxaa4fwjj5l6vhuylcbyghwkcjwqo4 -0xabFD99A7DA59E8B96F1CEfA6E35FD03E6831Bc10,1,1,1,1,,1,1,,,,,,1,1,1,,,,15,,,,,,,,,,,,,,,,,,,,,,0.09448520374039082,1671245847,bafkreidxswxtiqycxtgzd3qgmu5qt5aegxguj2hqbmmz2kwgodr2kkbaei -0x4ECF4Bc90510794f5A4074136efb716485ae0dA1,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,57893.37653281102,1671247267,bafkreicl2qju3lzs7rfn7xub4m6hhfep4gtlqltv2v7fi6khdpvsv3ug7m -0x9b36cF890e350d4330F4E863bD2F20cec70Aa66A,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,17973.87520366447,1671249021,bafkreicpmi3pmbcmd63lffv4rdxe4g2pfozrse23dunrkvrcuvvh6lc5tq -0x64DC5abFE2147E1e361b64Bf7043867856fE548e,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1753.2158007959736,1671249129,bafkreib735tmt6ugb2xohtcy4pl6a532fmxzpceh3r4rrdjydnnpblez6e -0x671e4d58F407BE00fCC383732C020A7Ac1AFde73,,,,25,,,,,,,,,25,,,,,,,,,,25,,,,,,,,,,,25,,,,,,,14.004268150127198,1671249220,bafkreiabtpt3qjdsixsophkihgsuqhpckkj5bruhtrkrebka6m3w5q2tsq -0x33dfBf5aD72E69B9844c65801097501101B569ea,,1,,1,,,1,,,1,,1,,,,1,,1,,,,,,1,,,,,,,,,,,,,,,,,1.655324939038903,1671249381,bafkreiefjybnvz4ve5xtwka3pq7rq75uplah76m7gunuuoe2csgy7aw27a -0xA2201F091B2e8E5f8AdAf8b023b99322b9eA5E66,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,52859.62278816613,1671249466,bafkreiausin4uec5pltgmkdnfahcoydmi2ppxtqoxoo73ptah6j2hlv3dy -0xB3A26dc6dbBB8f4c7268Fd43Ca29338093d9eC7f,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1259.8842743322903,1671251797,bafkreidnkvaxbixewinhozwyhwkbmz6dmhveui3sgrbpij7q5kj3b525oi -0x50Da05bf3764a61908d5333B937Fa1f3d9900388,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2898.0500798374746,1671252101,bafkreig5bt6lrdwpkwjr6nn5djva5fdyorrwuf5wpjrxme463ehac5cciq -0x7F7ed74ba8d347640a0a4150751879eFA6a5c8CF,,,1,,1,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.01676514319611566,1671252818,bafkreialrwvm64tutakqosqxfls6feqveapf5ib3mnume423xmeo5zxrp4 -0xAC304C68737A133068230f0537B3E58c51E9dA30,,,,1,,1,1,,,,,,,,,1,,1,,,,,,,,,,,,,,1,,,,,,,,,0.0633398263693809,1671252893,bafkreigvl735puphjtwjygipactnj336y25rxcqazf5qemw7u3bwfx6kwu -0xC2d70fFE112d9b18c8e093B05C2f785B1CE7cfF2,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.23950044972721285,1671253024,bafkreidosuen6uri4htuogtwz4o6rgxgare634kp74fm7cqk7wbueasjui -0x974A4946bCE4dadB4F9d3B5c04121B41AfAF8e40,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,0.05118559999343897,1671253093,bafkreid5lob25jykybt42wjsnmtp5mxdgkyig4gjvrvym6af46ais6ka7m -0xbcD162B4a8063d72bF95A1f685D472a45B35d49b,,,,,1,,,1,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.05922929587951309,1671253182,bafkreieoxjkokbio6nubuhatxpiofbzgbbdm44jr7rjjknva6w6jgeyl2m -0x1111212AEd04902512911f9573FC146ddEc74CB5,,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,1,,,,,0.0430875194253828,1671253252,bafkreicn2e7tonk6vakceg23gzcbcplul2qg2nomuvnujamr3nfqance6u -0x5C42bDAE111098BA8E204D9Cf2692D4c861DCA95,,,,,1,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,1,1,1,,,,0.04635796911781609,1671253326,bafkreiaxaxujg2px3qawp6rb6btghvolzq4dzezzikxp6ga5ypaddkqi74 -0x72A7aeB720Aa7D5b3187757edcF4757fFdb506fc,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.05287214047356214,1671253389,bafkreieua6wufmbpq6jb6rhjbzck34464dnvevr4bzcaonvgq65dgcnuny -0xD45791D42C5dA0Df1AE44da5cDB99969595D24Fd,1,,,,,,,,,,,1,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,0.03685967796236578,1671253593,bafkreiekkmogbns2ccluqxzgwvez24fx22y7i7ufqlq725uaak6q5opq2a -0xac12BEbd2f2Ea732d18Ff1132062acF8a15C8E10,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.01020162168649319,1671253652,bafkreieqxuzh6recbleuzoy62blsksruw7hw25wlegtbdxtgma2exraptu -0x9A9De9D579Af85c5f23a06390078A5799887BD8C,,,,1,,1,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,1,,,,0.06979189808477027,1671253715,bafkreidfvalubtpwfae7f75cdqurhfu4s4zl4vudcexazht2l4fx2l4ylu -0x66d5d99C831D0222e1E4EFb990B75Dd5cA145068,,,,,,1,,,,,1,,1,,,,,,,,1,,,,,,,,,,,,,,,1,,,,,0.03757350005964388,1671253780,bafkreihswfyyv6si476vmlpxvm4jgtusgmk5t76cnzptpezoz3ha3qb3vy -0x1A74d0285a569120AA2836CB2b0fa58038ADB800,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5959737455390056,1671254285,bafkreiae6zzcwg5zsq4ulfgw3c2mkswlxz3gugwpp7vkbia7tak3gntb3q -0xFE274ff2846a414e690606c2ed2CCC4Ad6bB9C53,,,,,,,,,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,2044.957552074202,1671257221,bafkreihge3ngjjdx6gqbli6qfi2smvhpwlespg4726q3mqi2yorsta7yga -0xA884A2F1A5Ec6C2e499644666a5E6Ef97B988888,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1655957084693322,1671257888,bafkreieeoyi7f2oodebtacecmbakzqnqw4t2ugionjvklts5gkjjagkxyi -0x36fF5fF9a0311F7c15BBA1f377F66c48683FFe10,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2903.7911666851123,1671258558,bafkreidolbfbg2zxrxinoysicu3spnqh6qveaeuwidt7taoht736vz4o3m -0x654Ecf30edE43400D342Da2dCBc000d756882f64,,,,,5,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4272055,1671260680,bafkreidzq35y2wthjz4faelwpllvmkpxeygpeqkom4boxkb5cxr4c4nb5i -0x5574D6F75a59945A3D2e056D048816E11Ce12BF8,1,,1,1,1,1,1,1,1,,,,,,,,,,,1,,,,,2,,,,,,,,,,,,,,,,0.18917595580772317,1671260704,bafkreifpqwzidndg334h7qfiffbu5p2a7m7yqvjy56yusy35dvqolil3uu -0xdE1E4C3CFC5E2be601D7ABCd70a1167A3e0ABb7B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,30779.200290666053,1671260819,bafkreicjybqvcassefifkdaq7u6l2cdfeqpjorgoavu3o2pqldqiatrcxq -0x085ED975A8b6B860DE3C2b871da60a3f9F48A5B8,1,1,,1,1,1,1,1,,,,,,,,,,,,,,1,1,2,1,,,,,,,,,,,,,,,,0.17384810246927598,1671260997,bafkreiahzwzf276rxryq4yrvebjvxhkuh3axcqpuj65qxwtm2rxozlhgri -0x32791bbC7DDc9d0e6Bd914F3B7F73747132a3A5B,1,1,,1,1,,,,,,,,,1,1,,1,1,1,,,,,1,,1,,1,1,,,,,,,,,,,,0.3091705561948307,1671261099,bafkreiahjwtbl7ncewtjqeddwjf75pfuqgeb2tqjfg27bwghcvso65oo6u -0x17EbEe050C312567aD0038c0a703779401cb0fE0,,1,1,1,,1,,1,,,1,1,,1,1,1,1,,,,,,,1,1,,1,,1,,,,,,,,,,,,0.13382320122129726,1671261461,bafkreifgtvxlriutkndak3llzw6j466zjrc444scqfqbgiv2b6r7mkrmz4 -0xAbAeABC8d5e5bFf88579E5C5F434B56Ffbcde811,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,1,1671261559,bafkreifxddja56wtjcm5k2gidumstuzmznaqdnsu24recs2exnjt22lde4 -0xbCD8Fc34307CC53755b6082c41B6BA643FbC6f99,,1,1,,,1,1,1,,,1,1,,1,1,,,,,,,,,1,1,,1,,,,,,,,,,,,,,0.3029624755970485,1671261597,bafkreidwvjjfliczxv7jkiv4wde4h5wfuj25vmn43cv46vvc7quie25esy -0xd7b26011E6eB5857a6251da1f77E9f3d8AaC4489,1,,1,,1,,1,,1,,,,,,,,,,,,,,,,,1,1,2,,,,,,,,,,,,,2.1251145003999774,1671261823,bafkreihilanru4q2wbzmj43mch62s23drbjfkxwoer6dzqu35knhnmz6bm -0x4131826eaFDCb7dcd855Fae9098EC693165F157d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1,1671263034,bafkreiei6gqr5v7ipngsqumkk6qn5uol3vs4zikporp7wonwnn5gtmzm4q -0xbeE81eAd08A2Dc61D07fb5eda71915e099052EC2,,,,,,1,,,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,4,1671263239,bafkreifpqo4sfvyo3es5ckd6hrr5niixhsmtuxrobmamjidaret5ia2l4y -0xd8338299e6af9B38D23EeD8f8DB4427884FEaeC6,,,,,,,,,,,,,1,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,2436.902431680988,1671263330,bafkreifftj6md2f254qyhqjoontrhrqvgcu5oviobmf4o64oruhtax3cqm -0xcaAB362B715335ED09FF3a002CE8B4A9f9fB1647,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3727447105117369,1671264227,bafkreicqhbf3urgbkgqqg4ubxcdjii5raroi3o4yblhdems42whuasn3gy -0xBB8B4d64f99f714954522C3BFd21B1cB1A6DE9D8,4,2,2,1,1,1,1,,,1,,1,,1,6,1,,1,,,,,,,,,,,,,,,,,,,,,,,0.19869195039928267,1671264832,bafkreifq6b2brcdsu3flmxekx65tvwzdg4c3obhc37u2oa4hcka732el44 -0x06160a0fA426077554962C984c27939c80939d80,,,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,,,,,,,,,,1.4587230461295004,1671265265,bafkreicbsld7uomoenzgadcpkq55hxtre5i6zo5hcn5q5jn2r24lby6ntq -0x9b6a453f3cF839bB85bBE60c8fF8b757F5eDF321,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,2,1,,1,,0.1,1671265511,bafkreihltytvhr3deelvwavmc27ykd2gk43w4brvmtpynjqzilrbgqariq -0xf661216d01f19b7510B2231C9011D36fDC43FB28,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.2489,1671265797,bafkreicuykbolkentgcnwlk6fzjcqzezij5nlmrjioq3wjrz6x3va35a2m -0x8e62389Bb355821D66a449fe0dF384C5Bd2019B8,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.0936684794085329,1671266816,bafkreiaxjz6e5s4liefaeeply4esqkmfer7nz7sv2xodrnehzs34eesnzm -0x05717559F79C1446344590ECA181166d94b539aF,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2048.277602540187,1671268021,bafkreiewczr3x6yyszahkhmtzeg2kdhcrvaabyqgo2kmljgdoktrleescq -0xFb408FA20c6f6DA099a7492107bC3531911896e3,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.025727362655572,1671269969,bafkreieyqtliaylrdqqngxxx3jxvwiqfe55r2v5myvftfpij6ucshtukbi -0x819Fec659e1C225ce330B02e01f1e4c629E92A7a,1,1,1,1,1,2,1,1,3,1,1,1,1,1,2,1,2,1,2,1,1,1,1,2,3,1,1,2,1,2,1,1,1,2,1,1,1,3,1,2,0.011898285447481172,1671270495,bafkreicv74qxwjqow62io5fkjvlppm44i7n6ns5esrzkquyzjkp4kwgq5m -0x168F87fBfe36B84E44B9d06278B2aA1CC73d7400,,,,,,,,,,25,75,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671270681,bafkreid7rnflvtxj6ujkp4f253xyyxz3ln3p2ukgs7ccfvpgnl7wezthwy -0x61601FF524276FC864B9BCb417c8410984652871,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,0.5758154348201056,1671271731,bafkreignz2ojru4qznpvfpwke5qfppicboix75onq2pg4tfnawr4hrhoga -0x5b2AD6a2884f5F14ec5C6d3EA363E6F86Fe9109B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,7456.27419430181,1671272568,bafkreicgo6qdwu7o7uoid753qyle6ldut7tzz25hf2fe3tecpjhxovbr4a -0xAbe2f901cec5eb03B8ca6357F068b0BdE6ba004b,2,,3,3,3,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,2,,,,0.14089387472143755,1671274181,bafkreih322ux5hhqn5yepyhrft6bhduevremb7w73crzl75dhjvk72faae -0x44821E910e6b53B6c9a416abAd4Ec40e35463DEC,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2911490119206965,1671274980,bafkreics6n5ieh3jc66gtkflpd6qmdub26jfk4pzo5otlhw6tbrpu6bqkq -0x945276fb8750c8ee5b86dF4804903Ce66B25eB59,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,302.31372203,1671275427,bafkreig6aihtvillpgacp3bcypsgxlvnfbyexjupvqivjmfhd3hppylxju -0x9959eC3d692b689ecAEaAdb569c72109AB870c89,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2334.3521871329885,1671275475,bafkreiaujhttb46ep6xmnx2fertk64n74l6lzrgr7zesejt26deh7i7hqm -0x1F118bc49d12855EA7Db09E785778038b9E04F04,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671275590,bafkreigh7o4ew5nlguox4mzanql25kuhlpefrbvr6k33hixmbi4fthhhi4 -0x13aE877B17610348D2f926b6C8d56E2A5C944D23,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1779.1279651100947,1671275675,bafkreiaezzgb44x2j4h2giro6khal5ixzk2t6pimzvxkcaqxso4w637atu -0x8C2260c955e38665751a9927eF482Bb0cb23e3f2,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2665.96464336139,1671275765,bafkreifbquomnvfrb7vygcr3p73qnrqplpyeo4okqzfnu7536nrv3biqvm -0x4b900b8Ec1C7d8F0A9B602a803fE6193F4D5AF54,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21686,1671275836,bafkreianialfkxrosxpo7ub225rythmsd4alyez6g5jxu32l3berqlpaay -0x10D172F41Ea8A9e60a97DdAF86D0924aC57629eD,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1448,1671276720,bafkreic4ky7kc3o4aqbvpbysjyewjwb7sitcdrkfk7xntd2k7xlubimcqi -0xcfFf83681b41F78bf128c541854ae5d13B714524,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.07331805224391214,1671277548,bafkreic6qtuxrrctooxk5xlq4dsclypi3pmzgzyhfnppql7dffzckhsga4 -0x7DA0e97CB78832463914392B5d414C1bEFA1fB01,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.483727221262586,1671277941,bafkreigjmsv7lowzqanett5bzrcerqgjze5r6wnjcbc4j6pzk4onyolska -0xaB7b49bacd43BD4CfA41433D477F690Bb9E1fB26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671277997,bafkreib2heyqcwzaucjv7zvakh4v6knw33ipjilui2tze2wsicabitg2ji -0x6896Fc21cB49706f549fa9Cc9944f0492e87Cbb9,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.8055829781335766,1671278884,bafkreiewoqgpmcub5dyzraavcnz5zihujy3atlog4hkvlwpuvttkogucpe -0x0a5F56cBf9c27BD3beb790a4914a36eb45Ef08d6,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,41700.19814099805,1671279290,bafkreigiye4kilm3uqfuyl5irrmmnv4d37tbap5csudffchvjb7dvuvtua -0x1aD23FDc757c2843759dEF2FE404E2c32D41cCC9,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,0.8023387119877576,1671280520,bafkreihyoeoylixtxuin5u2fkrxb6rubtgrhxpcjyjmlgtu2zlmfkxjoz4 -0xc7eC028C706ec2FCfdCf66bba7e80DED634f6Ca9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,,,,,,1.25,1671281765,bafkreighq43vdkc4rxnp27b6yzzqigkrc5eqbxz7bbp3evefz2zea675mu -0xe7c0dE8937CA02F262C9357Dd7CE079C64045Bf7,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22.112020277962525,1671283169,bafkreid3lre55d5by35zu3knezdjnseyvxmmbb5vbklz3a3ykeoxmirk34 -0x75133Cc748f1f9b280118A65610c0d5811B19d55,,1,1,1,,,,,,,1,1,,,,,,,,2,,,,,,,,,1,,,,,,,3,,,,,1.393362118011519,1671284140,bafkreigikltomrbldr7okryzxt45pkflxekzqk5f5uteoycik2z4kpye4i -0x405a3c03094a9e35d7f9847C7C9F2F68e91F55Ac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,0.7524939049990644,1671286378,bafkreictfhdkkm6u5jwxzwqa6p64ycychrmkkd5isafgmaz24ly4242fma -0x6f8b3E110995DAf3c3B48b10E106a7860F3EcacA,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02918597651880387,1671288620,bafkreia6bbymll3kcvzjlxywvm6z5oblrnbgutkgitder2zae72dl7iaua -0x9Fc7EEACD27d38a436462BB43AD97E49106820D7,6,3,2,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11.087104127354513,1671288717,QmYH7imLTWtn5AEMaJFb7Q1AYgw9WxzYBwTZeoJX13677B -0x8d0EFE7dB232fe95f9073D3a0ABDb4b6BB7CC68E,1,1,1,1,1,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,6.676079358955183,1671290338,bafkreiabir24hjxmkiq3ohh74jy55turmvm74ktn3sbyslewidywifffqu -0x563415679588e508C0C8f0a729C9bF898406e9b5,,,,,,,,,,,,,50,,,50,,,,,,,,,,,,,,,,,,,,,,,,,56563.15403456935,1671290471,bafkreifj6wi4d4h7j6xisyx5qqiyjd3wzuofrnghgufdlj6dz2ouetbplm -0x98c366dbE6d98A2D6A3ED471608921b03f3abCCa,,,,,1,,,,,,1,,1,,,1,,,,,,,1,,1,,,,,,,,,1,1,,,,,,1.00013,1671291005,bafkreicdt6jimwkkn3ual6vt3p6xv7j5ppl2dw37yvlzngdry5f3owhrqe -0x416365993481e52e0472e7417656276d4E147A00,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671291824,bafkreig6cnzk2xiipixtowf2znuf5xhdeqrei4icvd5ek6o4eihj73rv6e -0x695617Cf7798ab1Ba9783C5d29eEf21722991596,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,0.9830142648823579,1671291994,bafkreiayp5dyf7bwhemio3bawhp6ci66zo3h6c4wpte5ptdaqvnnpyrk3q -0xB62cC7e91e4aa45D725E5bE32660982861911E7b,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.7494944549842599,1671292427,bafkreicl4ubidxm676n2ppxlb54hhdg64jkvem72udp2pluxvaascmmm6a -0xe8C4BbAeEC2286A7E312217E51d6ADE15BE4f1fd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671293964,bafkreigxf4yufxtb2anfscorlqjd34wtdd3ur26huzanya2gjdn6yvmmaa -0x1de2EF7a09f98510A507525D0Fab2d6c2A8c5e75,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671294056,bafkreic5o4ze7kr3l57n7zye5c3kucjma3lg2cflpsnb2qih7fetvy6cc4 -0x7F49Ea702931E4Fd84a6A9cbe96C804BAE43adD2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294167,bafkreiavet4mf2t4b5vyh3qu4fyg4sngko4sstcl3ffmfddl65xjere3ha -0xFC3d12Bd93b8779bc548e0acba1377A692e34Fa6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294345,bafkreid4nbfbrdkc7zvnd5brlnxsje366xckyacvspcl2ljyze42c66nim -0x2d9C2E2da61476Dc842D4F0F0c2792A35FFc20e2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294433,bafkreibkb43z6mvfbbqajqelopp2rebxihzz537qlyz4sgnsdwkf4c5q5i -0x49184A069D9811737Cf276ee27E90ab180A56e07,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294475,bafkreiaukokpj4tyg4hpezjk53yl4gbtg7ka23vgzeccdyrqa5dr7efkoa -0xa0e328f9CABB36f9F45904AF9651Ed32314E9F2A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,0.3065208566137737,1671294834,bafkreidbc74xvmjmxjdifbo3qtqopvlnabstpj6exa3wtkhdnhs6p76obe -0x037DBeb376900653E8b1744ccfD30f074f9F282A,10,10,10,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.40859718485822,1671296080,bafkreiac2sixvt7bnxngl6bg6hlqarqrvc2ggwdp5agqafrjnc7pp5xtze -0x315F8eA109dd7fCDa2b0e6b7FA4d7a4AB0e16De3,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6263815942921476,1671296187,bafkreiccuugmjfmegx7u35ha4f47iwcptoapudn2qpd6fkbvrjycgtgv6y -0xF5C7831ED9AD02Ae09236C4FC9f42eA2105C8127,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3824349258352667,1671296195,bafkreidex23u7pbrhtbb52axjxdd6zukbrmht3iircnpdpqxsibredphoy -0x13D0A01820336B22a6f7c64a72C64FE7B7a12858,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,1671296215,bafkreibg5o6yvlvqaurja347bx6gajznc3t4p3a2ooal2txhgn4ah65eia -0x9Ff5b690CE21EDcae135648f7ADB26c20f730761,,,,,,,,,,,,,,,,60000,,,,,,,,,,,,,,,,,,,,,,,,,58470,1671297223,bafkreicpafc2cmk2ytmmiibdmijsszexsaaj6wpt4v4witidljomio5htq -0x49B6E39bbDcA2439a91b29747818d0C364B116f8,,,,,,,,,,,,,1200,,,1760,,,,,,,,,,,,,,,,,,,,,,,,,2962.442319062657,1671298376,bafkreignglogqv5t5pd32okr3wytjhr5oev2iif3z3ct7hoyb4qh4npnei -0x4D1765279EeBc8F8d1De32e401349a1460C399C1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.8616471282543192,1671299357,bafkreia2fb7ztlzblvg3733k5inwweqwfc22laz6bdzto3bjcle6mzi234 -0x3722a8b1E2674FbBA7081C84E39A5cE738B8159D,,,,,,,,,,,,,,,1,,,,1,,,,,,,,,,,,,,,,1,,,,,,1.071471101222316,1671299521,bafkreihekbjisloknmtgxcqpd2foxccobetn7ebvvmutwhgbsjtoidh2zq -0x994F96722575B64b27CDBe327498F34Aaa2f0043,1,1,1,2,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.18036494427307362,1671299609,bafkreibhx4kmalf4qckqqha3ton3ub4sj5wyfua7kyi7nqcigwteir2rku -0x424929525a9f36897cDd3235023c13A2eA7D7218,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,74901.113275685,1671301257,bafkreiah54dd4lrmczq2gynlygby7vryjntrx7nlbivjelmtf7tmbkvqhm -0xD5C9B4E15624023Edf7Bd37ef568e3f7519275AF,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14160.535069270943,1671301757,bafkreih3pbm54xmh4j4mbqwcgsjio62s4wixj56gsmtjjfiwbcaltbrdba -0x165481239cc2827f92F738571b2cE1E532C900cA,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671303721,bafkreiatdwqgrhezh4ww6fdgkv3ficwl7bpyiwggbnntfqsahctpgmduj4 -0x0f28862bb9cC96f865c8047268230fF1248C7721,,,,,,,,,,,,,,,,,,,,,,,4000000,,,,,,,,,,,,,,,,,,10810.840170928062,1671306482,bafkreif54z2s2rl44rzlv3ma36yeyhe2bsbsela625khxb6vjrcvqigevu -0x0c4d9aAB37FE770956dA285C55C863fd114dafcC,,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6914263981336658,1671306868,bafkreiah4lhi7xdf5gdaapz3x7dmrcfqjtd74f4h7vy3fc3sxsnaobltv4 -0x6316a7c591E73772C457Db369C475149f55b827e,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2054.957062785004,1671308400,bafkreicmxbyz5hbovdsgxslndgxhhn3a6nvtbkfc3l2kkc3xsllf5i6fyy -0x3424cd7D170949636C300e62674a3DFB7706Fc35,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,10094,1671310781,bafkreigrot5w5vcdz3j4hm6cm5x7hqgowozbm7lru3ooiar536xkbp2dfu -0xCD531EfADb2a5Fc230EE1B55a510Faa5E33a2FB8,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.1630958968406897,1671311474,bafkreidynt5q4wgdve6hz3jcuun4qzjsmc3qrcjjaqv4iokv2jux4s2imq -0x71df93Ae5A9a2ba5064aE90b9690b4fa9C413387,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.064827901578754,1671313547,bafkreiepz5o3lvmw3zwapq7poopgrlce45ggqed3mplo4t4qtv3yaejopy -0xE21ecb50AA7a84688AE4457b770E44a21CDC5A56,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671314587,bafkreihzrn7t3p4d4dl6xgwnsq7qb5pygdsmw53rhu5mirjsex5k63unca -0x46A13b188365C40E5F4114a4CBd0D2425472d8D2,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,27170,1671314615,bafkreibo5cr7brp33gicibzjaaqfew3kkd7uq375fo2mwspgq3u5y4sqhm -0x355D9Ae5E1280dAe29442f250da325a0f7d5545E,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,46438.94969057179,1671314674,bafkreiav4zpzhadalzc7f5vngpctl3mvvcfv53vbsy7zfymskgekideffq -0x43286eFeA7820699484aD2256e2b6679f8Ce9361,,,,,,,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,199.6306102,1671315141,bafkreic6tcu4c5656zmskyejqwau3zu65zjfucvqtwrdlauwz2iljkr75q -0x14D607c20fF934B0d895577c6e80ab0cD6a8b322,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,1.8612038555956325,1671316704,bafkreidgslis2zycfyrbs5cngtkkfqhwxhtxhphbq3jetettj4drxg5feu -0x921887803bEF20491fdD1ed3b0B3e0a102205131,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25404.334795157523,1671318866,bafkreicbbctwu66aluc5yv7eqwgaqm74hjcz4uv433kr63sg3z3i6xipya -0x66362B929C1a9AaF14c51aaB9B455ad7fb8268c4,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,25441.109406340853,1671321143,bafkreigtakiv734f45cqpwze2ykbta5dsueoeefxxtty3g5uj352o2vs34 -0x77D4D7ed546b19077720EDA2Be8C847A1C358125,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.397184801604203,1671322753,bafkreiacyhisegnoda4llmjk6zjbvtew7m2bp2dl3rxbffklaonx4jy7xi -0xfCdD21e1fE6D09F6b6B2125fFD55b2a486767255,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1,1671323140,bafkreifp5nkz6fnmxafuvydizen4z7o7wspb6tbyot7vwo2go6u2kh5yi4 -0x35Ff42FC4a02E0E6789912F30b2415607099a535,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,37500,1671323362,bafkreihueppmfltjenwakpuq7apw4nd6uzsfs7tjd4grzgsuc63smfsyje -0x21518831D8852658057E43c7ec5503Be25366df9,,,,,,,,,,,,,100000000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,8128.8041753574535,1671324065,bafkreiew2yedfiyuslmjrrueakuj3jl4kccruzq763n4zoy6a6peobc7fa -0xDE2cA70e71829962A99A2552D826ac37e51882E7,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7902281586956074,1671327677,bafkreifz225nrjza3o5ykshzhen42prcw47iv6ficz5jp7kv2bq3a76gke -0x85a8181eeE053a72896b98B2F6698B6763aAB30b,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.01,1671328237,bafkreic24tzalzimyuhvtjsi3ewoxkitx4dvhhr4u6wwh3npvows6msl34 -0x48386A6E3528A9aaFF7591B320afdC7bAb527669,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2,1671328533,bafkreigiszuaagvdrwnrkb4yn4g5ujvahklermraehgg5blypofdiyl5a4 -0x762b34974ECdBcf8D9015125A48F7B4B6cBAA205,,,,,,,,,,,,,1,,,1,,,,,,,,2,,,,,,,,,,,1,,,,,,10577.594993647292,1671329607,bafkreick4abax4mawmwilatrdxzga7bnoj4m65gwupisfuq2nqdneklvfe -0x69E550D20eF429a092B4d4e3d3E9A0391714faEf,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671329691,bafkreiacbxdmgft24lgvtp2myajslnejyo33nqmheuzmpqpbnzeiavt6py -0x2ff5CDf2DFE9A60F650cA13A319A183f77EAcF18,,,,1,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,167.35625374984568,1671330873,bafkreifjtxlyrxe4seddbr44graltz3fezgagzspmaa5fmfsbmtxpnyx5e -0x407f099b53C9A67D0A407d5e79D79b1Ac940C07E,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1053.73277668,1671331283,bafkreictbgw4trinpbptjzshzedqy6czxc7ewxrdvppa67l7ofdyhovcle -0x9FeAc18007E38c8fBa5d5BF07fF04746f64D169E,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,414.85528633132094,1671331966,bafkreigoes4vkc5qsfkx3gj7lu3ogaoqihp3wlopfavbxqqe7xcpw5myyq -0x1eF7bcC3976056d3F0238b6f8653287D4d2Ea24E,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,4368.08636205011,1671332335,Qmbjx1uXFyhxctBhjyMBbSMz32q9dUBkm8Hyzme1oXZdcJ -0xee516142fdFc3066E096bbF4AFd35F00aEDCc2f5,,,,,,,,,,,,,34,,,33,,,,,,,33,,,,,,,,,,,,,,,,,,3401.9081930297534,1671336083,QmUdTSKjoNiUbJGsFbwrtmzfPJZvp412gvmpvPmDYD1xDW -0x955A1a68613C028Ea98b0b5dcC58901897EB90DB,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,2042,1671338330,QmRU384gyiVpqF5ZZrZNqEPic5mcYj8tagq7FVkj8tBR6F -0x8eE3Fc743653BC3854a71FB06505bA4c988A3148,,,,1,3,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,0.16297069024732827,1671341557,QmRY2bxHNgF7bpAphJMMmF2L5PxKRoWo1NPvHeKRHyqhTp -0x10cCD4136471c7c266a9Fc4569622989Fb4caB99,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10951.253434866197,1671344429,QmZf1NoMuueh77MHZ5pNastmPJG8RV39y4mQQFUSC2KwfR -0xceB0a87FDa9C81e280DCbaf943771871533566Cc,,,,4000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2820.130918683725,1671348976,QmVgXDnVKaqRtkGiVTicB9oz9hjA5Njv52CmmQgCbsQyx1 -0x300736a2C7eACaC5524930afF74779EcB2C775ED,,,,,,,,,1,,,,1,,,1,,,1,,,,1,,,1,,,,,,,,,1,,,,,,13743.578917029754,1671349223,QmRdrAvj74ybnmqP1TwqyrxSbxho7Dt1jabuxyohfmekiK -0xF37Dd808574dd96cdc87a196105A425543eB5a20,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2181.137028025385,1671355383,bafkreiagehu3dez2e6gal52of3dg6qj744kori2saxcaw2gqmja722ilwq -0xd493a0Be4B8bF4B62A59624e83382422B68a3451,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,0.6572477572861801,1671355671,QmVQq83DmfbCddXABcoBhk9tEChc9Sn9kbNoLdXNWvR6oM -0x2A1BBcdff7A047d82fc8829FAA0D13a8D2cf1dBE,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.67,1671356760,QmcNpAzoLvNqSJziRUaq6My67dYYsPVVWoXxAf66DYHUh6 -0xC292573D51097347bA34Bec624fD088DD3D0314A,,,,,,1,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6762016345540045,1671356762,bafkreif2kmeknvzbfgm5kvmi7nhrqzjiwokol5iobm24etb4xecbtt2tte -0xC09C4E76f01260F16428a34A03C431b051002424,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5328488663828079,1671359661,bafkreig5rkugm7dl2jljur6t4z355x2s4chfeajv2q6t4kh5x7qustg7ea -0xe68E4a5EaaA13F21c7665DCB472686366d55eda5,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3.006,1671360736,bafkreig5wezcml26klti6bv2qtu2wll7tglwjfxbbmtzemfrsbgjed7nra -0x372570802335134b5654b41Fa5eEF84548DB4d79,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.32647652277045347,1671360796,bafkreidag7wj7utts5zdeh7cdhutdtl2fl3rmrm2dorxvc6ge44f2ottem -0xd8aAa186db7214926cdD4C8aB5Ef1d919913402F,,,,,,,,,,,1,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,2.291284832370243,1671361533,bafkreif3vmsddxa5eipapvrepxpz2zmpbt2kfzp74zkqpt3mbw6wkuc7aq -0x6B62240234AFd9bd4E5EFcCb44F96254DA30a324,,,,,,,,,,1,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,2.2083475220540887,1671361758,bafkreie7kkt6mckqbtkwt5o5a72ox4luxfsgerbug4vjxar6dc6uyz4z6m -0x3c36e10c0048c298b87Eb26601A374aeb86b1b93,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.37,1671362286,bafkreih4f5ni2r34wu32dt25gq3tq5m22cz46ptydairvkh3m2cvhuqwza -0xf85d965e9Fd4607B000110253214f49231f0031a,1,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.08905522419268616,1671362912,bafkreibdmvdkglmm2tr6ouolznz4pwopnhvhtaxuazrzpoyupm6eboaera -0xB395BCBeE0F4eCfC8f2EdA592c7E945760F666d6,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,2,,,,,,378.8609298328888,1671363020,bafkreibj6pfgmrwruseupxb4o7wpnyros4k35j34evbgqt5w2vexl77kom -0x37D2445Fdf9B83B58392dADc9cC29100C263B505,2,,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,0.0822823488633826,1671363258,bafkreiakhid3xgbid36aci5np6g3emphbesuqdc64r6fy3hnwlnfungjt4 -0xc153c97eC33a7ef4eE5c15aEdAc38225E1954ce1,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.2,1671363376,bafkreig6pgfa4v5hnszsks3tswz22rqbkmzazu47inhwhfgssrocok4xea -0x545425F9686B56078Da3bFac5f9f25bB287b1291,1,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,0.003389747324169346,1671363516,bafkreichw7epbuefz723is5w6krgvncqgiu4smgdwup4bakpjdlkgbyxge -0x5d18014F44bb78b5D2F5aac5a0A547F53c2Ac592,,1,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03276771832066755,1671363984,bafkreia7phvvlomho5rhfyudygsv2ivgp5shhhsbozpbtkdcy6pyljvdnq -0x0b27Da84572d4eB58D82C496457fc692a419C92F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1000,,,,,31.614931710465985,1671364481,bafkreiewqrisikiym42v6ybclecq2ycuqo4yzuq4mdbpm3imdy4zncgsbq -0x276266acADA1798BCfac5822936768383d2ed782,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6078.877701893966,1671364565,bafkreihbdjjpnvfn7p7smdbjlir3mjkxmzl7byblegb4xcrnfad7gz44fu -0x7277e1fDe9CEAf97BC5960F0Aee96038F39A70d8,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.07145890165885926,1671365643,bafkreia437qln73l4dzaedf5pp6o6xsnzlqfu77sxxaoer43eaoo7rcxpm -0xe4f100b9D50a2fCD41bd475b8a33198779fe5DD7,,,,,,,,,,,,,1,1,1,1,,,1,,,,,,,,,,,,,,,,,,,1,,,0.1190173457645154,1671365872,bafkreiaeeo2ezbpak4y2vv4evkesou7ww275l2f5vonyoysi5fypg76ps4 -0x6B73A9E6c06946d543Ae131071da0C2942CB584A,1,1,1,,,,,,,,,,,1,,,,1,,,,,,,,1,,,,,,,,1,,,,,,,0.5031163110337015,1671366154,bafkreievbnavdfudpw4egtbid3hx3szuxlerp7j6u45oolrqzpsjernhra -0x762ab7C7c71772a195baEC1e964c0584C3aDeBF4,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,119.12022724624251,1671366335,bafkreiexhtiyzecosp32dodk3o5zm2qvcf6xnizvpkjg45v2pmiifqm7ga -0x8105FA2e9E9e8F8964C0ed9193614D352b24385F,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.016207386639491006,1671366511,bafkreihq5ejwmcw45lzhsr4647wcq6ogeqkqarnxofqlrxp2ypvda5tuw4 -0x8d3ec18dc2c96daFCD0924afE7273892Bf4c1652,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0625830289936688,1671366955,bafkreigyhwen6vygu2lltce2kolcp7npwhuw5txm5ljp5enfuj74zj67uy -0xC795E5209DBE5B8e4a4D0438c0Dd3793684F336c,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671367443,bafkreifybu75a4vp5admndo5inyooavufjnxg22cpde5stdvn26d7s6hou -0x72656CdF1c5Bc08F7D95919e1b31Ca8a88de62c6,,,,,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,0.40105038674946214,1671367763,bafkreigl2chiyc6ljncfjsuk7whdvwnqxx5rkrncwghg3jdovqm74uagiq -0xbf2539F8CDB7F3eEeD57aB6C4195dc190c199678,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.001,1671367809,bafkreiei63vhnucw3xghglhvdvazki64l5rapnotx3jaqb4o4tupvrfbly -0x1B081542303d27A705Fcff9512b45c58dd7dC4a9,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4015660951541833,1671367972,bafkreiaiccatxe4m5zwlhs4nkbkkeewadfhdjuo6tta4g343ihrtdjpw6u -0x22BC858e301C864e898cF06D2f383e70d26CDf5e,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02773749053288088,1671368304,bafkreiebwz4hollk5ag3pk43mas2ozbo7zxqmdohnyqhqm4asoxtkp6fte -0x83D2E472495f408BD0Bc85702F4bE5EF1acAee80,4,1,2,2,1,3,4,1,1,1,3,12,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,0.23143450422910172,1671369199,bafkreigms3pbsshbsftciibw22rv7o43boxuq6ccaloqtlzeosnlmeqtwq -0x56979F6a5Ec520294E8163Ac0804D43973f4a503,1,1,1,1,1,1,,,,1,1,,,,1,1,,,,1,1,,,,,,,,,,,,,,,,,,,,0.008279583538895074,1671369706,bafkreibpammumz5frt4xozvy2q6jumlrur75fhg7vbox4c6i5qeyhjosku -0xb555Eee31FC3704c22e8f69B097930E7fF68f3ee,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03601508781494342,1671370593,bafkreicut7khhs7q4kskmkpp4w56swrasyv7eycthg36mhx2rtmrwfa73y -0x4879032313fa7648bf821f9880ba2C645D0f356b,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671370649,bafkreihtsazsg4tyee26ykajkwjrkqydbalwue2fe4e62bkybj3aikqooq -0x98fF5E8be4104d0aBbCC54f42a474054F87723bE,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.025678622188871292,1671371098,bafkreihfec3m7kjkrm2foebjksg5n7j6npbn7nxmc4wh3i4vv5t5g3uwqi -0x134AdE3f5E771f408BF7aB0a7AEff45364445BcD,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.038295215179206,1671371214,bafkreid6qs2m2zfr7ary7xshglikgfz6koag4ntaalqwtkh56zygt3b7ui -0x6dF7d76e8Ba33A3e11fF0b48C1c792F9Ac9a7314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,0.20551530545813534,1671371304,bafkreidpzpqehtqnjzjlz4psdfb6axruqhlwcda536lyno2jw3zvdomq3u -0x6665a5A00ef3388328cB0713c008099e3E7B7092,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,5796,1671371608,bafkreifwgqrb6e6cjmcjx2z5c7odbjdshr7j3sa66s56izzaeviqxdnz5m -0xD80d57e2d1cBF09b14626EC3974f12c1952917C8,90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.17132635366649998,1671372023,bafkreibp67ly6we2idqhjqtfrgqj6rhkjc4its3g535sphjevikexfudzq -0x936DF0FB2134e04948C2A07482486e1362C38c9d,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,0.12056574134921297,1671372556,bafkreic5x455c4cr5dr5whfa6rwpcdkh42cgm3upssacl2poc7nmplbige -0xC2cA4eE4C8C79796e8beea362F657F5004a9d1Ca,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0641234606236436,1671372594,bafkreidys2lkdezhqmksxjczdxltg4kfqwnw375gph4i6eev52ormodx3q -0xd182768D1a7B9a09515464e017dBCDaA2993e059,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.038108802942678,1671372664,bafkreid2cnmkfxu46dzth5yxoz3zolkkentxknns3myxstx4j562mqxe5a -0xcC90c10D54368321E4f022D13334490c52FB6121,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.31161095,1671372749,bafkreia2icvjzhbvjkkrkibmduxuyzzszldfnkhavo4sewetiqxf3j5rqm -0x040BAa573b9DaB3143425D7E0D11916961d385BF,10,5,5,6,4,7,7,6,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03258185883633462,1671373591,bafkreih7wijnlgn3ohywcuv7l6e4xrn2d7wnri5ncdxcreo4yy5r7n5fze -0x00B7C84DbBD871A8eb209138174D1ef378F015a0,13,13,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.04579555404873756,1671373728,bafkreicfv4nq34nr4pcffadoyb6likuwuerbweeviwpoaj4olni2lzhofi -0xf4dC26387af654ed24199Dd26920EbDB9a5f4a74,,,,,2,,,,,,,,,,,,,,,,9,,,,,,,,,8,,,,,,,7,,,,3.145453273922682,1671373805,bafkreib5qtjsjazw7cll55flyqly7g4lg4bvc5okkz3ca52qamsemhsore -0xCCfd1FF80D176f1b98f7E40ed71A5B13d70dAF69,,,,,,,,,,,9,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.798353694029279,1671374447,bafkreiebjhriof6otlwcjj5vr5k473rqtowr6dvhs2ihpj3tipyxngmny4 -0x1cad9db2453Be4B0dB2CF5DF085F9f70d7e79ac1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,437.8216173,1671374506,bafkreide5mad6hwa6247uggjwxcwtvusnd64ldl2xbpaoobcynzqn4t4fa -0xE9f89D3ddeD8c92eF9402E1A2608590d1c041239,1,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.09237818734719583,1671374974,bafkreifkxluybmocw7tyxv5jt3ehdkxhloobfmxigntbvdqrwi5fglsa2u -0xA425fE8b53B1386ED496DD3EE143F2d8c3A624D3,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.001,1671375066,bafkreicgpwnk5p2bloqqj5ap36bnblldf7eizo4s6v5ey6uwuwfce7haci -0x01F9Ecead3A16C29b2F277e1cE018Cf3985b2597,,,,1000,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,4793.0648899975795,1671375281,bafkreigypjoo4t6sos2lnzhkhuevlhwsmjqtneher5glbe5mojhl5j25f4 -0xD83FcD0Ce05895Acae34519bEc5DaE8686608E0A,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1203.8,1671375560,bafkreiay2y7auo4eymydyovpbgzu3sm76n7cradnq44gygbpslt5xqomrm -0x0ed7A2469834Fe7e26a5A2Db5ecaB4E23cbd585F,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0046943836855114,1671375658,bafkreicwykxeucoek3znweh3n4algucseeatovzl547byntr376p44wgky -0x38B0dC2D8aF9f32F72372bA6955e16Dc0aa369e1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.5605846032049848,1671375842,bafkreiccc3pibzoezzvjko3dtjrqx4vrh3zfan4hhbjgv4cpr23r6g4v7y -0x9882954D15f500Ea7A63A33479CBE0132B584Eb0,,,,,,,,,,,25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671378153,bafkreibx5772hsfl2kqjakawn5qsmtskgvkhphs4t4cvstvcnyspvygiye -0xb7eba91e21325d16eAe515948990fbE69e8Cd181,1,,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.012740251684438018,1671378568,bafkreieumxgdpuox6nqvhvhhlbbonh6bcrbjzmi6jptjqcl4r7qng2txqa -0x4B298E988079ab2fba509810fD712d82305A1E4f,5,7,3,1,1,1,1,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,0.04067092408181453,1671379388,bafkreiaxu7kaawoym6rg6fnjb7imtrkymgjb4red6duci64atgaksikuvq -0xD4e51C07357114E6d6058cc752115967EF18F99b,50,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,40,,,,,,0.09416017610561472,1671379465,bafkreiegix7x4lw3eutt3kw2tx3rof2jjbq4nyiws2y6rairivfqxkas4e -0xeE4bFD7fe07DBc45F2270191391bd564e0D32C5A,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,0.18329759940824875,1671384131,bafkreifrd5zvarlhyy35yl35h4ae4vk27opgh32ch4flxk4ryjzgnfdv5a -0x7196e387E6dAFf279C964559d3D64c0faF523B20,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,3931.844832867965,1671386445,bafkreibpn46ensqvkr7nmez6ld27braw2qynq73ycnudiq6rfua33nxp3q -0xF771e31a7Fabcce2Aa9148591bEc94bc84c5F491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1839.2887869005876,1671386858,bafkreiavxlvmo7k2stthnag3wktbcd6tttozywy6agcuevtiojgwjhr4wu -0x48c9bBDEF31D7D50ED0f4bAD4e8925C08791a7dB,1,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.14688097570952588,1671388573,bafkreidxc6lgcbjinouhizscd4yesctagkpcyr72dux4p6nugmr4r343qi -0x4c710B38199f589DD769D36eD52b6d0170cb83EE,2,1,1,1,1,,1,1,,,,,2,,,2,,,,1,,,,,,1,,,,,,,,,,,1,,,,0.2485787272224984,1671390674,bafkreifekigdkwodlkkvcwzaxffxl3q3hdgggxs65slxn4brc4if5jmksy -0xCf35cFaCF4F2CE74556064d51D5405E58be327f4,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03575817433486994,1671392171,bafkreiag6v5ghpguzu5qaumjrzvefuxi77igsobqflobmwz5uz4e4nszzu -0xADf44724617D891B933faB904cf6E939a167Aa1F,,,,,,,,,1,1,8,,,,1,1,,1,,,1,,,,,,,,,,,,,,,,,,,,0.10568447094091535,1671392249,bafkreifvheklfqhpls3caaak72hm4cpxdwd75ppnv6zlkmeud2o3k5ayxi -0x6EA012A3249ccc35D020Dd4124b739956966699e,,,,,,,,,,,4,,,,,,,,,,,,1,,,,,,,,,,,,2,,,,,,0.5322961520176586,1671392636,bafkreihuzlsarbje6vgn57am5bfgihhpfuk64vpemnc7nriix3dvwmqaqe -0xBD227C7B8D581b9D3639B7e6E301CdF99c374dd6,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.07942286,1671393325,bafkreiaqm66222kgi5dgc4uv5ep2cqbkmh4xobdw6jfr7sfmev23r7y4mi -0x723D3ec41b5BBdd52089CE7F5E063936647f6403,4,,1,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.28775049597345437,1671394101,bafkreibqqeetyf6peftj7mjfhfpo2khyoioyw7byzmcz2czvyas5ksvh5m -0x411d209E4874E00Dd550de43190224515b28fAFe,,1,1,,1,,1,,,,1,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.05123319959560518,1671395072,bafkreifrjsepq7ykkcodnwhl5dkuaew3fosowsgcyrxku5hbk656w5xqpe -0x49d43f74988c31E2Df1E751e5F0Ee160EcdBC5cF,1,1,,,1,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.129501992352094,1671396109,bafkreiefifiqvt3hvr7akcrqxvtust2jb2bcsux4bjkxuzhm5r76wnfnsm -0x107147bBf9b61b235d88aE320ac21C113150db81,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.011676493636606888,1671396470,bafkreigzcuqijuylletoaritban6zzqd5bbmm2usgt37zrfri6ul6bwclu -0x53909bcC8eEE8E648d7B3ee6Bf412612AC042245,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1083824415214349,1671397893,bafkreifhj7xutupgsf3w5t7dce6ztjwrmitxwxm3chi4orhayiqskkmp4a -0xfbF0736EB2ac1C4bB0193AE54c53e182B18037Fc,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7511190155169448,1671398408,bafkreibe253g4t5mvfzvnv44x6oipc74akuentu32elnq3b6l4icza7dqq -0x139f2916CF105A494EfA59645BdC0598A5D4C256,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.25,1671400311,bafkreie5vj3ba2mp7nu3dmtuejbfryhllklsf3tndwfsummzd7kix75qza -0x2669628C787e13b55aAB9B27dc4559bFBfB9CCc3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,100.39,1671404946,bafkreibom2nsjeanrx3hmzt3iry74doez7pw5kjklwkrkdcslfqxmakkk4 -0xeB70F86CDcC047CF052554dB6962DdcD4d057f9e,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.1053218835941294,1671408270,bafkreie47yffwbzohkteqtq3bxdpcbghval64p7f26c6zvvmbprmt3zfzy -0x428364c1919Fd29B620F7f1DAE3cAd18376c74fA,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,392.60021011,1671409886,bafkreifp7kzeaiogtwcrz3vbvbrx225glgubvc5afjohx5jqauysxf6fim -0xc2EA22ec0C12761B26d05888397Ca5dC23be64e0,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.36766384,1671410016,bafkreigw4vt4f63gve766l64nop5yzlr3y2pmppkxcennnvtb5axe6kdei -0x6FDF6238101B986D9231866B3C9BCcC69D6655Cd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,114.71222423864467,1671411792,bafkreiewmaf5s54lamhmqi2uofvov4qny25pzaneafxiaga7bqps27fj2y -0xfA72004942aC072962A8f93596D587A4200A0f88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,769.7712866384564,1671412114,bafkreicsrrjapy2enzf2lbedl6iaec32hauh2v4y2ktulu62gozcj5qfeu -0xEAEB9eA163A3BF40Ec1aeC77862B65d3d448af06,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1600.0795338493722,1671412433,bafkreicmk7iept3leobkeocb4lqpi36bpjonujhym6sk47mdneo3sbfhta -0xAC993Ad2eE5a5dfD8bC0cd360a98b950FF26Cd2F,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,34.90358867048719,1671413760,bafkreibuxtcnmmtyb5l2vjxr5pybwey3ou7r72qsipzloncgz3xvn6q2xy -0xd12f7211071a20Ce76Bf9Fb8e069036B6fb63C6A,1,1,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,30.61347049934633,1671416043,bafkreib4qsab35raufcp3wbemb6gfa4pl3yj4e4s4dflwmhxnvahs233oi -0x9c035924d172A5Ba3ef6E544af9DDA28A47508c4,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.8406571713627665,1671416308,bafkreibewwp5v6eptbhqhk25fse4c5m3ghe7v4sxmp3xyksfs7ll7ipsgi -0x337CfB6E0466977c6419D5DcA8FA8B82904787b1,,1,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.25,1671416557,bafkreie5l4y4kcqhtbkghk5mejp25hpay3ax3w7mazjpbkksczc2odhxfa -0x9179107E3d45D841179729F02dba57C3342D7fdF,1,1,1,,,1,,,1,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,0.4064531973241,1671416631,bafkreiapq3okowyvbhkfjbuzj2wcjqlsndvsrzkpmwvgls6zt7rj5nqzuq -0xDB724442AA1AA972B6F23B63491cC6B601608C9D,,,,1,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,16270.984638030899,1671417212,bafkreiemsv6zfypvl6rm3nce6zilg7qpg4j7z2n4f5pdzojfr4qd2yheau -0x99BDce51a4CCffc80d2e7082fbdDC18Ede6a7d75,,,,,,,,,,,,,,,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,1671417364,bafkreiflnk6lvon743ychm7d5fannqxlgtsdfloj2ettbnw5cgq3hb52fa -0x1FD8271f95b32EcFFAdE04a2C93C7009b6Fe7d5F,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671417851,bafkreidvcohlq2qlp5pvaujuhwfqrfhunn67b3eeoy7hoo47wu5lqtcjnm -0x669C5c5672443879C7c5650Addc6231076b03beD,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671418619,bafkreidd5sulsflozgtktnucstidm3t3v6lo6xo72g7zqvmxy3eah2mkmy -0x9Adbe89c461993aA71F18174c922605cd1fabf1a,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.00002,1671418658,bafkreig6pths4n3x7oapcr5fzg4nwkw67ud4kz2pq7qh4bh6wiva5iwxw4 -0xCc6f414b71c58218c1aDc3965ba7B48FDf607000,,,,,,,,,,,1000,,,,,100,100,,,,,,800,,,,,,,100,,,,,,,,,100,,2011.6337966026913,1671421297,bafkreif26fp7aldu7eh3xx7hcpg3xqsnqlirqidlurrdhnaezsk6zxkfcy -0x29737f1186Fbe889D4906841c30A5048dAb7E638,,,,,,,,,,,1000,,,,,100,100,,,,,,800,,,,,,,100,,,,,,,,,100,,3474,1671421404,bafkreicuynkdp3gweybxangshufannnre2pf446ykwe4olsux3abzl3pha -0x8D4Fcf8170A20ccC91fAB546Ee57Bd01c930E608,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671422930,bafkreib4oybtjoa7b5rozyltov4uf2u4525hccz6z5mdlrzwqrpmhjcyme -0x325817691bCDd8449FB0f88a4fbFa27bcCb8f5dd,,1,1,1,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10532965628377434,1671423408,bafkreig56ytr32f72vgblk5d3hihxhfjl5jf2sgttrzrdujcazk72powvu -0xBf6554783Aed99b39A27e60FC456A983DbEAaC8B,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671424332,bafkreiet22zmexhcw7h6jizabq77j2blna5xxu77lffvmga46akkigmlfq -0xD8cf3e31820ceEC940C69f462FC047d306BcB984,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.18,1671424335,bafkreigwde27ltxtvd4u3vbdcojxery4dgjn64o67bl7obsj23o47szzne -0xaD928e545cf5598802B3c601E04B0CFE6bf6351C,60,40,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671424829,bafkreibewichkgc5x462qo5tgvsxuv3rfnn6u222ov6q54nsxz3udsxlnu -0xD0ac50d9F7516be16e2449539394A3967BEa03C7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2.491677489561012,1671425283,bafkreiflicpos3gnkip7edxqcpvrl7ycgo3dnhv7v5agfwqikmm27v5aha -0x529408a6962Bae6Ca5328874d633738116B89B05,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.016804102509884,1671427472,bafkreiatlybzzlmfduhh2wu2wv7zhrhmjsdmjczjsynrpuky3go5bjxnze -0x80771c740F659760C9423F82110c03087c21Cbe8,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,13859.774357574643,1671429537,bafkreiez3jehqbovbc3j2ci4wagmwhwmlypvbtohi5kxyb3b34dgc5qjkq -0x323461bB7171C3E1759AD35247EAa3b3AEFabD75,1,,,,,,,,,,,,,,,,,,,,,,146,,,,,,,,,,,,,,,,,,4000,1671431980,bafkreiaq3pdijlgrkyuxddlawskg6bfgfi6izc4ltpiqncj65ux67yq7yq -0x14Adaecf15F069c71A846e30e62dCbF6d362B9d6,,,,,,,,,,,,,2042,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.25,1671432976,bafkreigtbbdq2lxg7eq33z4qeqexaa5wfkr3l7tsdim5bsplxjzdkl4fa4 -0xc75b143301cF47A3Ad096ED904f5E3f0831a57Fb,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,74653.07800763927,1671434451,bafkreicmjoqbcp7ujmtqpq4dw2ytegwxrojal6smmhbheh5cemrxxfh2su -0xF7838C101DD142AbFF1B612bd4DA21b21e43721f,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,15604.942155380913,1671434638,bafkreic7un4e5eopqkszuce35plzgjc345za2nu7dxfayh7hzr4o74tqpu -0xFca4Dd58878DcaEA060EACe9fF6397353797F8BE,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0643740792632834,1671435927,bafkreicndtiu4wxeheeclqkmp2zg4tuje7o5gik5tisrvgp5go2om6g6zy -0xC720aAd5b91dc6661d3EA32dDEA7E11003A0C12f,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.424,1671436161,bafkreiei7s2z4yv2pygcmb7kjffddqyqgn7qjmooc7tr2kbndfkyruyule -0x8168363c12488275050F75F4deCd92b773F637F9,2,1,1,1,,,1,,,,,,,,,,1,,,,,1,1,,,,,,,,,,,,,,,,,,0.99,1671437707,bafkreia5jkb3bx7lrgccqs4f7mmxubsafs43ht4vffertqqbsivomrf3te -0xAf11b3B0Ea9C697e92ABDa3D89D5c942fd4E335f,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6790576988985595,1671437794,bafkreifq3nwpgq6obnh7p5bexwq4hmflgwvvwkqglzzdomxwqkzi5cc2xi -0xF84DabE76B1a95413C322Eff45e9768F732D1975,1,,1,,,,1,1,,,,,,,,,,1,,,,,1,1,,1,,,,,,,,,,,,,,,1,1671438001,bafkreid3bddmfcz4gfuaoa4pud3ktztphuix4t2lstbli34y4o5acjwyry -0xe0fda19799b5100192f2bA402CB9150aDfc42501,,1,1,1,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.005423730038069619,1671438022,bafkreiguu3bdwsxhrrfhfwaq4dskn6wmvqehwyd2umyrz4yfmxf6uhsrna -0x038C413AFb8B817634336895890C6a785085145A,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,0.1,1671438456,bafkreigkefyqooc2hpmy3zfd6wpvaokls65l6aggipkzhc36uaendaaqku -0x77C9e49073d9830723195f3788570c2c36c97688,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2902631320735517,1671438492,bafkreidxb47dlzo5hf4p4pqjkoxn5xdt4wd63amdpyqkllzlbpt6oh2ma4 -0x5E464B4766FB32Ac5f4bF74249D2681d6E00FBAd,1,,,,,1,,,1,,,,,,,,1,,,1,,1,,1,1,,,,,,,1,,1,1,1,,,,1,0.3104121749518531,1671438524,bafkreih4x6563ihex5yewtqzsmplpevndi4pky2f2pd6pleprx2tdstnmi -0x281A0eC0A602eB9C9B92a6711941f9D8E93fBB0f,,,,,,,,,,,1,,,,,1,,,,,,1,,,,,,,,,,,,,1,,,,,,1,1671439921,bafkreidwkgzeygh6ovkidwnshdtit4izzziovcormar55pvctbyvv5je6a -0xfB953D5c69bB04461b74e13655072eaE8fB384Da,1,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15.2203458665033,1671441022,bafkreig2gh4cl3ir43jcksofvdt3xv6pwc7juhwqj77rfwxr7e3gqmseru -0xA0794Ed544000f21265abd994d289180D1888888,1,4,2,,,,,,,,,,,,,,,2,,,,,,,,,5,,,,,,,,,,,,,,0.21685909313853075,1671441027,bafkreibdrqmffmrnzlbtbp4pn5kq6rlxvlmsztabil2ulnsgcwlwgx2wle -0x95e9ffc26Cb33FA701A56862cd6E2b4c96Cb444e,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2.04,1671442053,bafkreidksuvpqu3n2tzgv3ar2rnci4r5kvbgoakhbxlv3zayitrp4ghvta -0xc1606079b6867E25aCf6d4252578446e16f49FB1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,0.03121,1671443435,bafkreidahfjyzmuygko2p4fmdw24x73naxtj33wmbxnjfvebigzprsbhhq -0x84828783701e4FDD3d09E66fE546e0555E420CBD,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,0.21,1671444026,bafkreics7u5e45l7p3rs7emdac4qfmjkuzxfc5fet4kbwjjf5mqn6nocga -0x75AB80d94F9F7C0FE4E7973C8fF505882bE80f97,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0306227542838693,1671444037,bafkreigd5v7isi5thcslvxd7etp4q52iuq24bmjzmsa5n5uplhde2mlynm -0x4B51e46A88d5Ec2902E1125820855CEaB51e9057,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.16186836990032671,1671444166,bafkreicknfdkvuxrh6mv4il3lrz56inbavkxmjaprqmycoqtd57k2s3kxm -0xad7a281B422734200d6D24f630abA41ae328F802,,4,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,3,,,,,,,0.1855,1671444207,bafkreih26qlsmkn6lmvelcyyp2szckd6xhy3ltoxosqrqxxyihsovhvqby -0xF74709B52c0E108eCFE56fA364175A779d3C059A,,1,1,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.106755951825728,1671444886,bafkreibih3b7eupocsy5hei7wmazkx5dbc7cprlpgmc7hur2iypq7lbswi -0x5A6bCB75b849c00FD1C3Eff254dAc2f4560f1A9d,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.054480917120417985,1671445018,bafkreiffrvsxqpubzzolwyxlfico3uhacpkhjeupa77s52wggpf66zpfsi -0x45EcA36B38C029f31262076297cf9374BDcfE7F1,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.023,1671445467,bafkreidqjt6gj4w5jca7m5wksirz7trw3btsnewlrv2naeayapnnic7cvq -0x16AF4e518bcf252F781B15527aF2b48bfB5Cbbc8,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.023,1671445606,bafkreihsdqdq2zrsp6iynvnvt3wkgloljrri7qvqqlmuwbmi7prb7dxr5i -0x72B76C9791216f6DDF955d330aA28C4c78694550,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0121158,1671446242,bafkreien2betf6ydzodv2xdcg3cs5bu5woofuf3xxvmdb6chi5wzpbmb4a -0xDF617Fc072215c638137B3038628b420064c06B2,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,10241.434641625228,1671447124,bafkreifnpt2viohjwwfgbfok6rnd4kxc3zxr4jhsxzozcfvgkovoydgnbe -0x4B886d3eea50f46624953935Adc0414008888888,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,2,2,1,1,1,1,1,1,1,1,5.269,1671447281,bafkreieeb2f5t3wejqvbbc6lacf3ecrhngho2r2f44paiumt756nengyya -0x16F5CCCFD730157F1f1758822Af04a970004896f,1,1,1,1,2,1,1,1,1,2,1,2,1,1,2,1,2,1,2,1,1,2,1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,14.01536069676373,1671447595,bafkreidxr2yjwpegeky5wwlfbb6fpy3cbesv4opbwyi6sniqwz2op43aze -0xE7DcC040dEbdA16f385E02C11FE3B7Be779Aa145,,,,,,,,,,,40,,30,,,,,,,,,,30,,,,,,,,,,,,,,,,,,50379.94715177048,1671448021,bafkreibvapihhyqnlgx3ovyh2bd66rmgis4izbs3sw3bnwcdvje6rvg5j4 -0x37Ea22D0f551AA66d54605592b672F385b713Dc4,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1671448189,bafkreifenokb2u5cpd6lj7buipyehc5lw7sklkmazfappg7tyu52sciag4 -0x0ADf8A5Bea1d55Be7aCBBD6eF4E0251bf740747D,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3686.6151294105352,1671448732,bafkreiht3zkch24cjnfl24bafobqrswpk6vnxnotitlztt7f5swsfa466q -0xc21611A12525D3aB940c339b8aE4C4BE5865B6a2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4791428431633782,1671448987,bafkreic7ctmhbuq3bqlrma3e7nhohuqlrylidku3iahya3s6cwc34ofwcu -0x68c4D9E03D7D902053C428Ca2D74b612Db7F583A,,,,,,,,,,,,,14,,,,,,,,,,,,,,,,,,,,,,14,,,,,,85201.52941176,1671449902,bafkreicv76nejvwzkvvfufqac4qjbimc35smylaofjjwvm6stcncehqk5q -0x88e92986ff8523F2cCe7aA89ccBAcE997A8c8Ecb,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2082.4800514132035,1671450334,bafkreicqyxwn7s5m6ea4tra6mohked2m6frqybr7kc4s3g3d6mvmmsoone -0x3b7d646966a4f9c2814Bd0b414818aB0cbd1242B,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1586.3278170416852,1671450683,bafkreigfakfk4bxkqxfh6khg72qkrufv7uiin5juxrs4uql7wl3sbai65q -0x631ab8EB40588543dF900263F864b6376d56A587,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2756809216756617,1671451872,bafkreidrbsvxalomlysysgjtvqiuyanpwdomur6yadxpd2j6wtfokboy5a -0x2A92195A610f21f8DA1801Ff9756Aaa11319Ef68,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4559501442623976,1671453493,bafkreidobl7lyi4dubs2zhmn7qw3pc6vkpexaoujbzdkmlut3btiyy3gou -0xDC24c2Aa06eA26ac3bc4a226c4aE3182d4e11813,1,1,1,,1,,,,,,,,2,3,1,1,,,,,,,,,,2,,,,,,,,,,,,,,,1.2334,1671453615,bafkreifgbdd2ammnh3mma4fpidzkv7k75tsqyin5iq5uw2x5ifgnt5gauq -0x739f3a1012EB0AdBDDCCA7606Fcbd607871d63Db,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,1,0.17063669778475943,1671453693,bafkreifd7zevfcyembn7vd23lwbiwsxvcbpkpnwpf34uyxdhlsnhotvaya -0x73428EC1C479C0f7c8113Ec3D2829139C5273607,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,0.4854262429745949,1671453860,bafkreidolyqf4v7pt3dszifyxe74ppmrfiuzdc3xf4ywabp6sx5ruupbfy -0xbb96d92C7F873259A1E25E0103B1b54562178eeA,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.64398858,1671454264,bafkreidtgn43dfqsvs5wslwdr7uwgnvotbqpv73g2hecfkvczi3fuprki4 -0x21126ac61093260d2f2Ff826395885DCDE37ffA2,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671454299,bafkreidmsofywsnbev7lu5vqxnqsnw2gbrxstd6yzcvooackie5pjzdjfm -0xA87A47428d2d57a1557078B3336035D0F82f82D3,1,,,,1,,,1,,,1,,,,1,,,,,,,,,,1,,,,,,,,1,,,,,,,,0.20157071721713796,1671454469,bafkreic37vglj633v23xh4a636ps3k2ynnlts67axr6dlkh3suinytqwy4 -0x3591E03172dD55A6e0E701354Cf9ABb6C25D4EdA,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5646434475762996,1671454572,bafkreianbwe4esjifyubup5eog53w3lu46gja5osepx6apgxzuekfoxk4a -0x68f66Fac4B02419496a7C1D5Ad5F093Ae67e6E50,,,,,,,,,,,98,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4,1671455166,bafkreicfpsdue5rxzr4nf7msfmxgcnkrsm362pdjr2vhhpthdbuy6kzvnq -0x9bF3613B9C1f44f30209723058AE2e58ec5be4e0,2,3,,,,3,,1,3,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.24361257463169067,1671456440,bafkreigv4kzc7kei6vb34v3rtq56tyexjbmt2wvadgkjdurbhe44kr5svu -0x9A94d74f8883d25b86702D15c5119aF9fFA1AD60,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.08298932470356568,1671457723,bafkreids4h6fqsgiqivqlhtdvxru5zm2e7ucqqoerb6frchkwz3glygkwm -0x180fB0E6ab6E35Ed77aE4E9E8C7fBcc38AFa35aC,1,3,3,,,,,,3,2,1,2,,,,,,,2,,,,,,,,,,,,,,,,,,2,,,,1.3099887,1671460973,bafkreif7fdsnm3zir4mnmgl7wtkhapngtz6ugyslczol2ehvojn5eyaqye -0x387277be9d1b80D7A03832a0F4FCC4C0c3716eeB,2,1,1,1,1,,,,,,,,4,1,1,1,,,,,,,,,1,1,,1,,,,,,,,,,2,2,1,2,1671461297,bafkreifazs5bxkt4tuieh3efezhnbfrkom4k5vg3seuprcxy6esfdtlru4 -0xBE171D4A35725C19c7e57ca9801C9B414C0E25D1,2,1,1,1,1,1,1,1,1,,4,,,1,,1,,,,,,,,1,,1,,,,,,,1,,,,,,,,0.25539212223042795,1671461419,bafkreiabsfkkk5cxph5d3ubmej44tazrkpwmqv75xju7irbpftqhljxiea -0xD90350f6E2d085aac01f422f59575E8Ab93CA399,1,2,2,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2,1671461463,bafkreigqwggm7vpmm7crhgv4wzjpqijdtxgnxsxkolwjgu24icfbrta2qq -0x64c6AC491527A44BC45858F2811158936FB8044d,2,3,3,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,2,1,1,1,1.167788,1671462010,bafkreie7uxc6x6czbdoe6vdpwjdachwxdvgjsizytgl2eqpqsiuwcebwgy -0x7F85Cf44E446a4B1AaCe2A28774E88cd6d4e3441,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3324280113362281,1671463726,bafkreibpzdohaypbruakqzev6nbmz75br74vkt6kqxy3rd4xew2sdycvi4 -0x68761dE35422d8e36d18dC2F7f6313a58c1a3616,,,,20,,,,,,,,,35,,,35,,,,,,,10,,,,,,,,,,,,,,,,,,90364.44913544039,1671464305,bafkreicb7bjvjgo5w7zwzypbenu26pvfvbn4awt2cy4oi3lwaxhrp2ee6e -0xbC1934f548417f79ab10138B57716Fbc7C25c177,,,,,,,,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,21900,1671464857,bafkreihy5jrdjzrz2kmxd65brabjt4vey5ivsx3x4qnmd6eblnfr5moqwm -0x34A64a630F9bB4c8eCaA6AF99df079B34195E791,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671465047,bafkreicvy6limty2zptwgkvgww27u26gsq7a3yimrrj27rmaji5tan3ev4 -0xA6fEc7740EcF58F141Fe158E3795925F2B3Aa7bB,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.014248970195778587,1671465608,bafkreihxs2uzzzhc7zu344bxttppjimqwlqunknxyfcjn2af5rewfiaxhq -0x03b40776AF5a364fFBAEA3d2E293df4CceaB4F98,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.025870250071309497,1671465916,bafkreidufme7mmawcbhwbkxkaiugwbnk53qqj57xcj2nb6z36gwxtovz4y -0x8B9A3787dfA6d221990967C7AEe4c6F7237649A4,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,20,1671466882,bafkreiet5tdj3uotsgrqva6ny7lvnumwrzg2u7hsg4rlt3anjsjenr2l2y -0x4b7A3aBA7e499d9D8c799D15064710A2Abb47F3e,,,,,,,,,,,10,,5,,,,,,,,,,5,,,,,,,,,,,,,,,,,,4943.521883632025,1671467211,bafkreiaw3tgadwdrdkegie4skpbuxtazeir4rp4qdmdn3cwzoer72a7v6a -0x1430Cc22bCcFecE3d894E298A3845D3AC8E871F9,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898,1671467691,bafkreicocn3mlm7d2pyndffc4g5js3qnmh5dp3l3yns3abcmjnqdpoetzi -0x86870b7d7b2680864c145b5F4FAB9fB57Ae71B4A,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.13,1671468094,bafkreid7binnn2e2uxr6z6gh4y2x4d2lp6u4se5o62wujyryv4l5jpz3ou -0x6665ff08Df4E8dB4090A4a3137665a63aaA0dd13,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3757012482789799,1671468515,bafkreihojnocalsgkqfqjjxuiia2xkltuxecmu7tw7prtcmwzksexfpxsm -0xEDc93Bb561ed9E4F81237bB21774Fd4917947B89,,,,1,,,,,1,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,2898.1668167418925,1671469562,bafkreihvzdilintqzbv7nl4hbby4ccqhql5xw3y2yjnxm4trnctgy7d54i -0x647AbC6016Ab3D97994358c3B6813aB6F226e7f5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671472865,bafkreidbgxibd6to4dk7rzuuibxt4yurzlkdmamdfzby3akwkxacbtwaae -0x024813B4972428003C725EA756348Dcd79B826e6,,,,1,,1,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,0.2980470231770758,1671474077,bafkreicfwzpcefqzs7frgsjvhca4lqrmlzjlkzql3rxctjwjeidflvfsq4 -0xc578958DD1880cF00BFfbb7Feb9c28cbbbcaD3bF,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,105.9560427434483,1671475015,bafkreiggpquvjaqw4ivfiijgmquyow7gtlel3fjidj4eqkogxei7y6o4sq -0xC77dc85d870EC78BeE35a8629269DA19A36b1E60,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4516.5035807116865,1671475161,bafkreieq2tnghsiqopm4djv3dzaeaa4o3mz52bjopi5r7ticd5flhcl47i -0x828C5030558428af00AD1715DB9287344bFF6563,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56583.76291048456,1671476782,bafkreig4sul22wijn5ihnoxek7sqsepino5kt5lrspqz5c2lzeywdg7lci -0x54a25A05F1680928b2ae1469c6c2033794d6c45e,,,,1,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,23628.656667392614,1671477170,bafkreiagt3ykssf6cp7lbiilkva73tjznc73peew7pdvwl5u5wtj5la3f4 -0xc86B12d850FdBBF3260a7BAAE862F85857aAdBBa,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,2016,1671477678,bafkreifgwit2d77hxri3x6d6auodqgoru7nryl4vutpgudaeokyidfdcqy -0x683EbbA7A833A809071afb4819C0a2Dfd6e07333,,,,,,,,,,,,,100000,,,,,,,,,,,,,,,,,,,,,,,,,,,,10906.043740640374,1671479292,bafkreiceiappenn4bev6s3oz4ghhlyc3wuwektxj4v7fmqswfk5j5mu6eu -0x8E7C024EeAcF826e6F298A2df2Ed3fFa7c5a912f,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,610,1671480166,bafkreigynfepukv3kq2ahxfg4uzhaxeolnw7dmjehdm33f3cevowomdlxe -0xba8f08E7Eb69fC1C9D8434fDAc09AdcB4aDEca50,,,,,,,,,,,,,,,,1,,,,,,,2,,,,,,,,,,,,2,,,,,,20177.42051978082,1671481041,bafkreic3ib2lf3xjsjihjlgqep72acf6g4gt7vkdzccmkzg4pggog5qpiq -0xbADD62044A0641Ab189C86dDD9a096a364B93c60,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2045.2796509176799,1671481593,bafkreickkwkafgtkrzlxsic7f6xcxmbaezv2g3sdl2c675evyttmgitiw4 -0xc0738649740929eF714cc5C0229a1D5fa8138c29,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,51255.31321457812,1671482473,bafkreiafvgxywj6aidumkxojdikh5la7ddare22tg4fdzyi4vsiq4szeu4 -0xA0c7Dd61DAe5Edd2E1b9a33fBe4D9FF6e901eee8,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671482591,bafkreiannzgzv7nb4e27ixklnebu7nni4lbt74r7sqvhvdkdkc3th53dym -0x4a851F4031345b17A857E12A0f5dAa881731f74A,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671483596,bafkreifgkfp62nckrqjixlbd5hr5zr5oznuxqog5fanrgveqkengd5jbcu -0x34C1fF88C5eB05F3f7876A12CD06a4fa1814a656,,,,,,,,,,,108,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2922.124177687693,1671485543,bafkreietm3vbzfyyjsp34hlxosgjozsqfvjcizvatv7nvucmcrw53zpbya -0xC883A79E8e4594C4f89434EDb754a10Da2311139,,,,10,,,,,,,,,5,,,3,,,,,,,,,,,,,,,,,,7,,,,,,,137029.44264404205,1671485765,bafkreigrxekaf7qcmi7jfo6vy464gbohi333jt6f5hgtdplxq4di3sfg4u -0xfD7cFA732b3F676295689c5355D65c27eedB6dDB,,,,,,,,,,,,,,,,2919,,,,,,,,,,,,,,,,,,,,,,,,,2925.1903926004293,1671486063,bafkreigjxi5ivpa2o2gnaunffbnqwvosddsuxxp4ylnjpjo5jrb3ahb2w4 -0x2F64b9C5e4b24eef6C2003406302f0DD92AE9B56,,,,1,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3000.3169679241323,1671486211,bafkreidsnpggngmt7sodzudx7s6cvxldwhm4ppjxx657l3he5i4z2vgln4 -0x3c6E78A279ca78088a939d80968feFfcd517190A,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.69,1671486251,bafkreiesqvelzmo4aec56w42nshoeaiogerqjqetbunee4b767lfzp3kbe -0xE4D0296c0Ab22Ea98f8F19Ee0567F049efF56A81,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,224.33982767315507,1671486931,bafkreighdga5c2jymveqolpsiswfrmdwenzuhaacbh3aqzvyf7qlx7zpf4 -0xeFa5615b742945e1f6aedfe7EDfcF61ec5DCEeC5,,,,1,,,,1,,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,1,,,1.3993311779118451,1671487606,bafkreid5oprc7m7ysjljora55dstsv35ftearfn6o5xqw4ijd6z6fbww2q -0x8bbEca4D93Ce618407dfE431990e6C0C74a0f71f,,,,,,,1,,,,,,1,1,,,,,,,,1,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2.440339142372726,1671488024,bafkreigzmk6wo623zo4crmeh7wsvwuumfhbwz5ruarzrzl6yomehiwwa6q -0x921Ff98DfD6739AC24AD2581a7e6B8d21A939364,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,3,1671488642,bafkreidrj33frplxr32ug5xrrcewfo3bkwx3gtc7l3qraotkh5pbvuqb3y -0x4072d2C6E58c9A3d43D692c0dBa81eC0eeEEd15d,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,8856.005760504298,1671490112,bafkreidvoq3vgu4brgcterusy55vuvctlo5gcqalthqxb2gwbn2btihhc4 -0x3a8b9B6d9286A42d3956A54DC60ec81c6865ce82,,,1,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,,,,1,,1,,,2.5172776774664514,1671490177,bafkreidte673ewrtejaq6g4x2o3k3d3epdsuhexbs3fqtpi6xlj3ftcomy -0x23099Ec85B447cA18B62591813CB89D9c3a4455b,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,26080.074377654044,1671490842,bafkreiaemhkcqrry6u44mdp6vids6d7vkmjmu5mry3ikgytke7fwh63n6m -0xAf79ee26cE3f57a008ae739Bcf0996A2fB9C6626,,,,1,,,1,,,,1,,,,1,,,,,,,,1,,,,1,,,,,1,,,,1,,,1,,0.5154458151783653,1671490964,bafkreienjsee6ydk3cjt3wa7wdm7ax6nynsshglvmyhknntq4tbolcp4zi -0xDCDBC5eF852964945bA5D4772B26dAcFFcD9F59d,,,,,,1,,,1,,,1,,,,1,,,,,1,,,,,1,,,1,,,,1,,,,,1,,,1.4920769512242802,1671491599,bafkreihmrxkfn7m4suxpxsy3pp36dk2dbthdbe4siaqflmlifl2xifx6ey -0x84Ecf15af6fEC307aFeAB934b46947967Bc02d5f,1,1,1,,1,1,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6.236450674521951,1671492313,bafkreih572ftuw6sqbvpmvwfstughxibahssxjfpikfr6undkhvclt5pfe -0x4032aB8d5ccEd1444240c7b973F36d712981FB00,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,1.7302914377376888,1671493583,bafkreihnptryi4apgvcru2ebeoepnhaf4c6eoqys6ywm7enwscrqfgmbsy -0xd76Aa530b8C1F0039971Eca13ca1850047271aF0,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,26314,1671493860,bafkreihssiiskhhdbscqddsniiq7qwoq7pa3uwnm3mdbtw4gv7kd7yylha -0xC1818d0D4B392E1A3c39233d9de3319b9ffd1b28,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,3,1671494407,bafkreiduzxo6bii2o74yftw4un4qjz3an75egsjq6ynnuttmhjqibeeznu -0x00652700CB56BD11A52fCFb5709F89b70a445208,,,,2200,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2241.2405398706865,1671495095,bafkreigodj6yg4ijziosfxzzlecyzmpax2ziwsrz5f6jgndrwttr2vq5sa -0xC22fd653df4F0a2a4331FE81f0964F4b0ee5033d,,,,500,131,,,,,,,,250,,,,,,,125,,,,,,125,,,,,,,,,125,,,,,,1256.5922312354426,1671495321,bafkreidb4mlyk4jtxwm56mrasoo4cxhssmosoypcgw6udcklkah2w2jyla -0xA77e0bE155C36E9e0f4B85fD5fCF86440d619913,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496087,bafkreid2jkl7363smdfoyq7mmswsrcvmrjwizouzlxqdp4k7i5jued3gxi -0xE1BF8839930b173a97Ac29DC33C7774416517811,,,,,,,,,,,100000,,50000,,,,,,,,,,50000,,,,,,,,,,,,40000,,,,,,135538,1671496599,bafkreifay6ic5slg34bm62224k6y7u7adam76gpeo7rqpbskkraeuayfze -0xaC2e542e8586a8063267Dc028b9ed093b12158dc,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496808,bafkreifbmsgolrjnoabnnuzlm7576ktbnq7w7vqmm3lzc6qmszhsa6m5uq -0x6069ff82e3236312Cb4DF04c6E17ca0442dB1bFa,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1745.287455015515,1671496898,bafkreic2yzsbcq36mxccjblq3pvehqjudz3gftishuic3thh6uegyidugy -0xe8fe52CB1A4154036103D036924D43BC2A3B2dEa,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496922,bafkreiahhehbmgeb2r6e7raye5gbhj7zitnqkhkgokdojdmzluwqwyjzbe -0x2c5317d8E45b9a5C0488114AFC96CF460e5d0783,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,105232.3637075137,1671497006,bafkreidukagtenvydrlorlpbtjhxripbjng3jtemnx6wjdkc3vb7wbbx54 -0x681964BEAE493D4Ea511caCa53BafE183B35511F,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,24,1671497045,bafkreic6qkzt77y6smriymocin7nfju3cw4zmdockjwiu7vrb6vqnyumcq -0xEEdF3ec4235854D751d43E636341aDc0bb65dC8f,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,22,1671497159,bafkreibi3asw6t7zfiemf7nn2d6keswfsarfizvaivepya5mo2basqpdvq -0xd099C484A42AB337d82AF28298688c413FFc1f10,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,18.14014191,1671497299,bafkreiaxwelfnt5h67tbjemfwenr3advltngoqx4y663z2iuaimouno5xm -0x9A34B5Fd5D2454021cD373ed2F6D653507a6fD47,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67,,,,,,,6126,1671498858,bafkreic5iszqrrfmbnau6t6c7yxjv32a5cwpcowe3yspnhf3vw55256ss4 -0xEaC4a477C275dd968F29267CC02DE31574F6B0F9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898.96624113,1671498980,bafkreigi6iipssufgzc6tnvjgjegk4ld6aftdiqvqyfng6uvvcxdomgmta -0x969424c5Eea14327feD11624703f54E60B0aF1eD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67,,,,,,,2043.3,1671498999,bafkreieugxeqne5q3ve3l5dqsulajnzidi2chsowovwdzto7vpckugms4i -0x80B1b33a888924EE204b27553D270B3ae6a22ac4,,,,1,1,,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1275.2639585134584,1671500193,bafkreigtenzlx5gtiyqfx2ydqzxopw24cz5bitgj76slc5ve6ytjkhdn7a -0xc0309fB00BD8439155857D7d7bdCA222274F05e6,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,27394.408364384617,1671501301,bafkreif4dufhvb2xjq7mrswo3u4opclpsmlsu2crfcjeawwuxokmctb3h4 -0xff5A94619c71B9B96B7a160E71C2A2Cb82b050d9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501359,bafkreigts3m2uhnv2iolx5f5q6ebc4ejeuuodrywj65b4k6pjzb7smoapu -0xA9640998Ac009d2F2FfB60E934F126079315ae59,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501459,bafkreihsbilnhwfu2kjv34u67z744mwxanhwi5v2kffiwrghyajumntbtm -0x075aC07E9154a8A65346286d9Ef03166A74CF279,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501504,bafkreibkabbyalds2qbjgh75isahgodszmn5a45pzlqk5uxafpvave2bxe -0x70d4aB4815C4997dc16caeD4A967B4F7E386A96f,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15890,1671501557,bafkreicvsygncbhnqomzsq6pu5czve7joxw53ccityopstxdarzltfn7vm -0x8D412E067f76B761b92209a9E7EDbEaF475AF3Fb,,,1,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.698129790724,1671501983,bafkreigrhsuxabiylj374q7llnax22e6e45y72766ihzmzycmu3e2a2psy -0x6fccBe0ed71f9989d03af950F4bbb01eF245917B,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,52616.16556078197,1671502234,bafkreiax6dwhpzvla7ipoy2mhwdk3336jianl4hgoytyd43xi75ckqzrky -0xa8d67e13AC97cba918DeCdCD78f71fca8aB2d1a8,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11669.935844542668,1671502717,bafkreiauhsbdjwmnmtiedjyrqhv5psez72hzxcf33ta3tjweq4tebxumrq -0xaB888291F4127352B655fd476F64AC2ebfb8fe76,1,,1,,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3162685187198403,1671503421,bafkreianijuasfeoeo2xpsydpwzz6o7afz3dfsghv3u5jp23ikf5icxtpq -0x88Bd639d6B029596B029c61490F29f57b0bF4a3f,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1.186527063169733,1671503446,bafkreifb5x344cpzjlyopyzs3nmpor6cfnbzpxyxaeh3335tdmc2e42qdi -0xcDd5ddDc8eD9A10B65d605950E40B7efE7603111,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10655.861166574476,1671504936,bafkreiboryi4n2vah7tsrf2ucq22md5mubiet3cr7hnzpvz3ncooxywvby -0x5A7cf87555eFE360086A89b60C1988bAE02eEe2E,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.9141748171147056,1671505082,bafkreifgflc2d2nwo47zxgvxj4rtg5e7zn6tu2ojxjv5spukg5xegu5r6y -0x159968FAD6A3df074cFe7E587CDE0C5F375C1B70,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,15899,1671505108,bafkreiegevsurn4qdaiw3dmindeudk75rij6xsmzvm5pan3hts7rt4fm7a -0x8D1011626268BD26CB82f00C2089e356D36a1000,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1100516185929852,1671505118,bafkreibzwtbn7j2mole3kwkixro2d6nhqxwzfo4pw4aadnit3cgdo2igte -0xFFB950af044Ad20b12eD483eD8Ea4B6e279A5419,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6914491707489577,1671505346,bafkreiadwsd7qohtoihguekwno4odwxxztuuc7rhiajx7c7bixuiqfzqfy -0xC32b7438b3dF7844c9eE799930a2224Fe6E26426,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6776709568618676,1671505633,bafkreid6apcg6ziosod2n4jsxwnmovgu4luvtl3vcab6uugkb2pnrehjfi -0x7d6520A825e7c1F69D3d2D9BF48e60CB1f2f3C75,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6148802940233321,1671505954,bafkreiedgsvivckyl5ou25dyih6fo7rohmmtc2upf2ezrnfuuqc2u3wrge -0x7Eb885b31130543f7A8e1fCffc4d03159838E598,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.31477977728349155,1671506011,bafkreibgpekg5v6ob4smchq4zj6juqrs5kavgpcdnwg66n5wzazoyr6keu -0xA97D4048b71975a475766E8278dcD2DA1E8674fa,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0001,1671506022,bafkreielpygloxyzjceicka25tniqxqv2hzwwi4q7fmjg5xticr5bbptpi -0x793bEA03888c04D479bb0C545F0a31504049E87d,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671506029,bafkreibz27b5fbq6j2zkl463zwjvndsoqtl3p4hxjwpd3dc5y3ms423d7e -0x35D771584C07c63cfefD751f0Ac5818192606935,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.335,1671506040,bafkreibgqpevyaqbf3m5pqlmkbnmuu65ykcchseucmggodg42wvrifnrs4 -0x59a5B524D7B009eECBB23324Eeb984AC6e17D6e4,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6092,1671506201,bafkreidpkx3ks6lhtp4hr4tbqklnrwj3fkngwtpxnph6pfmbj6hh2imr5q -0xfdDc0659688495da6b709DC628a9B6A19c0D50EF,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10024,1671506242,bafkreib3vpuzuzuxjpi2uiflsbd5c5hwzzrylwhz4rpc76otbu3tqhoxwu -0x8B503C46930ABbf53D8a9Df51733c84d6C29a76D,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,11212.286164119505,1671506727,bafkreigjhlw4m5d5ce6mge2gtxmn4tx337usxdmqe3ecoturdj7hfndn3q -0x423c03f48dc46a1F27D76d285d43d0F101666666,3,3,,,3,,,4,,,,,,,,5,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,0.25726110987867606,1671507327,bafkreibw3sf7xts2vjlvbovo65s7mgsv72tw5rm3srovoqd67f4cqoqfte -0x6daF6dc3c8AA3Ee860478645205B5F9D6397616D,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,0.16175387513335415,1671507503,bafkreickuztg2iesqxxmyy4dqcgqtq5be2j4mc2iqrg36fqqpwx3upbke4 -0x89A23F067054Fcec705E64D4f4aAc36FF0db6B2c,3,1,2,2,,1,2,3,3,3,,,,,,,,,3,2,3,,,,,,2,2,2,,,,,,,,2,2,2,2,0.13076951726910613,1671507534,bafkreihxbzcb7zy2dy7th77sv3ix2zkp6hidh2ggkyajoj4j2tmcr4jldm -0xFA6e906DD9084d50be4B0e6AC13ef5B7186362E2,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.17269004542075,1671507722,bafkreic3m2hahrt4ncwtujo73q2klzh56ecemt56uxvnx2zm6bmo6t4364 -0x2F03CE8B4e68b860Ea89a59010F964E377fc058C,,,,,,,,,,,,,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,10822.204215641657,1671508466,bafkreib6nrxfpclprwqu24ubkgr44gbsw2h6fqh5mk5tqdcrmlrbz5kgvu -0xCd8Ceb90f34f1fe03f384ef33aCB386F45872297,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,647.3542743645634,1671508957,bafkreidfx6a6j3sxsab773zv5ai66syseywmnvqx3zx2rkxtuns4jw74eq -0x37c99C0Bd9149A9Cd5a3C7C150c604D896786945,,,,,,,,,,,72,,30,,,,,,,,,,4,,,,,,,,,,,,,,,,,,1,1671509210,bafkreibmjr6r77bn2kdj2zkchsmnigppuvaax3zhj4yeeb2ncvjr44axua -0xa698A0adFfDF132e3f8F35f3C89c0B9623835090,,,,,,,,,,,7,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671509551,bafkreihbr7kjw4veekq6p6gjcbvshzpcqnmex4yoml5oxyntjepkc3tm2q -0x73BEaA2Dd24aDA65DF6Da284729558aFDd8105Ba,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2080374203347921,1671509810,bafkreigizktt7frk7cedg276ansyrkvxm65o7obi7hs6jovcwojqxaz7cq -0x5B36002E5Ee1103A44246f67b067FD5509b97A9E,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.05,1671510125,bafkreidrx4ibdy22f5c3dcvmdpun55kf32uoeuzipzhyksamob4fixqghu -0xd9a67Cab3cdd712f65B0C48e3F0015673F8D9335,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,1951.7510746902203,1671511811,bafkreih2pv74py3mvfdzsclgs3csd5pno327v3kco7vtsvkrnbalj23qhq -0xFEAfF63e94268c2dd6170794Bc7dDd5007910CbD,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,15109.498344324074,1671513706,bafkreig67lsc24ykmgoiodbltm2qp2wj4a2ar7446wg4zruyf4pwxo5qk4 -0x61b86C9E2Df0ae0f9288E27FB3dB2731F59Ae733,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2928.6916259367863,1671514110,bafkreiarprxz5rd4z4rh3jdxtfbzxlmxunsm3gzty77m3plsr3ruedwyv4 -0xcb7958Ddf673Aa8f21614346d3E1c46182A9454d,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2,1671514481,bafkreigj6mqbg7jox6mtvdmxrf4hhild4cwywatmonshh7eoj2xln5inwq -0xcC99489Be87F4Efa26919d918995c09a7A688677,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,8569.237459660348,1671515676,bafkreibznoetj6iepa4dl7f32p32qw6cyxctclanqeh3xfbeyo5w2dt3jy -0xE0e82310b21c06eF9c1E92489a9CB542B54ff728,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,14178.615459130842,1671515707,bafkreihmc6k545dqmzysjhq3fjqkz3oigq3rmav4wjlrrfhijpo4wc2w5m -0xde731672533D772C4a21bfA0353299C320151de8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,13190.524692163743,1671515731,bafkreifrhn3s4jatk6e3t3iopjdyfloqoom5ylinn5ecurxyib46g3if4y -0x0043859dE73f1bEC4b123Eb9311436c299B38Bf5,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,60.129847307698235,1671518139,bafkreidomanpqvvdprduibxvqichhkbhc3b2fy6udgvtkzvqaw4wl7k4ey -0xde1B6dD59a147a5CBD584F5eC2E0954CfeCD2816,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5796.185350700435,1671518221,bafkreihjdno6b2zuubfohxyo6didomyx7tlzobvpl4w3sk5qeyyvvi4yde -0x5a507c770246Ba98AF4003efdF118fD6A37466Ad,1,1,1,1,1,1,1,1,1,1,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0.5725370190433058,1671519772,bafkreiah3j42jqicyjjg4p7aoc5o7jjo7olln4yd3da6d2bddhgxf5qb7i -0x8b727EC4612dB947BA4111AC8359b94d6265a869,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,143000,,,,,,143075.0889022,1671520510,bafkreifl663yizdrzvnskcilw4fxh3uzu7qvtb4apmtu35xhyrngv4wyqm -0x072c807A5447D3AA990d33C06850baA4caEf0F9a,,,,80,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,10,,,,,,35408.525493881854,1671520719,bafkreier5zqenlkrmjnhnsi5nder7jj7xyxintuof5rblb7ckiofxz7cgq -0x3eA7c30e91720745a9E57527eC74863A507849AF,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,3.934918763586961,1671520949,bafkreiheniwii35rfplaqpkdn6jvmuacyjmohlabcbh3xfsrsc5udswrsq -0x67ba6abF3fd1B9668f1aAe171Ff450D054418ED7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,579998.84688021,1671524357,bafkreidcjigxslutlrqeibi7rtl22hpvnafq22x3bh6raa275axdvpmpcq -0x4d143df97ABE6f3521ee66BdE8D40Ff830f7a104,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1178.5069802645348,1671524626,bafkreibdxtya546o7xezlgnd7ok7tadt6cl2sjupnfgz3ks3o7lpvngs6y -0x7E88854a5f2A5e6647FBe67F08A184dC0867a822,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3000,,,,,,3108.218288548972,1671524906,bafkreigiwwjbw4ehzhudv6rlqmtl6x7fips66jxymepn3qy2fatsdff6ky -0x0CfBBDFF8e741Ab4d996fD121BD56f20446E8F8C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,5912.486117608522,1671525471,bafkreicwrp45v4b6sjwbfzhw5qmlzh4crkemxzecztbjjp4znr4zpv6vka -0x424aDf9d641b781870AFd230775b4eC9a6E3b2F8,,,,10,30,,,,,,,,20,,,,,,,,,,,,,40,,,,,,,,,,,,,,,11951.472619222248,1671526281,bafkreifuwtcwi7hygx2ymudghq4u3xh5tawi3tauxzjecsg3gsmy2jbija -0xA4D3786210A59CC113eeDf5a30e1358Ed9BeFa2A,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,66717.73498510045,1671530926,bafkreiaqwfp6ufcuvdaovaavz4wxb2dk3ykhpct7vbfnqez5wpcgys7vty -0x45a7742393cF1df4F8fC33926a4bd474a3941A67,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,35152.79,1671531445,bafkreifflqmh3xlrtubd4giwuaaywplc6vgknlwdztzfyjjq4ygreoqkbu -0x75DDb7aB958135bBE2DaB48D6286826f6aa5E3b4,,,,,,,,,,,,,2,,,2,,,,,,,10,,,,,,,,,,,2,,,,,,,7065,1671532296,bafkreiecoi7dn3zpqnlqt55uyulvmobsapntv42ashkwg2yxc7g5qsr5km -0xFF1882511a5673194b252c35f2530562f74F47e4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,0.1,1671532425,bafkreiczihcuz5j43gfarz7fswlxvthlz5554gkfxo4j5denchx6fv2374 -0x7977B909D55a53F9c73140f7F611EaF0638238Ed,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.011218295138671314,1671533780,bafkreiejalpwg23itgpmbpsepsrjqda7cjewgdsmwowdejjn5zj4aqesmy -0xa785a1FD05a0C006b94484F124F6F420E6E50834,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,12346,1671535829,bafkreiczgr6nmdu7p34kq4lqaktpkle5fgmfkudxc7saarbalxermh57ei -0xC3115992BC4E840bD7af1F1781f1c46b7374DC7a,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,12809.802732478318,1671535952,bafkreibxs2khqukzpuyocwtwvbi6aiawl3myxmhqttutcxzgj4zvexfpx4 -0x8247bC62985678B38FB9cCc7E7c321C030E9aAb4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,316.96062488793086,1671536324,bafkreibqdlyms2sod45gd642fq2hl42sppvn3nas7f2blijzyqsx3ek5wu -0xC3b30E0C1Be66C72Dbb6e6DeB85d660cb3eF0270,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1220372.6085502957,1671537805,bafkreieyiuav3kok4pz5zuxe4hqnt6kkr625xgsaok7k6uxpbpybbjdwxy -0x50B13f2F79Fa06Ab33f5eaf7ddea666499C36de2,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2,1671538698,bafkreigmk7cnrup267eeipsnvmbvivsunphuxv2t3phv32ystlhgoktakm -0xFB25B2687CB2403A7625f0C480163b4f020E53cd,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.37041196735673104,1671539951,bafkreibq6e4vfnwe3uflethgl4ifzxvivtaormteotvnfv7zogc7bu3wdy -0x8Ea2a56feF1887001961b34F69b9191d24Fc415c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,10.82,1671540021,bafkreiemk2l2axkb6wkflfixgpdgykwb3cbh6yfzu3qgrfid3r3rp46qzy -0x0D3B8744600dA2e200d2a46f676fd5a29B7BD1BC,1,1,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1.1698928013945156,1671540831,bafkreibdbbw6rmk6g5qx4euzp76rwq3zpusjq7yrfehd5ikbz6isfacgo4 -0x401835554EAbB3B676ce8B0E8B6b066543aD7DA1,1,,,,,1,1,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.2314256955274622,1671541597,bafkreicjteghw4cz6xnzg2wlsmvbmypzeuj6755qbacyjio3v4lxtcmsra -0x9076522f767597B93FA83F39ce163777Bf20C3b1,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671545155,bafkreic2rc7p3vrvalhbryrc2pq24fngfllvxummvlppozxpstym7nretm -0xbbd23079B8D81c6Eb100e822825E410E2e8B1064,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,24065.275759764358,1671546593,bafkreidgp6o4borifzq6valshd5zi7iyolnz2lhhqcrjoqglwo3oacyfd4 -0x903F9520Ca4bc28D53a516C04914deeBbBf2F243,,,,,,,,,,,,,20,,,,,,,,,,,,,,,,,,,,,,80,,,,,,93.84268846835003,1671550714,bafkreibdljokjwyw6lv7dnanlicxw2uwriwvuyc7qeja2zfmr37fk3vpmm -0xf56345338Cb4CddaF915ebeF3bfde63E70FE3053,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,9149.239104040693,1671551349,bafkreicsdt6vcg2t5q35ocisychttbjv2vyehrl72bsyefkpkkrx7l4nm4 -0x21A0F52DAa934786A5EF80c34B9De8b94Fdc9822,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042.3737876676703,1671551364,bafkreifnlfcbbh5uazdxa6f6zravoweumpodl4skvtsscucfmvydou5dsi -0xE88a203D722e506648a7e9482de68EC9C58249e0,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,984.9890912807199,1671551444,bafkreigqjzyx5i63am25s3rfoupfhjlpou7gmlmdulrjpwj55pqpdbss2y -0x81b3893a8F3557712705E83D2aB877710044d74d,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,118979.64445035787,1671551557,bafkreig5xlykgkeallcygzsk26zytib37mso4wllitjmpawpspnwl4b5xy -0x9f4A549dD4415968f0279dB9Ae43AFfD7354CFDE,,,,7700,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7651.2410737671,1671553435,bafkreigkqrxhlker6e3erdldgeioalkupwvxplfuvitr2cmyghwr2asd5a -0xdf1CF9E3DebfEFd56286eF4024646f49cc540e37,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,278644.0393379495,1671553840,bafkreiepcyzy5znfaja6d2oz5jmht62n247vsi6mx2rymt5sfkgw7xr2cy -0xF584617637c2Bf5b6a826aDf213f7BEb9b76b29A,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671553888,bafkreigk4ztpgun2gfy3kj454nzt2s6gixcw6dxgq4kwwsgozcwhz7uywe -0xb7a98544083a5f6Dd3Bcf267aBa5a714E3f515f4,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,451209.521835123,1671554311,bafkreig4y4ctv72hg62v2fnj7e4fqypcavvwhgwtn22bluuosud3feykuq -0x0eEFfea78e89A75F6BAF1d345F16B185EE75a815,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,8092.236579863466,1671555111,bafkreidh2diycr4ta7apo4hzyox457wkxgtovswq2vn2zwcyrn5leu4wk4 -0x0253de2863975260822611086835571f86b7794f,,,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,8546.26298904,1671555535,bafkreicd2bhevjukvuob4szfgdau5w2rou4b22yzpnf5a4eptpl3ldtzhi -0x17B9c8863b3bD8D5Fdb9497378fD0cDa29C15AE1,,1,,2,1,,,,,,,,1,,,1,,,,,,,1,,,1,,,,,,,,,1,,,,,,401,1671555624,bafkreickj2wjptzhcy6ajcocwe7lhglqdu7s47c7mmuvc3kaf5y6kgdaq4 -0x04F671fF7215EB5908Ee1FB5e7a089152681AEb4,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,21983.169629199983,1671557165,bafkreiavoiqk3fcvs6ygtmt3zjhvwfgbu3xonrv22ykhrnz75bbk6ht564 -0xA9061b9fd4e3Ed12713fb64743c01F72Ab86D30a,,,,,,,,,,,2040,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671557479,bafkreibcu4dsx5px56r52v3ihnmws2zhgjnfbphbt3obwkjy2kuxi65shq -0x96474a1ab05Cd0D67eDdfd9F86F0569ACA3d7e56,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,116565.56381748024,1671557725,bafkreigije4idgqevlfxql33hoj2ihpyoqf3s7dgrhsznc2suxsr4xnaum -0x771690B7AD4417878a604B798aC38b46262B7670,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,98555.44178400462,1671557764,bafkreiczeq3tnrlloc3r7uwjnpwcpurn73ohtxs5lzhvcrpl37mxpazgw4 -0x4A97e4E71BaE0263978323dD8442e490bBB533cD,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,99428.1109508388,1671557824,bafkreifa2ouzr56r5uqg6d4evnuf4l7j6ag2dk26hr5uperiznji6ppdjm -0x5C04911bA3a457De6FA0357b339220e4E034e8F7,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,5318.383702313741,1671558315,bafkreihtontakqj4cykv4sti5eycsynkt2nuuk5fw3flvh62w2yzkl2ib4 -0xf1faECa73C28bd888BdA15D32181C6421D75B986,,,,,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,35.289565725491144,1671559104,bafkreicch54bdyhepdstv7d4ghccrrcdiegld4ofhn5d5nnykkiwouqmjy -0xb75E34c02BDEeb29fD9826e8E6b887CDDC4cAb8e,2,,,9,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671560959,bafkreihhycjqhb2lkcgttghnf4c4almi3pqdvv6jqfioxwpeex7uhotnuy -0xf62FDFd493EE736793787a2C261FcbDC6D753D67,,,,,,,,,,,,,,,,,,,,10000,,,,,,,,,,,,,,,,,,,,,10241.84021277827,1671562681,bafkreibm4we7kojethwdo3cmpm3djfc5ooozhn5foc4nywak6s7o3foj5q -0x14D87e292Aa0e251CA50BF980B8cA54d4f2f2623,,,,,,,,,,,,,,,,,,,,,,,19000,,,,,,,,,,,,,,,,,,19193.19953931745,1671564550,bafkreid7o6vpzrqfzhkaivgjxiugfmok5vefwjktk43dug6zucinlpqmam -0x8665E6A5c02FF4fCbE83d998982E4c08791b54e5,,10,,10,10,,,,5,,10,,10,,,10,,,,10,,,10,10,5,10,,,,,,,5,,,,,,5,,90374.6850772568,1671566361,bafkreidr6toqot4c6422cuwpoxw5iua3n5oo6aehy5yjh42ghsyhn5f4si -0x578E941424770936988B009D837c80a9E579c431,,,,,,,,,,,,,,,,,,,,,,,10094,,,,,,,,,,,,,,,,,,10094,1671567147,bafkreib7pv6dzszowflkl2mw6uji7t2d7tifmvsqgbrnktqcfrs3htbvri -0xEe1d599BA0e6C585277c5aFc0B89A9ed12534E80,,,,,,,,,,,,,,,,,,,,,,,10950,,,,,,,,,,,,,,,,,,10950,1671567686,bafkreichr2uyhdn4qhcsdhnelg3iac4gilx2xo7eylb2zgr6ccw4wkbau4 -0x33Bc4bB331A67088F1732eF5B84F79e9caB29CF7,,,,,,,,,,,,,,,,,,,,,,,12992,,,,,,,,,,,,,,,,,,12992,1671568226,bafkreic54lnzqzqkjyoemfidn5rk6kkvjp6wx7zaxxevbezvtopffq5n4e -0x9ABb502f272e8840ccB3aD68CfE7E2E82c809A21,,,,,,,,,,,,,,,,,,,,,,,17076,,,,,,,,,,,,,,,,,,17076,1671568707,bafkreibdo4bylbs6jbzajugz7x6qylxuh2dvzu7mmdtijifbpo2ezje57y -0xe876387B8246663Bc0f3c76114aD75d58CFD2b46,,,,,,,,,,,5,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,36390,1671569644,bafkreie3bdao5xexwxal3lvewrzhtsupkhltvbn74t5uyyghn3rq4moz7u -0x7525e71f51BDa1fBC326000714d2fC68ed5Aed6b,,,,,1,,,,,1,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,14463.171912358788,1671571756,bafkreia2bfvjize65gsaczrfyny4o5muetnrqvwxzg3tflv43tjfasy4am -0x08c1AE7E46D4A13b766566033b5C47c735e19F6f,,,,,,,,,,,550000,,,,,,,,,,,,600000,,,,,,,,,,,,,,,,,,1155619.8008433485,1671576881,bafkreiczfry7lrjhar3mx26eq4l6vy7a2cf5beg7ct76glwctdhozu24ey -0x8da288c9FdaA754F2eeadf8145222bD1cc8782ff,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.252790482840706,1671576924,bafkreic6gyusknnorbm7xaopqktytye5fwtycpxxsjolvdn2q6lbkaw43e -0xEBcacC414478f5e2fEd75F56566baA90b60188e4,,1,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,9569.539192798118,1671577163,bafkreier3u2oqjwevic3ziix555cviyb66irix2ekzkykh2wvstr22pjpq -0x8884fBca23D2C64a7d526731AC93d2d1c9A428FB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1000,,,,,,2451.6912959315214,1671577524,bafkreig6s6fppoxdvnpr4l4xbo3sk7nr6435nivbk52nb45piwg2lvmxde -0x6a91B82a9Abd58963b164d01CBF793CF60c089fd,,,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19954.947765464392,1671578965,bafkreicmjgyrmzvbny37wjd26gmm3f7fzahipc67hcdydxf6alqknq3qqy -0x2974f8b144b4E2Bdb6Ff57797ed9cc7c7aC77618,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,13848,1671579750,bafkreidt7awrss54dhh33oamaepvjg6lkf4v7pkzdxavg4f7szqgnaxmmq -0x99918ce502C8861aC6a664b3f56BABF0DF93C695,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6443.682214480737,1671582267,bafkreia32y4adadk6dqdpiys3abu63graumry72zbvfedpx3vs2lsn6yvu -0x8f1B5A2c412b8069E80eA399c4B53be4F4217E98,,,,,,,,,1,,2,,,,,,,,,,,,3,,,,,,,,,,,1,1,,,,,,53791.23120483479,1671583988,bafkreiaf3sqsoilwgvs57pie3sqsheff2a2qcgyxnwcelxkrekf6eafzaq -0x22154EC3f542483b2C35d67CB5e75A905338C259,,,,15,,,,,,,15,,35,,,,,,,,,,35,,,,,,,,,,,,,,,,,,90634.07209211274,1671584648,bafkreieglget2q5negummd4quwaz27o4sglelshra2bn2lrjjlwq7fg5nu -0xC7AA66F4618171e4e074c3B3Cd87645d322aB1e6,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,22230.072102758197,1671585769,bafkreiddmes33qnvi5tkgueqadc563rxqidxq5bzne7hsgwvi7mhiryg4i -0x3207136F3C82370b17eD87B89F91fFCD6987680c,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.885365861029664,1671586647,bafkreihv6jdqnrzpczo7amlsjuz3qflpsqttx5zbomb5pnkyvuw3qeja4m -0x7d795a0CdB5B2F5F7177606d57313d17F119278a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.21627144159443348,1671587694,bafkreiel3vlizsqd6wibbryw3hwa5cxjqerhn7yv4g56su22akx3kfsrqa -0xE5e508C953114f8688b9d6072cB1196Cf6487006,,5,,20,25,,10,,10,10,,,15,,,10,,,5,20,,,5,,,20,,,,,,,,,20,10,,,,,77.62390972967073,1671587998,bafkreiefcnxje4btg6nsgc2vpzk26kvqi2d5lb7b755ongpxqm7wno3huq -0xbf118E085855598A04Eb12338BA0ebb16525f521,,,,,,,,,,,,,25,,,25,,,,,,,50,,,,,,,,,,,,,,,,,,19118,1671588764,bafkreih3xmdiqtd3csf57ss7ah6oosh2j6jzhrh5mrr66iwapo5cppeghy -0x9E4E4bEC255a59d2b07cE3bbEC0aFe5Df00B4b45,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,10869.69156719,1671589195,bafkreibk57gkzn23nbeofivmaktswpb4xd4kdsd5vnrmtsva2gjq6oyvb4 -0x85199311Df08299D312A66Dd90C98FaC27B2dC86,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,37249.677972927544,1671591096,bafkreiaa7a5nyvxjpo3hemv4nc3pdgdhqhuyhwzvwfg3e4z57llzguubpe -0x8eF7F3651800194968e04030CB09C0d130514111,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,0.6307290555139802,1671592770,bafkreidovgkc7imqbflrzmtlg4slvro3y7vtwyo7r2ohomyfwnvjy5zbom -0x157Ea7465237654286Ba3FdfAeFD145cafc8859E,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1,1671593648,bafkreiag6rte2vdjitu4mdl6hv4ofd5rttyqs53tsg2vmcyou4abndrfrm -0xed14578B5317333183dF8541E75FD5F01B8bA9e0,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,15034,1671594365,bafkreiejltfwauae3wye4rex67c5zhi34l654z57gxla4gbrgqqbkemkey -0xaa73F5B2DF5364173e2abA92890bAA6026a2251b,,,,10,,,,,25,,,,,,,25,,,,,,15,,,,,,,,,,,,,25,,,,,,11156.00691272,1671594517,bafkreih67bslmimn5xhc67utgraqo3q5dheyjvni77brcdd26uudfshini -0xff5fE762636E874CAD39C05B92ffCb09c520b7CD,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1188.8754005049534,1671594858,bafkreibcxbxsv5mpyfielbn3isl2pvakrsglx66ffl72y2ki2gnawdgbg4 -0x5b47Ce248ea313841668A318AFB9a5597d5eFC23,,,,88,,,,,88,,88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,96.88594271051765,1671594899,bafkreiefjnfzni5b6rtlhtte6d35em25eapnunil57wcrrful7ectkxk7e -0xaC8FD22Bf9588A1Ba5562E05C755A2B94EA34cDF,,,,1,1,,,,,,,,,,,1,1,,,,,,1,,,,,,,,,,,,,,,,,,11892.353265796084,1671597823,bafkreifkaviuggvg2ot2vbhcidxyxelm2d3driqwdie6dwyb3tbhp3myam -0x08552b556cd22F54141B361E207619A49F28FfEd,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,8946.880185661481,1671598351,bafkreibsmyqujyeupudrzwgktwnsdkgbpr4k56dtppsprhuzjqcbdpgecm -0x241b0D032fCE2427E0171778F146Ccafc90aEDBc,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671598362,bafkreibpes2lab2n3pqe6xwqmsdjtureot42eb2mlufzsvx3kmbub3k3di -0xb8861Dd4C9684eDDfA720029C91681c288Ddc084,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671598503,bafkreic7xmcl2lacjtxy6g2umzlhs2zsltwqwh2mpkkfyejzraaqpedhky -0x5c0F53Cc4bEcb359d2C3f2d67e2B578eDf2Bf4fc,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17259.230981740526,1671601433,bafkreie75jrcr5yi4mr4cl2oy776xnstuuyflvh3cfnuzkizfu73b7kxfy -0xe8Cc7c453ecA25450CA16D551dB93d5F5740E054,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,21265.706945654583,1671603414,bafkreib7o2e4nxroyw3gmmhh6s7nbgqlfb4ihr5uklbbfbw6vbmdcdxmwq -0xFf3884575452BF87ab027c8C2933772d9D102896,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60143.30940149005,1671603505,bafkreidi24vhtor5ojkbqhwjptbvvjwatwdmraagmbv4bq5rlx6np64ppi -0x6f3a4412262428dc7dE6685854bF50298433D0fC,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60771.49086761074,1671603587,bafkreieoixfcu5op5dfpdmy6c3zy5bf7zj3tf7od4vyd6tyxllyoj7z5ha -0x9543b24481Ea651eC35F805E7815E0A314Ca7490,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,61804.95069897057,1671603693,bafkreih2ukfyyt6kwripczg2nsudgmtemd24nuoxbsmjhrqpjo62hunqgy -0x582643c7E266a4568d9662C0fb9d8D6Aa7592442,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,61852.75488300007,1671603931,bafkreiesat2cuuey5nr72l5begavqlagkv6t5wbb2eibk4cmvwgb5llmhi -0x4A77CBa0b22646DD2f6F5a9998527D7D5f49703a,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,92616.71092,1671604680,bafkreic7gvdv3d5xg3gqofgjbqplfug2cdtuvqgphygazltgc3jwjif2km -0x833F96475e8032f88BE1F3e2b57D5Ee31eeE20EB,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,44849.11709327758,1671604762,bafkreig4djsptkb4pzynuouqvbejvpdw5iqbi6x6klduar34pzegycz444 -0x09fC90831502fBBA42EB367EB244B25f9c2804c4,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,56467.47515660747,1671604824,bafkreifyox6lw6dfnznlhozsmogmwbdnuypazkht7wnkclxirkayayumke -0xeA56CCc1F88958dB6a0868957917861A1dE5E31f,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,45585.28196770686,1671605105,bafkreiaabxcg4q5pvpw7rzjtj33a7em2fw2yzajjxwax2orpt4y72kxrxy -0x037ac7Fa0039DA18D9bDa7fA946c684358be4b52,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,15798,1671605410,bafkreia253dcfpbu2sl44ch4tm6ak2eqcopyre4xo4nxhf5znkgzbtphdi -0x59e1cDf908933Ce0f3296b64E726160aF1B63320,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,75152,1671606181,bafkreicpteicmwrajfe24ijfcycufo44altveoc3ufgeinqydidoff4lsm -0xeee22b68F93e130535d1d56c1B95Bf22c94090E0,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,151802,1671606281,bafkreicf4z7i55fvlugduqk74drnhu4ark2ynvpvovztypqrgp7e57d764 -0xd6595AB8D76f3e44c1c80b6c64Cf721948C9cE0c,,1,,,,1,,1,,,1,2,,,,,,,,,,1,,1,,1,,,,1,,,,,,,,1,,,0.3287170734307452,1671606305,bafkreicokc676lpzy5lrvtyhizckzw65ec2hiktoi7wbu4nccz6wl3spxy -0x9D4c1C518442aD9Eb23cb79A4792D508b49c81af,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,15034,1671606379,bafkreihd5lqgfr4mcff77arbjuaz4dp7cpevzpgmtstohuqef5aemlomuq -0xE28160714be54a94797BeBcf69d6FdE4a883a568,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,50650.31329745207,1671606464,bafkreigeovendkmxeuvhuahllj2cv5r7vtgohjjrlufz3grrw33gc6exp4 -0x363227123564aCCBa048094A2D554239b1aa5779,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60780.37595694248,1671606594,bafkreiaik6v7u6ko7oivapdumgwsxwd7gehghhxkdo2ujyt2735gi4lqh4 -0xEFF6f2D3770550A4dE70777aDF86EdbebA252561,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,56282.62813612874,1671606653,bafkreibr2jm2zwm7ehvnbqzycvazandtikujnnvydgp5rl25tdm2tlc3ru -0x1D168517c61B572c3df1CDDDeF33879689dCD1A0,,,,10300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9985.327579744204,1671606959,bafkreiccnscwgvribczo2zlrkuoymfmbcgbwtaqcqiccbvbypheidapy5a -0x15251b01C04a14628e4480Ab3e40e702594cf1dB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,9647.177019045108,1671608605,bafkreihsp3qkm5rl3aqqs7jibelloznthh72i3cyjhyf5ghl7o2rvkktse -0x80a20347b912dC538639112754320C016812a554,,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671611765,bafkreiatk6u5ge2b33vrxloo5626gxhzw42skfj3wtky4lwddgxqls2mx4 -0x13a80dE23190e82DD00c9d41bdfA5C23D223d20c,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671611933,bafkreicemaks6yyfft5y6h3uzxi5rbflgdzscqh5umpwedmrs5yzlddhgu -0xd32664737fE970EE00e2e95BeD430C3845A94980,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,40911.6,1671612037,bafkreigvndtjn4qruytiaw7qg3ibvhmzvlwi447wrbdhznqt4aarayo3de -0x03C84F943de4CF7bBc40117Eb75EDa994EB0E240,,,,,,,,12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671612139,bafkreiaiq5p2hkjs5uweo7rnaf3jym5l645qtvc3hoq3fxeicwtxthbkfy -0x85321407cCa732fc01B74B201E490Be397166B3d,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,19867.6,1671612158,bafkreihq3prhqmpkrv5loq5mgb6jhqjw2xtayiipgggour3bgosaz2mite -0x33569c101562e1fAF5b24581057E5cEE4c8288D7,,,,1,,,,,,,1,,1,,,12,,,,,,,12,,,,,,,,,,,,,,,,,,333613.24233267165,1671612212,bafkreigbut3igc7bxujbiceztg2cyltvcg7pfydminfmfhq3faylduv7fq -0x09fF3E739a0f87D1a38b551659079cC6BDfbcF79,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,29962,1671612249,bafkreietzmv6by3c7fd34co2zybdpd5se5ljer5pbjvz4leqfbnksjtsa4 -0x4F17E2Fe0b2688636282884066f2CBc8b741a1A8,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,,,,,,,4.15300329,1671612262,bafkreihwos7kjmnr3yzifhdijfr2kphhmvrtjozq4uoapxvlbohbcodmda -0x82a479BD14f05275A68016e5338367200bEE08dA,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,12281.92802788,1671612416,bafkreiazq3do5smuost4cyldbltnzvieuateb2amvjxwfrafgjat3aes74 -0xc55Ea01bFF091198CdA9d91100500b70c532b1A5,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,22.533934923197926,1671612458,bafkreihp7qwyhtklezud5vnvddpnx37yu7weeav3dcw6gbr5hi53em4miq -0x5E8456702Ba82f5143Cfc2C7B1c35e9bEEc02CF2,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,10097,1671612486,bafkreid4enmxddu2vkn3w6g4mdojuqefnx62vz5qpawty7ry36t4mifmga -0x5E999748CBdad576F17BB549F25681c01d6aBed3,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,791.158063234232,1671613058,bafkreifhb746j5wgsgdoc357cqpy3bwdrf3qrdi7cv3bvstgwpnn5znhqi -0x5c5Bdc3e2Bcc382C1c5b05D3f3139BAB829C6160,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,20.694623276662835,1671613535,bafkreign4surkr6a2k23om7rnfkwvb4plkeuwjvh5kstkbr3nxv7l4mcde -0xc8BA28507aa7F1825dB28a7882402D616ad7F562,,,,,,,,,,,,,,,,1000,,,,,,,1000,,,,,,,,,,,,,,,,,,2043.2588341142925,1671613554,bafkreibqgoue3eerqmkywv7efjjcvlkpbqm77b44wwsxp3xc4orchzb23a -0x8928b26dE9eCc59cacdbA095C6Ed6237F48DdbD2,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11274.014978907262,1671614188,bafkreifhjtckvus5w7qehevheqbi4x3rf65ihhihvgujpntzzeluaoen2y -0xd4c8AE4747926c3b09b3A9B83071d94FA6e2c740,,25,,,,,,,,,25,,25,,,,,,,,,,25,,,,,,,,,,,,,,,,,,30594,1671614267,bafkreid2phwemqf7qleij3fol5euxcrzoszae6ddcck7cukcewza2ejpn4 -0x5fFDCe83c21820ECDD98DB65D2801e42d74d9f01,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0307675621158374,1671614592,bafkreicch2ajgx4rw6ljevzim7mspn4atg4nnxx3iyfrrxjkx4zkv3qhhi -0x400e4F44D0cE889E1D09FC12815Befb059D13535,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,82300,1671616189,bafkreidpvcs4mxdlahy67idlpifuxvxqgo3caplykaqx75mwp4yjbd6fke -0xA72D8bf26E605482F7332084944272ec19dE34Df,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,23427.23234621043,1671617359,bafkreigcdz4qcq4ngf37osbih3daep3fphwojuzlq5uqpdpmsyhwjfs35a -0x720A4FaB08CB746fC90E88d1924a98104C0822Cf,,,,2,,,,,,,2,,1,,,4,,,,,,,2,,,,,,,,,,,,1,,,,,,52095.57694186,1671618140,bafkreiaobyrdgqtfnox4txpqedcfqcitjrqgd5634pqrcq3raynzswehey -0x1CC3d66A2DA4Ff929002875E381d2Aa232b7Ec03,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.0000042871193444,1671618760,bafkreidsrbcxbuqhjhtifaaswf4nldgjwapf6pefbb54sc7aeyh3bffalu -0xeb4351d692619BA5d00feBefEecdC38C1a26600c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1.0934840637537195,1671618959,bafkreicolpjwxcfcelzdmrr2vdrxkogxssqz5btvinuc6j3ff3iberabfu -0x7C646E2B34Bb50e373088a41acb4eEba679335B3,,1,,2,,,,,,,,,3,,,4,,,,,,,,,,,,,,,,,,,1,,,,,,11117.74974211894,1671619495,bafkreiac4xbszyjycnn36oh34x7vfmaqsdkpbdnbvzdpyvrezqoynyxkcm -0x917549789757E442083fA3b617955bBb78027408,,,,,,1,,,1,,1,,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,0.23123318180820854,1671622536,bafkreif2lrjjlzflmlktlq4pitt23xkpjrlofmpyzdnxs6225p6ebruqzm -0x4254419739cE5Ea3FB4140357b2bAA71357D14D0,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671623647,bafkreibrzhfwub6om2fpfxsbas3xxlenmkmwgh73y4424nn5svavr7s2ay -0xFbABAcd8EF4dEefa572cDC1A685781c2b551490e,1,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671625366,bafkreigdkbuazjrkzunm47rhgx3fklmreuy2syvg3zlhabljswmqajpn6m -0x52C1493b12758F06d069011dB972E52a6440997E,,,,,,,,,,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,5.5,1671627905,bafkreibmmveq6quwd265ok3e2fhdgbzzii2yyziymvzf5xfkw2bmuj5jje -0xe627fa5b46Edcd0058CA0D39Ef4Ba94448a184da,,,,,,1,1,1,1,,,,,,,,,1,,5,,,,,,,,,,,,,,,,,,,,,0.77,1671629729,bafkreie23j3qerohno5izltemrqodop62w6lituppwb6zpqh7aljdya5mi -0x555a457351906003D7Fd58E9Fa7fb3EEC54F83C9,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.060501443792288695,1671630083,bafkreiblppj5ct65n2k7uglcqeqvhxnk3tb2rrrawt7xgnznvsrzsdy37q -0x64f8e38e19c1B6992969Dcd5769c149951018Af1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,427.08834541004916,1671630433,bafkreidkskmfudx5eqikheu6hapx7ivwglizsnwilghocdsqgtbdzzt3ty -0xf38D1b5288B29406EB7FF548009430c8bF3A7819,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2900,1671631334,bafkreig5wba4xg4omjuwtgeuanehs6e34k5symre3brwlp6svqgyh6cjpu -0xC820817D1c55B7ed99E23E8456Da07bb2b578A45,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,5172.7777278553085,1671631483,bafkreid65v4ufer5thtaeezfqctigfcajmsow4xsb3idc25yiwrvffnrhm -0x550e970E31A45b06dF01a00b1C89A478D4d5e00A,,500000,,,,,,,,,,,,,,500000,,,,,,,,,,,,,,,,,,,,,,,,,178.24235513340705,1671632730,bafkreia3w5byuylqh2hk3zdyilrz3qkvmoksspeyv7qvpkwfn4urgjmb4m -0xbCbb6ebf12Cc1a5e940ECA21dCF6aF617aAd4Ca9,,,,,,,,,,,100,,2000,,,400,200,,,,,,50,,,,,,,,,69,,,,,,,,,3530.104922811242,1671633000,bafkreiezmmkt72ewoyvajctu7cb6e3jpecnted2v6cnckrnjlhhulgmeli -0xD70924a5B41011a6154844CB9dF07C129a0C1624,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1020.7082624269603,1671633028,bafkreibzyibswjf4lnqzbajtl4xujjusaorlpl75zzvpnpqght2pwtydgi -0xa075Da3F8c25018792366e4F4b3029a7083DB718,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,10094,1671634124,bafkreib2kgwclswctbgn6qt6fdozotk2moycw4ff4sah75kbh2wc2o23b4 -0x6cfbF06E8b6612B39333eA7c230208D1d178278d,,,,,1,,,,1,,,,,,,2,,,,,,,,,,,,,,,,,,,2,,,,,,421.71384204725416,1671634261,bafkreiatetg5iuiuibza6al2entx33uzl7arynnieaahuuwcm4hjk4vxme -0xaf469C4a0914938e6149CF621c54FB4b1EC0c202,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,3885.0462532386855,1671634771,bafkreibjohkobyhbkwaioe4mv6fieskeqajl2dcg42hiw7tptfvda3h5lq -0x49f8247F494AEBf1Cdb5b431Ee6dD780F89A98EB,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2559.937630407791,1671635878,bafkreig4qmhajlpm66n25exyhvhqibt2okbhnpm7lhhqnin64i3nxyaicm -0xB88f65Bd2493BA8e4fc15d9D0C3905d16874e9Bc,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,1671636004,bafkreiaa3us2hy5lg5tp66gmdxwlipi6eqhvkkpfrqrtf6crhuccr2qbii -0x180Dd1a1f2D43e0162B62a2F1d19a8e4543d75b2,,,,30000,,,,,,,,,24000,,,,,,,,,,,,,,,,,,,,,,,,,,,,43906,1671636040,bafkreiap37r2q25xcxeetvg6hnkgkedkmrcd7uplgaqobyhvcbhz4f5cki -0xBeacA3595d0E023Cc726109b5BA38c7164daDdb5,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7381.456060834408,1671636252,bafkreig2orwlrcvpyibxpanrmxkyhthlinqzoisxv2t2ojyo4wuhl42j7y -0xe0c48848828F8fADb6F8F75B64Be8f28e7f90304,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.03020235,1671636318,bafkreigayd6uirxj7mwm7vib6cmtkvfxzcua5od4r35wd6yjm4c3yzhnxy -0x7B4e32D7c0a0BAB8083e3e9767a5af2472b5cCFe,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67139.41261273927,1671636491,bafkreiadbkdzgtih744i3agydlhhsubcvxbd3suamiv2otqtqqslaq4uay -0x0c5db788F9eE468906ddc6CcFb1b1fd3d23a2516,,,,50,,,,,,,,,25,,,,,,,,,,25,,,,,,,,,,,,,,,,,,6154.605178905066,1671636548,bafkreid5tndfzug3oqc7v3wc3hewjngwbd7jsodnpa4j7jzbmgyntwq74e -0xA15aAD03A4F9c46161783398FE6d93BA18FDa366,,,,,,,,,,,,,,,,60000000000,,,,,,,,,,,,,,,,,,,,,,,,,13848,1671636830,bafkreiaspvwkqpw4qi6t6oxtcq2qznpscavbhyqqu2ywpe2zscjp4r5e3u -0xF81C87fB76F3Acf458eBd29df60c92F4b7Ce8Db3,,,,21500,,,,,,,,,21500,,,,,,,,,,,,,,,,,,,,,,,,,,,,43002.403202150956,1671636900,bafkreieplquya2p5atdj2rcvy6xlae5oahbpzmd24sfxh5blc5a3ezz2dy -0xBCDDce8B0e2C231C920977854BE736810f1Da097,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,27763.96431931539,1671637006,bafkreig5utoimemtesf4lgqndhbvnydws5tfdcq2de6dcbq4c2r6kmhr24 -0x206d2C788C2D8B0c4d32B36A9DfbD9c6d749C560,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,19338.08685874393,1671638314,bafkreidpanyo65tuymrqu7w67vrxbqydjnn6oymsqp3x2j7fuocc3w53vy -0x768a49D40b674a9EF54f5D1cF3d1054A749e905a,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2050,1671638785,bafkreiejk5wi4u7h7bxkdwwnjyocx5hkq3vpgh2v5ykzjkolxjimte3e5m -0x14210914D6A65Fa2C7747579A7aa287B027fD092,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4150.017325486132,1671639686,bafkreic2lgzjbtn6wittjblipj4dfipgsqv6hzzzter5iyi3g5nrsw5yke -0xAb50Fa55F304bE5089f8C82c1954Fa564cF37785,,,,1,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,32641.012759927053,1671639989,bafkreiar3yfkherkkbzpt4im5vnno7mf5nbnvirjdjea3sevo7p4bc6i4q -0x56511585A5A23dEa48fcC0Aa0a9A13800dEC0531,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22463.68912823165,1671640134,bafkreidjhe26vwedvfexbnlskwfcuppx375kzhrokkx52tet5d5nwpouci -0xa5A0b7c3dD5dddBFbD51e56b9170bb6D1253788b,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,10902.916723846154,1671641071,bafkreic6jxh6ssmh3w47zahf4qgntbwp73xlirzgerzfmadudpez22czm4 -0x69eb73fCa2ea111C5E1bc8983Af5F415841dF362,,,,299,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21.61752308,1671641507,bafkreih4rwqsu2matbmbncfmn5ecoucouj5nsrlxvn6lm6mlfn6op2wznq -0xc374B767f4A3073B3b21f31B06498ca7268439b3,,,,,,,,,,,,,,,,12000,,,,,,,,,,,,,,,,,,,,,,,,,12414.075084343052,1671641793,QmZqneDbRDKFQdoQCicXGuc8vNnpBYQvLkJtX4tH8oi5jN -0xA10605CB80c8110EfA6062eAd80C50b4B4230B13,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,2281.909822749817,1671641977,bafkreicjxtztwuqjsceudyakqo5oaqlc3vlvo2lgzu5d5vqt3vdj2la52a -0x02113E8D06A7aB70bEd0cA583Ec441FCF4Cd37f1,,,,,2500,,,,,,,,2500,,,10000,,,,,,,1600,,,,,,,,,,,,,,,,,,15267.339704766784,1671642636,bafkreiaifz6h2kmuioypuxcxf4crtmylkku3t42leht2xaw6a3qoqf4kja -0xeb83E695adCac2e83f290d2d2815FC58e6491d7A,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4100503852195507,1671642732,bafkreifbarrgwjwl3x4eod2dnmg4a6cgmzsmwvurlw5wrvhztz5l7dkcjy -0xe5DfEdCaAdF4Df48F2FCC56663b89eD0Ad73Da3E,,,,,,,,,,,,,25000,,,,,,,,,,,,,,,,,,,,,,,,,,,,23297.028750235473,1671642973,bafkreiepixc5zi6tli5qejf5j7zew35vpk3diufkjfek4pkelhbkhi6qje -0xef0cFa1DF7acC83aF898e701839Ca7Eb72896eB1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,51986.758035683146,1671643612,bafkreib5wevggzdjhvyctfd6hecngn66jkxzlqocokuatoesfpwkv6fpjy -0xB2DB9f595336Fe490FdBfee03cA3739187343261,,,,,,,,,,,,,10000,,,,,,,,,,,,,,,,,,,,,,,,,,,,13954.758124591523,1671643796,bafkreiedxkx2q7n55rckpra5ueq3mq6s46logulebnao26by67cwjm3byi -0x804a0f3d69365ab0f79aFc079e7Ee3263bC7AD92,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,86628,1671643820,bafkreial4gidln2ptcgkra7myyc4fobnp56qpiq74kyvsltqrlsfgsyade -0xf035Af8a3dFf1f90aeb21F9623589AE1330E9e09,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,2647.846301680576,1671644678,bafkreia7htwcyg7i7ibqu3ml3ebexlhcxqv6kzlrhv3vrpu6yk5da6rfze -0x69bAb6810fa99475854bca0A3DD72aE6a0728ECE,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,866.0981003104682,1671644733,bafkreia3fyd2pkqttcuukbifn56yofcw5i7grljjijtx7w7tnsvbkfptvq -0xDE38de354308Fb26c4814C230000bF9cFfa1e404,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25431.539835969328,1671644964,bafkreicvgm6ximnuqsdkzf2cy6vpznjr4qzxmcjyeolwax4yhfg4pcrjlu -0x4F188CbFA8dB689A6f696CEC3054F42022b800c5,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,350000,1671644985,bafkreib53veqlgg6a7rxhb4sv77uecw32o34pxqwesegp5wx6byigjp6oq -0x3C05E68b43D248042368dDDaea42D0F796D3D183,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11505.676072435926,1671645121,bafkreifd7qkedukax22xwicrehwdwly6xhed5gu7l3uv6jg6luq6al2fe4 -0x385826303C4348C39F521653c45C64C60F1eDed3,,,,18000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17747.00171049077,1671645515,bafkreia23aftuyw2tu3ixhyyztlkxbgsqvhtvwijjy5zrdabiui4jifwp4 -0xce68b1394ED29ECAA6974536244d1D2Aad4a2745,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,0.1,1671645531,bafkreibypazqyut4llar2fcttq5msrgykuwaqyltnasfsggpjpn2jtqpyu -0x4f830947dD75615ff1Ce58687173c3E142568c34,,,,2000,,,,,,,,,9000,,,,,,,,,,,,,,,,,,,,,,,,,,,,13209.185409170654,1671646024,bafkreiaualsou6vkoryhc3foo4kabdqdutyj2usftcc5ehk6qdn3jphqyq -0xf2e03bB3Bae583D72D750b3EF443372F92CF2C24,,,,7873.36,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7873.368720404538,1671646155,bafkreidlyl5zwasvslddffctxfbldiqy3t6mkcbyabcnujd4mkuid4ymle -0x37b3a715a9507c85C1845168ff1801799DacF808,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042,1671646665,bafkreihoylg24dedftzejrnypelovsskkmmab3dakb2zudlflehlszp5lq -0x9814fc9368BA5242d558642E0daC716a75757b99,,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671647130,bafkreiaom5isxog33wptuevo4ffy5migifqm3byjnrufxc22c3f3rw4v5u -0xC864B0Ab18B0ED0BeAb72F915Bacb12971FDb73a,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.4437653448455454,1671647438,bafkreiatopohxjauwbmpgfuy7k2xg3qtucx2ov6dvkrgzayvr4zedbuboi -0x54DfEb0F86A367846e42a29Ae6888eE432e87E98,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7000.767644121386,1671647489,bafkreicrggmmept7jq34tcvzcs45prt3hupk3jkw3ngsu6itps26udvxfe -0x9f0a20B351366872600bF5D20d6870af60e2bCBb,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8552.364724743698,1671647504,bafkreih72l7vo2e5ckxo7qnrdvxcv7ikc76vzjj4jh6zfad4hz7on6b3eq -0x750AcAeB9c1d61596694Ea7bfE8458A74147FA45,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,16688.729793849558,1671647678,bafkreign5aqztqpf6a327wo72q5qsczulbtg25iarh4qv5j3rrqdmnvxja -0xe46347662BDa8301bdC0fb4a2987a466ae30Dfbb,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.1897473720075,1671647682,bafkreidkj5xumnkt6otbithwmqxv6sxt2pguzdw5jlkwtgca4cucwy6qu4 -0x0a2a335B7420db3BaDa6a13E354D465a3d6dE2a4,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,109846.9201366272,1671648295,bafkreibtupz55edamjqswiqxq44exdvskg2fxdkywymt3pvftdwwrqyrte -0x1b523DC90A79cF5ee5d095825e586e33780f7188,,,,,,,,,,,,,,,,,,,,,,,228000,,,,,,,,,,,,,,,,,,228649,1671648758,bafkreifwgjm2xr6el6mmzgohzalfb3p3igvyq6lub5myw2p6wevynlmhue -0x6543609d1bc81bF750d597B7E62Ca3AEec4D3FE0,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,856,1671648915,bafkreidkpyd5ftpflo2dtt3l7qh65eoozii5yo7vxxawyqmowa7bkwci4y -0xFeeD2eab7fc2c43D06f55eCD5ef5DB5f2fE77935,,,,47,,,,,,,1,,47,,,,,,,1,,,,,,,,,,,,,,,1,,,,,,15349.364532654472,1671649252,bafkreihwsjwdez5quzcs45bq2pfvmvn5vtugjxzg5542u6dv224t2yzlfy -0x35AC6DB68555D365DCa0b051a058EABAc01851f6,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671649643,bafkreiepcp5n32jb4qsrju3jboo576jmjiygvyn4cocnla3vbhiw4lojxi -0x98E711f31E49C2e50C1A290b6F2b1e493E43EA76,,,,,,,,,,,,,35,,,65,,,,,,,,,,,,,,,,,,,,,,,,,817470,1671649700,bafkreidum2325gue7hnuybcwobzuiung7g2fkftulkrbb5marwyayjonci -0x3bBFEDF29b0168128cb078b6F45c8E0A1bA10749,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16220,1671649783,bafkreif2bhwadw6cpm5u72dr2c2dacyaosrpfgfls67tahwnzbi77cecli -0x37DDC28FEAE0Ac090661c4E7e24989ff4E9AEA43,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15890,1671649866,bafkreibmb4xu5sygldhgeqm6jzarhyyo7qhsmuvibd2lsrzctbrchsqnki -0x9E03523205Cbe1AAb4bCC0e5B01ba734F17c1CB5,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10836.440621163027,1671650177,bafkreiaq7qujlxynbrcvdmv46ijoozirfev2byercwgwx7ei44f4figk5i -0x0573B2F29aB41d9BdfE769b634EE8cB6cfef92d6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671650225,bafkreiao7mfv5a6rte6ugmwcdq6pzysz5dy3q33tnkzwjgctlzqcro3rqy -0x5672b5d5f063239A0e124862f264cC9Fd1f513a8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,140.2527281,1671650528,bafkreihz7eai56w2lpingiktlxuekaaygyfnawv2vploegiudylbmcjqye -0x6FdC859bFaD3bc680647C8C58530faA039e1fc03,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,55291.06377429299,1671650788,bafkreic3rvdpewmrlcdjuxcyc5ukc57tbq7kggcsycpu74qyzim6qtvlzy -0x9A9E41788824424Af0dc689778c73ff954Ff659d,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,99294.22756354744,1671650849,bafkreibau7qzfy5iblxg3rfb22sbrnk2mnkym4jdjvasdmowsvsfertmr4 -0xE9E0aF4Ed6B6D1aFBfE6CE68cA185d00Fbf55d73,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,103369.20372204084,1671650904,bafkreieoqqiqnqs6ivhelfmfjzr5oxkywtedeunvwvjcvz3gideileuexe -0xdE9B4206B1499e56E4417f8EdB7bE4586FeD30Ba,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,13059.149069305182,1671651035,bafkreihfxfcdgyaymmuagprgs47ntyqu4e5xfcubovraj7ty33hc4ee6aa -0xb3c7BB26ad2Ed197900B72afC9Cd0f7bC2255Bd8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,13000,1671651137,bafkreibqkiimjvzukw3rp53pgvbuwjguj3li75wutgki7nh5s3voclp4oi -0xf532920bb32122D6475aD4Cc7634dC3a69631902,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10950,1671651267,bafkreid66wpfxq5xopntmpjp7uicflom772mrh2k22ojmeklno7j2tcjxy -0x419411643Abc7812221e51A5474e3DD44e083ec3,,,,,,,,,,,48,,,,,,,,,,,,52,,,,,,,,,,,,,,,,,,14356.360236750079,1671651276,bafkreihsyal3sfucka6d6snudj5qz73q64m44hz6aaq323hlpwnrlr77hq -0xeDA4a17d77A9612dAf471309b454E4086D107981,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5449.9302394,1671652184,bafkreien4vj3a7ism7eryxzynlpqockdiuwrjp4kadvxcofm6zazziayfy -0x65fB8f1B19a04B7b189D29ef66E242649B4faF8c,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2000,1671652275,bafkreievptfxtjsuc54iyozc3z2mg6h6loomulzvxoklsrd3pofmfiv2ja -0xf1f1CEb38591944912622aAd84f06C59c0c1428e,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1007,,,,,,98584.5676,1671653005,bafkreiafx6tuxzag6rqnzmrby6w4fibqf4gvld5exvbj7ntzvjmfd2rosa -0x5d8AC519a5a4866784425ccF92F02Df93b1C1F52,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671653489,bafkreibbahj7ayvkqjiiht62di3ck7ltpsx74i56q2ovnrd6bza2byd2fu -0x4A377Ff5146D288523F989771c9E05FA18ceF21e,,,,1,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,515.7149141386503,1671653550,bafkreihpabcul3dtgbbylmbyzqefabahmaa65atz3vc3nmh3ypmpwkm4oi -0x4de0309ed63968A1c249B8ED1a3CB5731676e908,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,6282.228666599737,1671654081,bafkreigjbcxo37yxjp2tx3ypbbtsncyid5s7lmzyvq27ac67rvg74p3vny -0xb8a706bb3eA1AF5002b7a7370d06EC12a54721E5,,,,,,,,,,,,,1,,,,,,,1,,,,1,,1,,,,,,,,,1,,,,,,16490.07217058319,1671654104,bafkreiahpbkxm3wtm4hibg75xqnovll6ee773hvrwmvg4tuurga4m2jthq -0x9222cF504c11DCDC8642192917274b7A9884ea67,,,,,,,,,,,,,32000000,,,,,,,,,,100,,,,,,,,,,,,,,,,,,2964.446538678142,1671654237,bafkreiahmglthjoyplitwgowubodhn5c5safx5emucc3hguy2rit5rwbeu -0x900B4a841fb7948680b0a149B41bF8Bd03702074,,,,6900,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6789.230418983806,1671654372,bafkreie2kgusr2vowkgfffqa3pvotc53hpj7u47d5srootig542b3ds724 -0x1aD7C3d3AC2118335D5437e46BBdCcf69D1f1a4f,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84977.45018727353,1671654372,bafkreihbtqrx457ltogzi5qjmi6ygwijko66ew23esw7v2nh7y2lnaxz4e -0x6AF50342Efdeb600CA1D33a24B0f1166c2A2080A,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,2042,1671654629,bafkreibiizkzdzhin6vsfbl4jul3mrjvzzdqfcifc5z627rfrlflg6fpbm -0xFEFc2850B25FE1AA3e9Aa154DF61C6B9bC7AA374,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,27309.105629333568,1671654662,bafkreiaq3d5yzsw4hchyp733b4vyec5jvjbmxywymg5i3pxbe7zbupbuiy -0x7DE6C147e1926D1cAfBc2d625Fb395e3e1D0C7b5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,13012,1671654954,bafkreihtrbn6ghykaiq3zw2lvi6kzclsofbxsssj73mah4lkopbgaeiteu -0x18a244147F9e7fbaef8F871251C94bfF190556Ed,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45470.24398548903,1671655076,bafkreihnqipccqfkc3rd5bhmham5v4xwyhfs72cnhn2hrxs5rltg6fiyhu -0x6B92686c40747C85809a6772D0eda8e22a77C60c,,,,14,,,,,,,,,4,,,3,,,,,,,,,,,,,,,,,,,,,,,,,1.8224395452187836,1671655116,bafkreigjnskn2qfyusemwefajbrvzzy2zybjavxydiyotp7unwg4skz5eq -0xc93f75b306d164c31112eC659D4C1714d39d69fD,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1000,1671655152,bafkreidawksjhbqgb6y7gi6d72nckfgsdgfndpidtblcqmxp3jczyahuei -0xC9D8c1452f4c7B5f45F4f9F1dD44657682fCee59,,,,2100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042.534648190922,1671655341,bafkreicbodpg43oe4boautjzb7z2lf5cuo57brkqrc7h4o6mirxoaqtiay -0xCD043AE14572cd83F26CEb8442e58C35251eB7f4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1003,,,,,,898.4436984240933,1671655353,bafkreigwsolkkejtumgcz737er45xij756526guv6alpeon2zi5lddqnai -0xdC5A3eD3CE12a78c9b4C8CbC370501ff06F5D90d,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,12142.235455293927,1671655391,bafkreif7zeao6b3nraqegsoeqolslrx3xveo335m4yqltedzvborqvp4fa -0xdA83e3AA008994d8ea172fF85Cf4813763158057,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671655516,bafkreignichc4whhgazexvxxc46ruurreng5lu5zscp2365i33cw6lcygm -0xCecdA5fB8cc7F905Cc1ef70c8865E78069cdfb40,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671655555,bafkreibwma4ar5qljjmwaqtrexoc6tppqml54s4icufv5zfnjwjsrx2o2y -0x134E3bef77905e884F0067bC5d0D48F6D30F2752,,1,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1100.5144866263324,1671655988,bafkreicn3knrwsewoklhenpb5v2zlxif4jc3lc4fpzkycqaedoguxvyna4 -0xEC095048b48AD1Fce13e684C4116d2ecf60db315,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,5858.467567551301,1671656042,bafkreiffywr3nqx7oev3xn3x7pd4h37anrfiephw5kfl2cqgpyhs2sarhu -0xe2A3800884e7C1058FEa4bCBE4e3A63527b2CCb7,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,2920.0267247167076,1671656416,bafkreiadsjv2gwmer6vwzdw4wff3erj7xf4po65e5uecohisquncgoepyq -0x79989C6dFf3A97B097e7DBb6e38F00b21fDB8c7C,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,2929.4825643397053,1671656448,bafkreibicnwx3gbessagtcqh5z7gmprafbzjjrew3t5bf7krvfl6dztx3y -0x7eE5eA1f769703B755A2F7A7C76E9C00fd2aB8C7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,11950.50805695091,1671656534,bafkreifsqbyackwojrjbp7lg6l5h7z4mcobpivoyjc3ynwoquaxzczjp4u -0xB9b2c99200d2FCbfaa901ca61346053D200C8446,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10950.0000000407,1671656627,bafkreidbxriih3jcductyfc47flbp2q5lnroulake36gbczopqrzsztr7a -0x36A3294bE4376Df174364f8Ab61322bdD7390B12,,,,6000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5909.207408914739,1671656674,bafkreiambepjozpmdzmbyizazsy6koh2f4xclicpub563n52sraqwhvooy -0x2749b37ABeefA5023c2b046379988F0B6F6fE793,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2898.0000004795097,1671656680,bafkreihoqxjgttjbmok5nxtmkakhq5i4kdwtfbetdhchdzp6xabaqazu3e -0xdEAE56E368F56A1F2E32aF5481E13B4f5aE3fa4E,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6500.00000310253,1671656701,bafkreiavao77oftyyw7cdvfnocvaeglzghraqjjf5mq7aswpqhjufgwfc4 -0x6CF0a988dC3ca51236c1BC2a67ffB9F88d927Ee2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,11062.247709522946,1671656780,bafkreiegvshyso7n3yak2wv22foa32dc7mzwtdap6nu4mr2ztpw2c6ihoy -0x20B37032eA53Ba81E78BE3eCFF8Dd2fE33646847,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671656928,bafkreiepoadlf3zwmncrgiavlxy7bohepjvfw44kbsj5v6ujkzc56oe7j4 -0xd3416F461518E418e358b33C41Ff9e1287CD7041,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671656967,bafkreih3jwuamlxzlcvcujbnvy6cwj2qjewu2wvxukekbov34hukr42fiq -0xc5e4b43E291C8D44971dD3842EEC1F8CAac77561,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10950,1671657362,bafkreia7wypj7kj3ui6un5i5ll3qw4h4vewqct7tg2l7vab5g6igfw5diq -0x6F32bc68A5A05F8f72F08D2c2Fe088d5c0A8cf55,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,8811.89388045881,1671657396,bafkreidifyvt3pmpzsn5ib25qfrilgtkm7j4exwvokeywzyblztzpjkxkq -0x9244BF7bFD9ED40c6bc31d28f392996eb671aC3d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657415,bafkreicg74b2vogjxa3uibyc6peube6kwe44uzpdbtp7zurjjncfey32pi -0x8Ea5bE2b52CE359BB95CD19d4718B674aA923c88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2902.29,1671657441,bafkreicztmc4yiwaiat34a7ynfurrqsfickrjmuexlzqcplkshcnk5blqy -0x624E5a45c813A1cc8907f1A0257EAE6E29b3d1BD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657452,bafkreigcj4zqyyajy55ru6ds33soagsimgzad4l3ml7kaeu74vaznwyyc4 -0xc9700f3dd73fD677ebDD49A9e3d2140513B6f732,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657491,bafkreicflvmqavvcojhsxtbrmgve25d7pq2zxntl2qnty5j7azznt5ofj4 -0x6Fda541E1474612fa0529F6a18A7Ce222F441D10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657527,bafkreifprys5mfenw4apcabjdpvljfj7xej4kbwkd26caznti46r7sftcy -0x7730378648cb4dE782bEe0cAbb43140248c9AF97,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,20200.85762256548,1671657545,bafkreid2ggwht2bf7m2mz4cv2sgu6ajwwokrn2fcbtarlom4oihdd34hgy -0x31086e56834D4F2A24044a2cEF6CeB71D6126Fe5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657579,bafkreier6426z452g47e2pua4j7ifihw2iixe4g3ds4jwnpl6fdr4gq6my -0xf821B10a64aB148d8173C69FA9531BaeE36Ab995,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657610,bafkreiadci54kybgttzn3jnd32fmcx4diig7v4kppdy7v23hzcg2hpaf54 -0x1578769b8cC98a562D3625A0634D95535BF587Ac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657649,bafkreifgyhwzxj3afnvbypedatlskmksdnpd6hidli6ckft3dtdwjhnsku -0x945191ab90d5B511F80c297681e5dE54E55c50B8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671658048,bafkreigdf62uvdbp55wqijxkqaijvhyv5btkxrcb2v6tvvpfdppvm5elae -0x62e18F2672AC1437b370CF36b27a69A17aC8EfF4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,5796,1671658085,bafkreifqqgj5b5qfidkx7wizz7bnllhagspxtga6lajbhninwwsxiscs34 -0x889f33501aF3a14629f5be4Ee409575Bc35c5cE5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1776.459651319753,1671658145,bafkreiba43lmovwzz23ee54vkdzbehqqezfqois5rioxcaagjhirsf6kim -0xb2F4A2a0e400547b2b9F6C3c058Befb3F5E1279c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2898,1671658177,bafkreifcmnhuv7bsy3ostq7q5jc6ur4go2gv3htnx6wi3attkdia2fh52y -0xb4FF15b64DD359AC7176C5adc32f1C84D52Ce7Fd,,,,2000,,,,,,,1000,,1394,,,,,,,,,,,,,,,,,,,,,,,,,,,,4412.126969585802,1671658789,bafkreieaxpr37v73a7a42gka6wlb7uwffnxuoa2d52mev5sdekl5ouoa3a -0x9BD91abdf39A167712B9F6c24d1c9805d5FB9242,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,33231.60142394498,1671658869,bafkreidvr3enytsgbo3dqzdci4fqmyaynsl6ng5dkptaxlacgq35a726im -0xFdFfCa1246924dE90f54f867db89476D011e5cE5,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,41175.27455460679,1671658939,bafkreih45htgkeldsdefwrvfzhnnrrvivwcutotz7th4k3omexejzvdlay -0xdbf049b470e7cdb1BFc19D9Ca15B1C8C1128aa20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2091.3640515461043,1671658985,bafkreidjnywwdhpinhnw4lzksirpzzyhskcrd76beppprwmlhfpei2e2py -0x68E58f6cC75178840B352d011D6E7B333c1de495,,,,,,,,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1.103630279089659,1671659125,bafkreih2vyrkiymq744oeeuihwxawbq4ncxthkfetwic3sqfsqukbp7yuu -0xD35ADd00d45e8a3e0B7C1b67496662e4CADBb0f5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1851.8165056139796,1671659295,bafkreiftd2dyosy3klfhdqrkw5b5yqouajl4leetrio35ebodcg3nr4mxy -0x051D7129a5579503Ec9554290Ee7b765814aB1D1,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,2042,1671659444,bafkreibbnt3l35gp2kqrs7hmo336wyxq574eyhw5b3bwm4kamrbqtbhxfi -0xedE4a32DdB7353d883399BeF2Bd9Be650CD81bf6,,,,,,,,,,,14693,,14693,,,,,,,,,,,,,,,,,,,,,,,,,,,,28122.003323506586,1671659529,bafkreigekm7wcyv54libv4ulafe4ugfgugripivxbdlefzx63ives6tm6m -0x716415d5AE556D4888356C83e7a46A77eBB72F04,,,,4,,,,,,,2,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,24125.813001727915,1671659605,bafkreigqah7das2efaavi6ezannelxibbnft7c2bom4rgblipgum4rj76m -0xB5DA9A455F931EadA43DE8e30F52dA0d668a1099,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2212.159365720051,1671659716,bafkreidu5kz7l2mvqwpgyu6vnny7i6fxofuzfrmnxu7nunfyhisf5e4q5i -0x23bdEb4396BEB7e179c65A3FcA025EA2ABC156D5,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2224.0100869710814,1671660028,bafkreihhtmbp3ym4z5ezjf33acffnoieyts7lhr4ybox72oecmy4zs5gli -0x7E05083D9D56b306909db26D93c041D7B3b93691,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10119.532995683261,1671660113,bafkreickfxzo7225kgqcjivcedco4i6tuvkt7n2v65ejg5q6k5zp3n6nga -0x9bc40dC6D5753dE0a0EAF02C2B891ae5C95EBbB2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,3400,1671660314,bafkreif4farzu3abr64y3iyflfpllhfnozu6ny45p2lj4cxtj45k6eu63a -0xC6021b536a50F8C3B5Ed7e13A31A8bCf232c1688,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,47310.64232747218,1671660469,bafkreigyb5xpofggaulxycbnoemb7egs6zecsibsy6qsxfnbabrwna5wai -0x7Dcb39fe010A205f16ee3249F04b24d74C4f44F1,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,53295.30601819849,1671660509,bafkreieuwgcprbuo4zenduoznrgokpvorhotbmcky6bf5ivuk4flp5prgy -0xa05DbE7fa2e331B34BB77e7991b902dD2cF9F853,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25016.58521475706,1671660686,bafkreiajkhciap6ruo4gnylmlt37xigmisbn3gvw3vmdhqadve3awccjnm -0xCD02c8b722c8E286fbb353Fd7Bf814Bd38490C27,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,14249.064676033824,1671661583,bafkreigihwsbqkylmtlbbbc5u76drjb7jfky5wq6ub2rpyg6xkzjfqibvm -0xbA9F68fBF20a0316D80287d7ABC9B1377D622121,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,25225.6296274007,1671661709,bafkreibbcya3qzhv7by54ezp66ma7ycvnulnlighkc7jxq66fh37aubqju -0x1F21bC40b2E1f1A210E10b103bB57bfE8d71EEb5,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,81.0085799024186,1671661721,bafkreiccsxxbas2o46kuan24ahaotq7o2drc4u5uex7nrsw7kkptc2sjmu -0xf7225294B6C87790880926821378F39c60C8baFF,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6802.204701131592,1671661885,bafkreib2ayddk52roeyjcu2sgytkbabj4yoxxck6262dijl4u2pszukptm -0xDCA60A4fEeA2337D97380B0aD0eC4ADBEA707855,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,9558.203593726208,1671661920,bafkreiexm76etth6gzmyvs3sl376rypyrbmyunr5iee466i5lxj5ss7utq -0xC4d09e6182ca48cD7F248fed88c5f3a70e2af58a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1468.0817866285727,1671662344,bafkreidpdpe7sgyt2icg44c3nh3dxk5nc67etpvusmfqxpnkvaslvn7rsi -0x3983b6995AdCC40FD3faaE1fbdbc201c359366f0,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2075.9306179774576,1671662874,bafkreieqcndqzqrfawsukg3cicxo35wdkaolnvz775icgicfmpmybo4o7u -0xb3FD5137AA504Ce9c2636521A74B41daba416837,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,60098.92154042236,1671662909,bafkreict634gltarmef7waecioiacjxyqv4axzyqlvmoob763wzfwp26ny -0x122b19a4Be93d7c2b4522ebF7EB3F1b5B0343b2f,,,,,,,,,,,,,,,,3,,,,,,,1,,,,,,,,,,,,,,,,,,260617.96560277,1671662946,bafkreif662xi5ae63kulfifzb4e5ms4txmkdhbkksiqnpesinaaicqphjq -0xD75CdB32aD74116C300db2C10bFB164648DCdf2E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671663058,bafkreia3bjmzyms6bo75tbqgpewpwdycobrffjnvycl4oookqcg5g7nfau -0x47FD47D2B24389c696371284cF8aE38e19F438a0,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,240.62166577091983,1671664047,bafkreif7ny7qdk6g2ucpqc7mrw5q2iaxgrlxe2cjc3fyt2b3nibc2alb2a -0xC2746970b1a4e35106D78A9df7b52732Eb9F42f0,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,1,,1,,,,,,986.1247436795923,1671664069,bafkreidbcl7syszlku4x6jwwbdk5z3jakrzt6ywcwudeyuprjvtbeo2nki -0xDCBA0c55A89cf4705C284cF72a791587f37B78f6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,173039.15399182626,1671664331,bafkreigucwq3i3voykzmvuouo2ojztxilnydw5e4nvuv45fy3iklqczqcu -0x9571990feFaD6184f99247f6AB85E4c1eec8834B,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2044.551435719557,1671664580,bafkreibru3nab27zcrye46uo2ayxeg6nnkcvqhe6ffujcgckb4t26drcza -0xD4bd599016DED05e65594c6E6306308e5de00100,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2552.4107759739068,1671664986,bafkreifo3jhnorrbiy75jg6rchn2jpyfifmyhpbhwsgplytfcxmh2tizsy -0x0F25809d8E83AbC5Ff0f4Ceb8A8C39c79746d0B6,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,1414.446908227287,1671665690,bafkreibfqrjengb5fcdqe6adajvsryxgsjywikis3smvi52vurxmt2pjrm -0x06870BeB1Fd22C3a00c40DA9B659cEB2c1EA4cA4,,,,5,,,,,,,,,36.5,,,48.5,,,,,,,10,,,,,,,,,,,,,,,,,,179357.61491671368,1671665784,bafkreiht5dirdi77mwvayyxbla7yx5e6v7yxvxa4mocrczb5say3xphha4 -0xF235cd60Bd5195239B8F5eD11C1442745B1be2bc,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,756.4858539866252,1671665789,bafkreihqzpafgyoqpzuhmhv2wnod6iluap7mvf4qsnq6j7figpmq4553ci -0x2c74fd427E36a5c22f164093147EAcE027ec5706,,,,3,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,131632,1671665801,bafkreidjez3gs5tzeqmz6hnc5a6h3hgjwgovsz7sppp5jt73pwnbkizz6a -0xfb05238fa4B01f9B703685b620d6Aaa9c306c7CA,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3527.5866795496822,1671666048,bafkreibmspwfjdaygk2ovsmkfng3zssypijpp4odhcvipxo42qyblvisfu -0x5eb8FD22fcA64B72f36A0C69b7C15Fa10C7a1214,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,32335.34618280732,1671666066,bafkreicrq2yp26vvztdscu3yuwrag7pnmo5slzeleb2sjtmag47khzgwoi -0xb898e10C074e1dB46F0C8e89A2B79A95EA256f5b,,,,,,,,,,,,,,,,,,,,,,,12000,,,,,,,,,,,,,,,,,,11375.577232800388,1671666140,bafkreidey4kkejzfwwjf5kuxblazkhyp5o7fkpwbsiw4nrjchdmmtvfb2u -0xbF0D0A4F0a1b4457C08389300bD900a8d8085e9e,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8736.519495941582,1671666231,bafkreif7nbfwhcp2i7dccfhsntyhzlwncful5rpuborqewvnufapsaiqym -0x912465725ec780B378f21644F1F90C8D4b06d47E,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,10.3425632033978,1671666433,bafkreibwv6evdmrufk2ii4ch5q5ictaazifmcowg4lwi4y45usu56imoai -0x5a488B762cA0EA05321405b192fAB0B66a93ca28,,,,83000,,,,,,,83000,,83000,,,83000,,,,,,,,,,,,,,,,,,,83000,,,,,,415475.34627449024,1671666599,bafkreiayh35x673yskkrb2gdcjganqdiaoihjrbyzv2okcm7snjdtun7py -0xFb3ef998D84b7e46cfed2Edb4144bd7538eAB858,,,,,,,,,,,,,1600,,,,,,,,,,,,,,,,,,,,,,41,,,,,,2070.9890390709616,1671666774,bafkreig4vnhazemaj5vzln3otrkqxhk3ifm4bdlplqeejlgqw4awyebedy -0xbE6a5992D259990ddF43DBd681568Db292BA47D7,,,,,,,,,,,,,7000,,,7000,,,,,,,7000,,,,,,,,,,,,,,,,,,17599.76052206266,1671667292,bafkreidpui35wnvg3zqrpkojho4apx2v7vyne6fplxcrhjvg4ahyfbqoem -0x631EC40dbAE6ee11590549b5e270628840093A08,,,,,,,,,,,1,,1,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,13094.867416945654,1671667750,bafkreigqqsogf3b7rb7wknukxou6igpgttssfhmopdrn3xmp5mslozrkby -0xa2F0448f346cE50B9029506c88Dfa58d07bAF880,,,,,,,,,,,,,,,,,,,,35,,,,35,,35,,,,,,,,,,,,,,,110.42470009026759,1671668328,bafkreied2mnxofjwzrxlj5gdbzzkcsq2wjbo2udpirnxtogrri223pzuvu -0x656Db6380A7A566fFE8994a20a4C97C00a271Bf9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11375.0062630805,1671668356,bafkreih4dmjlsfyh3kgz7idpv7blicqorsecvwpaiahumomynboz5hbyae -0x21587b4030e875E9D9B70f38E314e8E2a8b29B9A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,25200,1671668520,bafkreies36nscta3djtfdeyuwzype4y3rsl7amwtrsolwcdv7wc5ifytha -0xCb2fdB77C60bB4AaD4ED71804Fc403f1e650e204,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.3,1671669520,bafkreibn2gpzjsypkz5vs2bv2mruav3nqno4dcfijtrwzkphdny4n2nnr4 -0x71be99c9b5362aD07f7f231bC7a547f4119C6073,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,31805.253011548793,1671669824,bafkreif2y4m2x4fxx2tsiu4zdwo47f6ktjhqo2u5fvzjrgul46hfzwe6gy -0x584935F602F669AA9296F5ef287b6461E3999E39,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11111,,,,,,15034,1671670235,bafkreiekfqznecnxltp47ru4czorm2fabbxdbtfvjzj2axzfi6waqzzpb4 -0x0FF0c7f91C0a15DbB79c6934970d70Ca7fd956bA,,7,,10,7,,,,,,,,6,,,,,,,4,,,,4,5,10,,,,,,,,5,7,,,,,,25984,1671670339,bafkreiezq3b24pqbhu6se236nfp5gi7hqcfmhxbng7lfwhyernnbos73xq -0x713f90407fc49f0BC59A6661C23FB67692a80E6d,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,20320.499023843837,1671671770,bafkreicb3yy6qtcmb4xoi57akld4mupcbvl7jfbcbrwiffz7uiezpcvpwy -0xf9eD4dE3793Bc577C8EB1A269387d28cf11DEf2d,,,,1,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,3895.469397543145,1671672525,bafkreifdpd7cak2wznyad224g6dq2bm6mos5ymed6fmikxjbo25y6ep6ga -0xC92A13FA4C59f5349B4d45E8667547D8419F0906,,,,7,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,81991.582158161,1671672946,bafkreidi5475i6qtidej6kvyjsw4i6bftzxgjnjyfm3ogjvshna6e2xify -0x4B1e684d5143eb7435E5D78385FA8cbdCcD8f7EC,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,93975.20901704718,1671673207,bafkreiajwlidckph7snkhw72wo44o7mvvzuano73lmccmpnri7cpi2y7ea -0xfaE48b5E9b1f38BB8D41B3A43B632e72Fbb16d27,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,876,1671673279,bafkreia5uk6rps22qkkn2zgndsgxmz6rex7yjezoiqy7zbkocedl6dge6u -0xb01E95F517511E0616263CFC1ce6DA11211FBc5f,,,,1,,,,,,,1,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,10086,1671673353,bafkreidfkq7sadmshfmjujjhh7ot4plnpfhqcncrzavefuejz3gjvod3x4 -0x50c8C602Dce643aFab7C1C7b18dD5fa6c1a207e5,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,29686.0035,1671673464,bafkreieufvgbpwutw7vdm7f7hg563c6cxcx2rhxm7veuxwdxolcceyrzmq -0xD946f4983DCe96A0057E34EBD27f807125504d15,,,,13143,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13143.100589331849,1671673480,bafkreifudd576nus3noxswpqi5sptyvc6ovv5jkf3wnzgz3qyq23iojt5y -0x7040e9Df2f2e6EB8DdEC539bE0DFd156902F6B7E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,10949.6271814,1671673492,bafkreia4wb36u4zpnfehzcx5no3sdyhkzzsjlpvbt2yplmzppleluezvzm -0x2404D6857d7E90c3eD9E74E0d372a4d6d7399504,,,,,,,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,,,,,,,40372.023661234765,1671673530,bafkreidscmefuc4eyplywpivqcenhfd5iiohczi2eory3ywdohrrsuzwry -0x96D2f13C453A7d210EA3CFc55f16C86cBC940cda,,,,,,,,,,,,,12354,,,,,,,,,,,,,,,,,,,,,,,,,,,,12019.633873740346,1671673650,bafkreifuzqpqb7gau6hkzldfbnewibe7o6rdvyp3etgmujtgppnxpimsn4 -0xaDC72950B98268Df2b19aA5aa7Ce04C077F70804,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094.721944617451,1671673856,bafkreibu6fysmaej4ddpm2jeyk2whwenyyahbqnx6utgr4c72zl6lzsdeq -0xa0444EB9b3c49b5F1C2044A996d06c8b8BB6D252,,,,1,,,,,,,,,6,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,11855.950604989528,1671673875,bafkreidvpx6ova7jdqigfczgi37mhz244zoljxyzd3my4ekn2it45we5pa -0x43b5FcFf3CB6fA36673cFA65a6f71C9AfD182E19,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,164843.58943203607,1671673899,bafkreih47rvz42rakruuh4ubpaaq6jja2wynzlzczt7wr7h3pdpfa5nqde -0x48FEf92b7e4E8dE8338C87B346A982bCafC81a54,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,20304,1671673905,bafkreigakqhfhmkr2sx32i7zkh7bgj75ereod4jj2pu7j6bkkkuyryykoi -0xfb147870225F9492B8E2B705f92856d43f8D1D70,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671674015,bafkreid4gxjxmqxtl254igkpdjnzykqfjbhfx5zwxf7pqah7x55w3cgima -0xA7B100ecd7DBf8445688297d889394D001563A87,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,2136.188814264471,1671674077,bafkreih6ngj5ozqiurumdogueeuvcniufgvpc75a7h3iuisvqfomw6tqoi -0x16a9E81cd347F4Ba87B14E64668a715A8f278Bb9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746.365920408094,1671674138,bafkreievs2oc2caufcrdfbn4chnyhy5w7qoveakoz2f7y77b364sx5jsh4 -0xa242cA5D7AdaFc84Db05B4944057f0e83Ba9cA2E,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3059.072133988645,1671674148,bafkreieoo23zcq6z4cektln2ln2nte447thq3iptc6c53jzgufli45ibda -0x40a5168566a8088753Ba94Dd45181d205074Bd81,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,50372,1671674329,bafkreifu7uodqtfb2z77fbi5yy7hnyfed2ltpmnllafysa33qavhh3ixeu -0x020cA66C30beC2c4Fe3861a94E4DB4A498A35872,,,,82,,,,,,,,,5,,,,,,,,,,13,,,,,,,,,,,,,,,,,,1171929.6774583901,1671674367,bafkreic4nxtddgoasutzli2prf2qqnr2pv4fsk2pilrpv4bssfnurjgbne -0x52699374E0447044A62778B35a49d373fDFeB0C3,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671674380,bafkreihjv26g3u6vye2iikbpqjn6mo2lna467ilpxft5x6thws2qjhagdi \ No newline at end of file +address,choice.1,choice.2,choice.3,choice.4,choice.5,choice.6,choice.7,choice.8,choice.9,choice.10,choice.11,choice.12,choice.13,choice.14,choice.15,choice.16,choice.17,choice.18,choice.19,choice.20,choice.21,choice.22,choice.23,choice.24,choice.25,choice.26,choice.27,choice.28,choice.29,choice.30,choice.31,choice.32,choice.33,choice.34,choice.35,choice.36,choice.37,choice.38,choice.39,choice.40,voting_power,timestamp,author_ipfs_hash,reason +0xF41C5D9B2aef36ADB47F520380108eF5D67A290e,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,2045.601142949226,1671156046,bafkreidjlyexyhtjp2gl5kmtdvvalzl6ij7clwwvfsp6sp2y4a6exj52lq,"" +0x5FB33d75A1cFcdC922e736c06e01c1505b4643Db,,,,,,,,,,,,,,,,,,,,,,32,,,,,,,,,,,,,,,,,,,550,1671156127,bafkreihkzws5igjgavsrzxj4tlqh7757gi3e36g5dkhxyohe2h7w7rpv6m,"" +0xe99284ca6742f3d539dA5E7407997744059BD620,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,0.54218,1671156130,bafkreiet6iafkawlwj6fjbjacwidiwmled5crrgpzb4t2l2fvjjcbh6uxe,"" +0xE896675803DA7Df23c9BbDA3646BBD82593B6668,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38481.23950989474,1671156255,bafkreiftjv75iiyhatazfir6vy3wqbeeas7clnodlthtedzsms7z3lgoqe,"" +0xEAB974fae1582AA8707586B836C7B6313C47992F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,16168.355365777225,1671156310,bafkreidk7eizyyqio45d6elnq4ze5lhtdrotydtwcsxgps3rjmkrs33mca,"" +0xE0f5AFBFa874cEF79E67deb4F9BDbf96F36c9083,,,,40000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,40224.34710385403,1671156328,bafkreifzs5aoz2ziuhd4rxbxkilgovka5vilu6j5gbfgihijgoeonkwhhu,"" +0x831283A628f377Ccf760d885968c6A0b8019c22a,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3988,1671156624,bafkreig72h2egoxutikt66mshajq5glnuad2i6gsdqfwnc2kxcqhmimx6u,"" +0xb7905247daA1E10CF2Ebc70A47DCFF5fDD498b40,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3323.6744889186693,1671156626,bafkreidox2axxhr7whwpxvu6qhl6q7evzenbdnhpxl3vydsiycvotv4fju,"" +0xC49e8918ce75751D2fd072C185A489c375A3510a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,12365.31449161642,1671156756,bafkreiausx2dch43v6kuu3ou2xjgf3zanpd2wg3pej6i4jv3unw3gsz7i4,"" +0x97932301B956B8487132975D331b0A9aB1844AfE,,,,,1,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,1,1,,,,,,13772.633469978586,1671156778,bafkreiabrjtfqgh2ks6tb22ru3yv7y2hoaljz6swncct4iokymuilkak6a,"" +0x636ba3Be5AB3a03FD164327C373d6eae15b0fc22,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,16065.77621448325,1671156830,bafkreiadu7s7sav46ullrvsgjzjbilt6bykeh3ekw5uovf2pdbbf5363ha,"" +0xaf1807F545828845a37Bf1db6F6b25B45f37f7ac,,,,,,,,,,,,,,,,,,,,,,,2111,,,,,,,,,,,,,,,,,,2042.2131838269547,1671156915,bafkreif5c7sfpiuhwtgc4ocrqa3f7dy5jkuwewn5diq25hbvl7i26a52qi,"" +0x89A1145FCCAC1a2a9350eC1A4A486E4458D26274,,1,,,1,1,1,,,,1,,1,,,1,1,1,,,,,1,,,,,,,,,1,,1,1,,,,,,3503.3620550703067,1671156970,bafkreig556hmvzgugsbh4c76f4lih3a3svz54kncc5nyhtosmpncv3wiki,"" +0xE6e5F2dBE9C7999465A4369D785caa893009ec3f,,,,,,,,,,,,,,,,,,,,,,,,,,20000,,,,,,,,,,,,,,,12000.812044929484,1671157067,bafkreickn5oeqi5u3dncjpamlmwhlq3qwvmscl3nozh254pfcz6ogxx3im,"" +0x893480D472bb4bFE04d3768e3c9e7a6E4Cfae7b6,,,,1,,,,,,,,,2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,4609.071407951126,1671157117,bafkreic5yx7ki5qzl7ppyoqh72w7v6afuyemvfiqwhurc64nln26y47goy,"" +0x245719EDdF2d68ebf8AA54dB2550891128962B42,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2001.1510430544963,1671157126,bafkreidot5aegeqwt4kria3plri3jok57gnzodqt75z5syj7oixceozwcu,"" +0x6e9078a3773a5035A710709901c41e1d9131db6a,,,,,,,,,,,,,,,,,,,,,,,,,,20001,,,,,,,,,,,,,,,164.43402023456864,1671157168,bafkreidpkge3qlzr4tv4ilnawhhlba2egsbik7ihs44rnylujlgts2avja,"" +0x2A59d2927541d17C0fa19140703ECB4b697b765D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30000,,25984,1671157213,bafkreihgs573mvyippodxvicuob2r6lc2w64askbxg3lelhoujdnd7qnty,"" +0x83BC34e69a7F79116787f2FCdcB22D655fFD9a5a,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,318.14657130215835,1671157276,bafkreib6puvqtoimggtaeyhznqyxiuquijayczswitru4egntvludhftdy,"" +0xCb96594AbA4627e6064731b0098Dc97547b397BE,,,,1,,,,,,,,,1,,,1,,,,1,,,,1,,1,,,,,,,1,,1,,,,,,1,1671157302,bafkreidpjy6vvzmiwurb4yy4cw4yxmwuhoqt7nsh5mqy5rd5eyilwt5tq4,"" +0x34f0F1a9AC76e45211D42166346C4289258d7a10,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671157396,bafkreifjtpynswxncptf2gjtpl7inuj5is3hiya4qo7klokws6yyb7jwke,"" +0xF51dD21fc5Ead51c10Cb6266628A39027492A65E,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,19390,1671157475,bafkreifrvvrdzbbawm65tnxicap2rrq5hhzodfhxkf2u7rm4soyvs4wjqm,"" +0xBb08C0f067f80237636724e28e3414C4fef128B0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,3.485115172958701,1671157512,bafkreihuelyge6h4fq5ucjmbmgv2m25emduq5awcdplwcu5z4syhxf4yza,"" +0x4B0107E73D2FE5F3aed35652452B0eB4cD121b89,,,,,,,,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,62.68404375615104,1671157512,bafkreidxdj7qxohr37g4x6ifdlu4htxwaxshxl5xjdcbx2glmiydr4suc4,"" +0xDf4C73730b431d64c4c2814bB9e77A4De8530216,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,9679.118307532808,1671157549,bafkreiae2e3pw4ivcjvuyu6zh6f4bxcfdi3mlvf7zafbuh5iruf3cjy46e,"" +0x2Cf84928261F655A47d04EC714D3Bedf9375De46,,,,,,,,,,,3,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,13251,1671157588,bafkreiekfwutuvoml57fdygxt6pjhht6dns6rog3sb75iuzs5ofmsocz7m,"" +0xA188A3b49d793568709Cb18d70Ff135FE3A4563B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2900,1671157704,bafkreigpkr5qahc2rokavs6vtwjzxmckufpdef3agitovmv3xnot6a54gm,"" +0x5e7f2929c6020baF1aB53B2172AFB41Cc6F635FE,,,,200000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4886.813847712151,1671157832,bafkreifpc7qnqtdpbch4ubstgvikrfrqd4m4nngtcro6trjcvr63rtxbre,"BoredApeG LFG!" +0x8B30540C770CCfcf4b86bc5478Ba1803eD313841,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.24266348,1671157966,bafkreihpiucq3oefvim2ca3ib4n7dhdoy7tl5pdy3o3yvnjaoew44ihhqi,"" +0x9519D34cF0Dd9CDa22CF84d9b9f8dE5A7F22600c,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2011,1671158020,bafkreicm5zwnbzvtnuoodjyklpxgmge6ppqrl4azyqthje5vya6eh34qiq,"" +0x2fff0F98909bAE74d00583e65DB3aDe8a4F634cA,,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,38967.045543921595,1671158118,bafkreih4frliaxk3hfzdgdv2ytqb4fmkwup7xk5fa7lgbxbn7ruhunimby,"" +0xA0556E8e8b617f184c6948DF2c08AC795036DAA5,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1671158154,bafkreih7svldk6houayzyg4z2ittvt33s7yee6726uiq7zbospu727czb4,"" +0x38F0e547f6F617967b88043DD77195514eF85EDA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.0799744827364065,1671158391,bafkreiakl37r4mpofxcbsx5uprzc2ikkxx2vsynajmwx2hhyl5n75fcmzi,"" +0x4278D3E39f25D690B2d060c119AB2478fa09AFf5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,22504.390309555856,1671158496,bafkreidnsjt63jqhgzryy5md32qzv7abmdxe36qzskuaqwlkp5cieit33m,"" +0x770BEbe5946907CeE4DFE004F1648ac435A9d5bb,1,1,1,1,1,2,,1,1,1,,1,,1,1,,,,,1,1,,,1,4,,,,1,1,,1,1,,,1,1,,1,1,1,1671159224,bafkreicg7e7j7ynifsotgdgqhrj5h2xrgvyivm75wg56l2ebpzqirzp5zq,"" +0xa61AC31A55690F3bf65fC7d67052693Da564882b,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159531,bafkreihtobnxqebtc2rfowddeaaecp52bxhxjhsozsi53accclcjt3x62y,"" +0xE9b2CaDBc6cBE6E504C9d61F6Bf583D9AD15b14A,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00008,1671159553,bafkreibzezdavh23ffx4f7xsktv7qzpaekhrvybobs54vtrp4jswrtjhju,"" +0x0d323D390C75E717e5807fc8B97ecF9C26741AB9,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,53943.464862442845,1671159571,bafkreifkvjz3vtjxb6xh3fgqjrhgp4r77pgkvhlce7br3ghfvg5fpzhgzm,"" +0x0516cf37B67235E07aF38ad8E388d0E68089b0F2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159580,bafkreie57p6wgpsd5ocp3tthbftxpq3vtr33gc2pevdcuoql3gc5swvq3m,"" +0xbDa0136ea391e24a938793972726f8763150c7C3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.2,1671159593,bafkreiavmk7uls2embdrgahx5lsq4tc4q3waropafmwt7xqb7kk2pxejaa,"" +0x9Ba6baA919BAc9Acd901dF3Bfde848FE006D3caE,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.1,1671159605,bafkreiaipgdrqpryhh5c6oryurgq7odz4uesujhjpl3azkcfr4xe2ualj4,"" +0x35E6fc00e3F190A8dFe15faa219368a01028ec14,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.2,1671159618,bafkreibjmoufxtl4upgm2fahzgw4rzd32n65xcmmfh2lq2hh7suub3m22a,"" +0x5E12C24d4564d7627B8357dc9e8337C1ca10808b,,,,1000000003,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50503.09109547703,1671159627,bafkreigupmrefwaauznmxpei23ltez5f46456ygtrj5eadwufrlmr6leha,"" +0x0fF9B6AB6Ec58ceB6D5ae8a1690dd5a0959aD002,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159629,bafkreib6ueanlw2dfsi4oz4egxh5uf66bzblvh2asqmn4coevxhquqw4qm,"" +0x344b1E4Ac175f16D3bA40A688cA928E3768E275a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159641,bafkreiduaqzgnexf6r5mdei7x7p2g22bqwlogvbeajpizwprdpv3j3h3sa,"" +0x70Ddb5AbF21202602b57F4860eE1262a594a0086,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159653,bafkreifb6wrcm4pncqine4vtd5qg5bxkppoiciotoc35bhfmpgwfuopwj4,"" +0xc97370F22eD5ac4c7B24A8E1ca9D81FEbb3b9457,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159671,bafkreia6ycwco35ahzmf7uga76hct3gkcl6pjof632tibeqzsb4p4xcqa4,"" +0x707D306714FF28560f32bF9DAE973BD33cd851c5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159688,bafkreigatxnggwon7u5hit5npb3ga7qbnhjligmxmkwvkzlmosnqdc2coe,"" +0x04029bAcA527B69247dbE9243DfC9b5d12C7Ba60,,,,,,,,,,,,,1082,,,7000,,,,,,,,,,,,,,,,,,,,,,,,,8082.236937330858,1671159707,bafkreiayr24uifpsaxpcslm445a2z3q7ibknt34dcguostxlz5arczf2su,"" +0x15Fab1cC5262D69853b1196f74d38C7FC96Fc6D7,6,1,1,,,,,,,,1,1,,,,,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,4,1,1,6.175877050947295,1671159750,bafkreien4wr7dfnm7v4g3xmdvepi33gfs4udxxwmhnbzjo6kp4vgan7nly,"" +0x1b5b4fCEDF1252cd92496a2fd5C593b39aC49b01,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159798,bafkreicngmnrmcq55fotduqqrlfbunihmnx422zqin7yt3eqpxno4a6dqq,"" +0x2D5823E8e8B4dfbf599a97566ff2A121Cc141d60,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159812,bafkreiblfgddqmffh566sug4r2ux4mwhwb6e4ujvrbuioxhewbbuvc65ci,"" +0x76AC6Ad4e4E7c2e0b4Ceeb30745bd53df3a85774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159824,bafkreidinkis2gynbjh45hts3o4p7xsim7f5lfxoohqdu3pvmnlcfugr64,"" +0x00432772Ed25d4Eb3C6EB26Dc461239b35cf8760,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.44,1671159837,bafkreiephpggvijly4eicufwjxrtzdeqlbkpkyrkp4tqs4tflqgpktlzmi,"" +0x7A3BdeE62dd34faC317Ae61cd8B3bA7c27ada145,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159849,bafkreif5xdqlawjqpwbzcbzbkcgxzfnwvyagfm57stfcfrnwuc6eglka6u,"" +0x972a8B7D891B88220780421fE4D11f174354cEEd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159862,bafkreiai7il5zodmd35slr5izedbfdfcd2l7peark45udmkwhdwubfulym,"" +0x1B9DA462D07512Fa37021973d853B59dEbB761Dd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.01,1671159874,bafkreiaqmcq3ksalkxi2q5pl5a3iumltdbbm2qdvaqfv4inxbf7pfjstbq,"" +0x79ccEDbEFbfE6c95570d85e65f8B0aC0D6bd017B,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.002,1671159886,bafkreicudnelr3aaitqehfv2v4a2jkjypni3zehkvzp4np3wclmxtx6yvi,"" +0x119383B0051e920D6161cEe971247D625B8D69Cb,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0009,1671159898,bafkreiftfammhrgvmo3gdh47thhhb6qgp7do5himfvvn6n4gzvxwza5z2y,"" +0xeEE5Eb24E7A0EA53B75a1b9aD72e7D20562f4283,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,106638,1671159911,bafkreif4pohigbg73eefcwtls36w6uw7kf6klnnlzswkn72sfx3xsdlyca,"" +0xAEAf8371BF9Df3eDB08BDD7D05099D49965fDf59,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.000004,1671159911,bafkreifypwge2mbfzg7vminigdzjaqvsjj3xrjrxfz62xgjduxbbafmdua,"" +0x787c8bE38E968Bd0b41eaAbe0b69d1c32ea09262,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00008,1671159923,bafkreial55xcylcrdxpchclubab3e7geakahkwzqxz2u5k55aeiwrvzatm,"" +0x4AeF8B6CA98cA20087E6b0827a50868172A32AFd,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.00007,1671159935,bafkreigfeip4js46yjlades4bimpx2ftaofshobm5ciwtocozwz4i4d3ou,"" +0x9FA7d42Ef9eb89ef6FAbDdE88207FbE6AfA70626,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0000001,1671159948,bafkreihexplhzdu2k5c2hz7hij6oxthdvt3rxxo4tdk72y6zf7ypvxyrsy,"" +0xD03Ad690ed8065EDfdC1E08197a3ebC71535A7ff,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3.1468659,1671159962,bafkreid5x2u2pm37cxqtksnunpecrjvi4f7eekz3bzuvw3oidc3lrjulne,"" +0xfD82C31929F370D00168DF5B5B0c9B8f80bC4315,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159974,bafkreialy5c7cf7f4optkif677ir5qhtkor2gtmu5pkt62giwd3gbxwnjq,"" +0x0E26F5bd12EafaE9753E2741f2dc151bE894070A,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671159988,bafkreigdjecwik53vifayvdxvhvie4owhgjrkwxh3d6llswuwtjysxj3qy,"" +0xb00933F18388a77a85f00BAe9B50Af4299c4D0ba,,,,,,,,,,,,,2898,,,,,,,,,,,,,,,,,,,,,,,,,,,,2903.4796369864393,1671160036,bafkreif5qxgya7ubxmfoami5fgm7izt2wvr3huollum5xcucomsfveemem,"" +0x68F516Cd11A1f8e49ec826fD5aB9D64114D2d31e,,,,1,,,,,,,,,2,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,2959.7394101397317,1671160145,bafkreiha2cx46nzsx7sbiva4ikveq4rq54cnb5ql545dq7h2kdnvkc5ovy,"" +0x76E4f864bbEb60Bee66Ff5BbcD32dEcAF7FBDE71,,,,,,,,,,,,,,1,,,1,1,,,,,,1,,1,,1,,1,,,,,,,,,,,1.8733765535654587,1671160210,bafkreiax2kjiv2eiezvyq7p5biviwcgvxtzccokfd4wmp2qlr3ngp2asra,"" +0x8Fffb08a892B348C3df82695F55F866D85BCD358,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.16,1671160363,bafkreidw3ubi7rmbgle2hqu2c5kkhr5dsroizbhnl7i7eaxutsu655mtuu,"" +0xAe74399237E02458aa42283e7c3ef2929AD4896C,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11.770886492512252,1671160414,bafkreidihmmyvmezimhcrmf6t2ainekinqixy655f7xvhxlyx3tlaqaedu,"" +0x4CcBD2273715c283490959081eAD820Dc297a121,,,,,,,,,,,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.11,1671160789,bafkreif3s5niz5jxl4rizfqlujau3hjvpnbgddp3khyfpofifk3oaoxh3u,"" +0x3851F114819f93451cb0D1D45A89dff974aBB50f,,,,,,,,,,,,,,,,,,,69,,,,,,,,,,,,,,,,,,,,,,355.2900106802586,1671160816,bafkreicohrvkwgb2tvogedxkmn4xwndyqeonbsuyydiurxqwrm2vn3ukuu,"" +0xc249858a122387d54b92191aC974E8628bCCe34c,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.249581110121209,1671160897,bafkreibek7q3edqu3rtdezhvgb3or2hur5elwhoa57mvlduve3bxz65xhq,"" +0x3Da0B023110B73b50d1Ac5eDDF4D381102cb78b5,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.05,1671160907,bafkreigxpujrqdavbjzyw4gnjy7cvzrs2gxpbnzol46l2vmgt6k323as6q,"" +0x6C2b9696627612FB7656ABEC3b0E9Ce4c6E98B64,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.05,1671160929,bafkreieevf3i6jg2a6sdi5qjcwmf7cmq27iiipazsowx5bt3yql4yy2ojy,"" +0x0fE35CB5c7d2dfD63Eb4eb9e02A6f20117a3303b,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,119.84283184747311,1671160941,bafkreiar7w5rk3k5zssd4s5k4w3ivrk2b2s4ubti4ufujkeewk34fx6cee,"" +0x1a2D03e71D96FD7e7389aF8C28E2DE834247061b,3,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671160968,bafkreigbmzptb6ufmmer5gvquvia7mzhsriweikevl54knmbiyhspsfgfm,"" +0xF58DBd74f26E4bDBCF2A26e2F848E8348530f0e4,,,,,,,,,,,4,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38450,1671161091,bafkreib4m3x52epku3byvbg7dmjvmdzyw6nvjghwlr4plzpbrkgyueibca,"" +0x298d0f26472e364Ea84090C80B09b187098F84b8,,,,,,,,,,,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.11,1671161093,Qmc6XWhytKx7yyu3UiaA1zYdHWedYzu6kfwCAYjAJonBnV,"" +0x3DbaDc86d19416eC16D81aa07fF2609E6241E7E9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,0.023372655047747,1671161218,bafkreienxiocvz6jgr3omeeku5p5pkm2kw6htobvu4ko72fr6mcmqrjp4i,"" +0x85488d8616Ba29219a8EB0E25229ff36E42ff1fd,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161258,bafkreigk5mpwwmwuyfrzulummqxppi4da7rj7tdhh7g6hmjazta2zoiuhm,"" +0x48a19Ec96B8750B22dEb049Ae9916094aA03F3C3,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161263,bafkreifpobshktji4dfgsk3pzwhmm7uxotovk5whubtrdfnav4m4jyyn34,"" +0xbE4Eee9ffbD539FcBFD93686b703dFe200191Cc8,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1.2,1671161363,bafkreicrwhzcmfu5psggww5dxjwnczfxsm3hxj4lprexd2ail6n54ppsnm,"" +0xb4093fD7b67b0048E8a72fe60a63a80AAc41D34f,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4094.6963333839544,1671161388,bafkreidrvmxzfl7xszngfn4t4hjbsny3pomkd2eycfxp273sdseh4tolga,"" +0xA55aCEDb58B498fD1CA0a7287e3bF7044E592ea0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161407,bafkreieh5xubesu4aarrzfmcdrgynvgdcjjrpsrmz74dourkvarvwp5iwi,"" +0x989fE87EE8c8DE837908D4AdcbE575aD8b349191,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161557,bafkreigudji33zhnhm4owjqiwqtqh2yuc6xpg4dtigzcqgtfatzmnc6nky,"" +0xc2EA013e73E30BAd228774412fb611b5f481e378,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,1671161604,bafkreif6bkrbqg5urusciwrbefws2qmmdfr73jfcmleulbwullklebdefi,"" +0x9Ec98c18247Ce0d90de4613290EC8247186249e5,,,,,,,,,,,6600,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,25526,1671161605,bafkreich5dfkfunu33tzlxtcbtqqffxmzevafpegh2drluz3bntsg4qmiq,"" +0xd18fbeFDDEA78Df614915234939619c9bAD0c18B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161650,bafkreiexug2fpfb7qye2pg2mqlwvruzwpxaljdg4rddwkkfcjyam4n25i4,"" +0xaf6346c448B9904a2af6Bf07E127E93d016f7B8D,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.2,1671161667,bafkreibompceqxf6hn22zaey53igosegzd23hccy2wgkbhtcfd4iejzh3m,"" +0x1be693074c32541919Bba91aC873464A29c09D68,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.20455238594870762,1671161714,bafkreiahi3by5xydabntvqnr55dtuagreb46sfiwswajfhfdewzpydnwae,"" +0x808c9062C52bED82d09e7187E6b7B0eE75eE98F6,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161715,bafkreidvod3lhm3gdle7kkxhavllj7xbaxa5w2e5vsmbi55dr2rohls5qi,"" +0x2855C893eff9A15236c293e8dF845a76CC325c49,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671161846,bafkreicwmfnarlxwi442b6wyx7lvd5qtdufvltjseytzx5e5l4mzzhr7hu,"" +0x31A95aDAa9435f6381Ab41b38C6C8150Bcb845E9,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.22,1671161965,bafkreihba5nrwtsava6qmumohhgokchtnvsq2satrktqqcknda35bsbqxi,"" +0x38cC3b9e7f3A747958865cD95F1141Aa58A6Ab24,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671162031,bafkreicvggxrrddncgyszenwgoqs5v2e4ai3meyn5hp5wzvv3ukkscl25e,"" +0xe58F5BBaB1Df889d399f21585404db24926c1D78,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.6,1671162054,bafkreiehv4arpwmqsefszeoz52uglfdzpmedktxqd7fwxvdwjw53jrrwla,"" +0x1684C382352FA8992E2d12264b08CBFd8E06b7b1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671162071,bafkreibwqyrolwczc7ob4azlncaqadzq3yrpqkw3z2p5bxd6twmc2olluy,"" +0xd23b06012790E2D8E01a7607127588b609C27f0C,,,,,,,,,,,,,1,,,1,,,,,,,1,,,1,,,,,,,,,1,,,,,,41649.92083053342,1671162153,bafkreihxwaj7kepcb2g5p72klgdfwznft3o4ssgzvmehiz5mqsnyaeaeda,"" +0xDF6481be0eFDF8ADf562Ba86b00785dBdeeCaBC9,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.570583372048844,1671162172,bafkreihxlpz4pl4rnpioijiahf5qeaybdibnwp4kr5yycq3j73gbdkfowi,"" +0x0D64212576F75b628F670B59b64A74580e24F0c2,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671162180,bafkreifx22opfj4oceylqysvucypujtpettihj7bhd3h5d3qzn4tvcd4bm,"" +0xA78E6515db1986f3FE47C486Aa9177932106c769,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.24111167894688745,1671162203,bafkreie2npze3tw4jyws7rhrd4fomqdgoeioxy7yofrya6xpbmj6msf2ti,"" +0x87f0b29265fd4C8bbB078CC9e1A1C88FAf83240a,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.47389991281222127,1671162271,bafkreic7v6zhmm446nwfx5dshpbqf3m5z57zbhim5ic45zges6oj2cn2he,"" +0x1b858731cf2d0B1033768c49476e31B4f985ca75,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.52,1671162382,bafkreihom744ojq6zhrc3l2nbsiklyd6gtqtp2o2alngf4ftnhdmsa2h2y,"" +0xbd95c7cE1c6FCA2cE0B7C1B86F79DeE0Be5Db7C8,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671162393,bafkreihv4zr6piqb62ouvw7wvxnxcs7jtpxigegnvfouaqmglm75pqj54e,"" +0xa6D5D51F6df223778B169D63e0eD9AC017A055C9,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.5543750183298607,1671162412,bafkreia2omlwe64as2vspptpamlo57ohyvcbn6bfppoavza4yuqz6ufoje,"" +0x9195b4af13394A76856b698bae738515E90d01d3,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.26400527713452,1671162480,bafkreihdalbxo2pnnfhqdqmipni4s6f5vwb2wkye7t4ne5jisiv2lmzjra,"" +0x5Bf6d03fDA1Ff0f75F4C98AB7C48eA8c5f0556FE,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0.44219984121561223,1671162570,bafkreihljj3i7auold2qhtetlbocwtyivcq5vk357zgfhwvrp33gfysg5e,"" +0xBA3D4228b2Fc5b6751eEEcE88eae2Ebbb8008f42,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671162624,bafkreifjzmo7t4wozd5kapefc5bbiu6e7zolxdbmn336dy5tavij6ofxhe,"" +0xd611A3350321558BDa7d15Da88e4b74eaF4c8986,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,166202.39188604843,1671162956,bafkreidjadjszwzfdrmapype4hvpyz2v5i3hujr57nyul4z5ukpcuwl6ku,"" +0xeA5bbAD59C45A02AC0B0F48C9b4b7CcBCCd73c36,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1665766122894211,1671163039,bafkreicrfrpdllcgleyeyjczyrax4e77ikuhizwrhqnjcmlia2v5ftolj4,"" +0x2119973710DB14775d696Dc3664D623A1DdC2e10,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,31.748872879416236,1671163040,bafkreidgcxqclzp2si6cnzik3ivsyxvqhrcbgkzof2koaxvuc5d5uo6v3a,"" +0xBAab83De8DbA764bF02a530cad33555bD23eba22,5,5,1,,1,,9,13,33,16,13,12,7,5,6,8,6,8,8,9,19,17,10,8,8,6,3,3,4,5,6,17,10,2,3,2,3,3,72,15,8.67,1671163045,bafkreickaymttvpi726asqbtpzlrhqvva6pi2wcnc473hilwa6lzwkbk5a,"" +0xd49d7f4b390169C80F13a828198FDf6Adb7aa206,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,9296.76689959718,1671163286,bafkreietvx5rlzsjxgcckzoevam5m2atwyiojzehpfg6av3c7ulpv5yrvi,"" +0x2C2FC2f6c1B1c2cB6d46ca0d66CFC372e5183C16,,,,,,,,,,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12812,1671163302,bafkreigxtp3xiorkzmyub7jdnjxfxjduglrgk3ab3s4xqbofaqifkkwdie,"" +0xb30a154d44c97262cECc51E4c429B2D138a161CF,,,,,,,2700,,,,,,2700,,,2700,,,,,,,,,,,,,,,,,,,,,,,,,8437.596019286604,1671163323,bafkreigxsbrsw6igcs7tqb6bgvyp77zg2bdcsxeaqp6en56f6bv4tl3ete,"" +0x13dDA63C28bB95FE9822FEA43ad5fEaA966636a9,,,,,,1,,,,,1,,,,,,,,1,,,,,,,,1,,,,,,,,,,1,,,,0.2772924544975298,1671163471,bafkreifjpgczs5gn4xnsxwhdt4zgwlohq555fvtctyijlyh6zycjed3ewm,"" +0x08D816526BdC9d077DD685Bd9FA49F58A5Ab8e48,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,5200,1671163491,bafkreicph6j5fur2h4gxj5yj44qtiuep7m3hf7wefdbstjhnpqfaoesuqu,"big love herb uwu" +0x2744a205b3a599508295e53d0290b949104d57F4,1,,,,,,,,,,,,,,,,,,,1,,1,1,,1,,,,,,,,,,,,,,,,0.1,1671163639,bafkreiekeeb7w7um3h7d25lrglujiewouydj3auxi7sdezvjrn35b5nkke,"" +0x13E35b33b929BD96A004ea88d1fec552B205a23B,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.2218586168842042,1671163771,bafkreift5jys24uadimllp5z6fqhmlznmur3yx4ho4zxvbxrglmd47jici,"" +0x2259cC4ff58Bcb4A748e2143EE35BE3e0564fEb7,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,35360.863495716476,1671163800,bafkreiggxjetdtpzallbx3tvuokisygifrdjtgzgsrplcwlrrc3phj4ocy,"big love herb uwu" +0x8AdeA5A258F0e4E0bD02FD3a833Ec25f2A4672F4,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.26724951,1671163979,bafkreiagwyhzdj7cvrhjsiwqzoxkv4nf5kabqadqfx3dqt66oqfhi7hvvq,"" +0xd7fcde28dfFa87790e2f0bB6fD0D1496A8e7cF0E,,,,,,,,,,,,,10,,,72,,,,,,,,,,,,,,,,,,,8,,,,,,12641.41,1671164204,bafkreibdfbrpny2qbhdcfc6kt37hu5hp6rhuuayqgi3wg7pluy6e5oa4iy,"" +0x7Ea9b8ba0d889Ba42458f657Ed27244AD593dfe7,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,510.2899174529677,1671164369,bafkreigx2aej45op3mkeag5tfdloligqslw3eye7bmyjuj53c3pyzba45e,"" +0xe2aC0fc8d6E1041BdDd90BD1C2156785bb5dcf4D,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,214.07882032374124,1671164403,bafkreieyb64lwfkcgxmebxupmzmmdkv6ef2ckzpvrnzqzdkabblbk2vbfa,"" +0x1bea80C2b888a6A44fC43B87e5c84823E97Af614,,,,1,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,1671164488,bafkreiga3nxpnhimb4rhbdlidf7gnckpbugbsadvl5rpw3zfwhht4d72kq,"" +0x7f6ca49D1e50671A586A76Bb082dD6b3F73feF17,,,,,,,,,,,,,250,,,3950,,,,,,,250,,,250,,,,,,,,,,,,,,,4021.594760011768,1671164540,bafkreicwqlr2xs46kyffxgti7qrsjvvmgxnnx34u6p4aojtdjopjley4be,"" +0x8eEF779818Afa953b0652e45438423ebE089F55A,,,,1,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,1.1841165449058306,1671164556,bafkreidzosexbizketmz4wi4dc365mnftdql3icmap4ktttboj63hlty7m,"" +0xdfBaeeF21396BF205D4B7D23345155489072Cf9B,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.25,1671164659,bafkreieopi66x2td7bbh46nqgq5xtct3cv3m3p4osqfp5nyqxm64u7y4re,"" +0xa1aafb06268f3396c4683e3F635A4AFf0E040e46,,,,,,,,,,,8959,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8959.555626016387,1671165050,bafkreiexp7wz2aw4wash5ldzngtflqtpykg2lezr3vun2li7fkusfzahtq,"" +0xbd7dbb5886786AF713eBb1841323C528699BD92D,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.060929189945934,1671165213,bafkreickbyztqywe3s76r4gjc3dba77e3dmpisq27qeyavq5fpuuqjooja,"" +0xa2E455c0963643276473b58B320e5C75923F6DA0,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.14209028508370924,1671166934,bafkreiceyqfrpquuni7y2dykywuspbx4kupf4kimtr76dpyp6pj4g4offq,"" +0xe10c8e331173484e8e296d6a68dD029Ad1489958,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4800,,,,,,4800.01,1671167039,bafkreiaje6mh6gsjgcmafspttgsq6tarfx3553mwjyd4wpnko2tacapikm,"" +0x231De4975FA7ED182E4a83ADd1d1b5b69b40A41b,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671167168,bafkreiemzljpap3dx2l5u56poalirtue37mooryfyun3otzecraessylvy,"" +0x44362d233C40E2Ef245581bC0b55A24545F20B35,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671167231,bafkreiexi6rr7dyi2xbj5w6grqo3ccnsvgejhjlfg5kejub7bk7cjbv3ge,"" +0x623c04BbcCae0363d37a18f1B704DcBe1F9f5805,,,,22000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21834.541118435398,1671167289,bafkreia4g7etcmn7qpsyecgymuv7sonp33ajhab2gp3g6fv33njme4gdpm,"" +0x046Bf094791e28aA7fc22c8ecC81b65a24b48219,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,40943.100085898885,1671167309,bafkreibglllefwtqseen5endlypgr3iqy3bjirtlhzcua7qogxqp2yqawu,"" +0xBb81B5F1A5a7C604810FA719fab66Efa5Cf384fa,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.43377310132063157,1671167904,bafkreic7iwtsdcxlelnkomnt5mjv55u4aekm3bl3zel3htrw5poytdqa34,"" +0x4939C26C681706F0e780204C7414ae998758a12f,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.100160684025446,1671168053,bafkreid7hwyqwskuj355ufkb6tpk763xmfavoc3wnvedw5ee6x2ze2nzz4,"" +0xBac335098babC9a695dC059fBE5737949c5a24bB,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,,,,,,,,19.11,1671168148,bafkreidy244zxvg6cjladagk5wyxgu4rjs5bfsx6jwrwobtmvj2vbf4vhe,"" +0x7fBdE8B27D2B4F164B66F2a9dc02bbD6697e5b19,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.240259,1671168166,bafkreig53tgffeez7vf2i5qhbuypet4kbr5ysem2epdgrodopaena2t3pq,"" +0x4d477F1aabcFc2FC3FC9b802E861C013E0123AD9,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.19191703045671038,1671168176,bafkreidboqnfljmlldohxtcypzwbyrnvmj6h5damgtaxrvzipbudidqyva,"" +0xCB45eCeF6780FCB4EeBBA8b08680a5b50568e258,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,6921.639122840744,1671168311,bafkreici7ijb67lh57rflt5v3w2b6iyhylmnhlsx5jf7zvzojgedey7ycu,"" +0xde7104AA20770Dacc65a42Ae010707D9E51a2330,,,,,,,,,,,,,300,,,,,,,,,,300,,,,,,,,,,,,,,,,,,651.6093114664501,1671168406,bafkreicjwk65azrt2fcbgrejmhrhxxyppxnh277ez4hor6o2ejgv4jg4tm,"" +0x9cD7D1981B3e15a2DEE4d512ac60E0579Ae18546,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.94,1671168500,bafkreiam4qpigxikt3wmyfegl4jqkwj2vu4co3ssooi72aedpay2i6vure,"" +0x9516E80ba79b97D5085eA4553Df9E35022B1a656,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.09576919842496559,1671168661,bafkreihw65lcprrbcrrtgf5bz7oh4alxpbsk5kf64xnrzdq3ig2br3fvuu,"" +0xDD3508149304F3868A993769F3911009abEa3660,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,0.2,1671168668,bafkreifhdgbnpx7v5tapzht4ufg7jxqiqempbhrkdxgkvcnkb24ks7ft4i,"" +0x60663af31Be6Fb5F4c89cC2ccA07F0BF3B2CFA94,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671168729,bafkreic6gzdw342ihkjol7pepx3nqch3gz7vzvdxmmkytaupsfifndfx7m,"" +0x894C933C4113fA86a84262F12610d4e8266e9194,,,,1,,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0544771196447604,1671168965,bafkreie3njhvzqsufuk2m24f3vmkzmcyomvfdjw7rsxhbobbfgjexpgslq,"" +0x087Eae3a20901197F68bAb6fAD5966254c8Dd52e,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.12036483355126293,1671169029,bafkreifyf4jjjfrv4jhn3a56ir55b74ierdd4bxnclwubwvlykijzzan5i,"" +0xA8169bfFCFc29643781d5d2d0d10cC7fD66ae377,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.070410461924732,1671169259,QmSJrvX4467cfMsUhM7ScuLigJDg95htCiFYyZFQvVM8Kp,"" +0x4a4B920D19C6636311069355710C3201689E6d90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,44822.58864681473,1671169405,bafkreiamhxo5b3stda5ygpxrqdsqcpxomhphgsxnvzmr65dqfqkbewzmyi,"" +0x4976F0788020c2C1A119f5251d0E53b0B757C3D2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1408.3785903313426,1671170081,bafkreigag4dkgd6ya5muk42zvhmgczt7f5x22astc4bul57nh564zadn6u,"" +0x63d612Aa37942803ba62e03C2F6FDE6B061f6A6f,,,,,,,,,,,,,,1,,,,,1,,,,1,,,,,,,,,,,,,,,,,,2.007746658359618,1671170376,bafkreieeppp5o3ay7vcwfplrnij7phua7jtigi2jjr6alr4tfs4hkkhgiu,"" +0x7E8ba3fA5f0102004e734437F18EB2de612C3187,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,5218.47836153045,1671170579,bafkreihmxigr2zjfk5fq7m5aluz4gqvvkpw3cqrb4oaeynqyje54tronee,"" +0x994Cf01f34c51426bCB12bD30Ff7079E280E1140,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,1671170863,bafkreib7xblaxjawv3xw3bhi24nxk24fgcyrea5laoubairnlma3vtrq5e,"" +0xb50edC59d7554d21A5a16b5a128BfcAF1279F2F0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,176197.72865468837,1671171455,bafkreidp2dmjhnppqxvy4kse3gy4izg3jjjyjjgk3qnkkfxvgawwx7q6r4,"" +0x5ab4bCf284031a67fd8cEf10d0Ef4388f0851401,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,15034,1671171587,bafkreidsbpednd4a5hxz564h6ruispockmf2szo6vg5io5u2orkbagc53i,"" +0x20990BBf370e410898Ac4F5a9533a29b4f5fbd52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,21686,1671171691,bafkreib5xr727oibpyrkfbjmz54koxy2veuit4iz6mgbhi37ox4filnbpa,"" +0x3F5D2058971DFd0103E3bF5E423620B5A42Db357,,,,1,1,1,1,1,,1,,,1,1,,,,1,,,,1,1,,1,1,1,1,1,,1,,,,1,1,,,1,,0.5801465730602591,1671171928,bafkreie5g23egl36acmmzsxrjspdx2tnpnvowug7umdsp4rpzs5ot73kri,"" +0x079CB50A38e4A9b7AF49adA16201D00c25Ad965F,10,10,10,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.44439985715801,1671171957,bafkreidb2eahn7sudyyniew4ycbaht4bhotk2fmrv6an67drg6ttezlnxe,"" +0x97432c12ea8C957C3aE2d59c9953CF8dF9CBc5b0,1,1,1,1,,1,,1,1,1,,1,1,,1,,,1,,1,,,,1,,1,1,1,1,,,1,1,1,1,1,1,1,1,1,0.5,1671172106,bafkreigoebxlu2y7oxxpte6sajhwud23qnd73ba7pnccsu723vsatd7dki,"" +0x472F916934161Be833E924DA2F31b8100F321eD1,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,1,1,1,,1,1,1,1,1,0.4014177155344104,1671172191,bafkreichkgclz5klaiognzfiaxwzbnwdmwy3r457shurpvkbap4jmlfjni,"" +0x2B29833a831207A3B92102b0708B32D624AA0F65,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.136459298893462,1671172200,bafkreiazw4fh4uprljvst4j3qubp3lgovzompdca7afzjevlwkl6brucxm,"" +0x23fB34F91Ce9Dc6D8B0051BAaba39C16a1352222,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,1,0.20469285639342644,1671172304,bafkreihthtfna52sz67c4ecl3l7hoockjejqph5gena2zblv6izth3mdiu,"" +0x47A76DF5F20b7116A33B9715bC73092Fb3690b36,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.131856012616721,1671172414,bafkreiaf27xy5nu5ycvudwws25rhxxeiqq5g32mqmx7nfjauv3stppgn4i,"" +0x6071E91AA75f2D1ffd8ADF308D76bF3c97E3A108,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18384.21576496257,1671172566,bafkreigvskfhsj2deasrtonup56gicfdvndp3haiw6tffojbwwwy4g7wey,"" +0x88F659b4B6D5614B991c6404b34f821e10390eC0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671172618,bafkreihn4h6mlg3gx56dptq3fhq3tbz4oypuau2pjafqfuyjxdk7iu4vsm,"" +0xF3903BE7516c9e208bEc91854b3d9D35c709716b,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,10094,1671172889,bafkreifjyo6ip5pldwwisfyt7g7n56flozq3eqnx4mb3mhm237tkxv53oa,"" +0x61Bc7Cd78a974bE5D19686142F2ee9AaEf247974,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,12992,1671172937,bafkreiee4i4euzw3yw7wjciwncxebrdfs5ctszpb7ylxpjlusilzft5mli,"" +0x258855D09CF445835769F21370230652c4294a92,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,50372,1671172944,bafkreiepv3bfil3kz5awjo4o5gss2cnuluffpk4rcsf3ebmob4tacnqaca,"" +0x768A836A225c6Fa3A570D74BA3d6375d965cB38A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,0.4320223149654717,1671172966,bafkreihaa4kui4423hjhfioiixlme5dkrlxmgvmzwjlixw725s6ifbtcpe,"" +0x89C69e649EF9ADc6646Ae456A1D8D6e6022f4695,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,16034,1671173042,bafkreieinmbztcbjglurczntnwqj7ytkh277hob3xwhnl4zjcvycckavuu,"" +0x7e651F5f597436cD0fa941F5FF2cD45Ef3F2Fda8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.049943,1671173059,bafkreibvagwuzubrel57a4ii4kxvz3wy2i6qhbhyzzrjtqjzzynjckja2y,"" +0xa68aB6d6668745c4585667aE4a91c0032dBb932f,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2448246471012847,1671173085,bafkreieskkrqplv4qnq7wzatcdjujz22p5uoscd65s5pkkeqr44cbsfbma,"" +0x4e8D75d8b17C0d7D7FD658040CaCD6aD6b206015,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,30282,1671173134,bafkreia2c54wrpjfmrfxc7lu4oplbcqgkxh456uvlu26gcmbdkrq62c7pq,"" +0x07cBD4e4473140b6078Aa987907aafF5E500b9f1,,,,,,,,,,,,,50,,,,,,,,,,50,,,,,,,,,,,,,,,,,,28.755825145340467,1671173141,bafkreics4ohje7m76z66x5n5hliwyzyfrlwr4ojyvxp3jv5slgd4gp4qei,"" +0xa928E40011D5991f9EA478c7532807Caf94d6859,,,,,,,,,,,,,50,,,,,,,,,,50,,,,,,,,,,,,,,,,,,15420.555049179296,1671173238,bafkreig4t4niorbfv4e2pbkzt74wsiged266ob6eucy7ujhjhg2cpse2q4,"" +0xF278b687d9D41DebDD34b4D4B3EebFd8bc198DF3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671173544,bafkreiazqxxhii3aa46gfgl2eet52zyab5fvrehlnr7o5uy7gbjntwk6yy,"" +0x6a93693b70022b1d0D21E3ca4436dc748472367f,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.326225483390474,1671173605,bafkreiafbqqih2bwomxg3wzrulnkkyh3vggtqni2pl2ru5n3ki2vbnjb4i,"" +0x4930D3d0A85848F25B6F89e99708909A82F853e8,,,,,,,,,,,,,,,,16192775,,,,,,,,,,,,,,,,,,,,,,,,,14274.13563035972,1671173606,bafkreiatqa4ozqecos444aj4h25olsb3qdmgcngtfptl6z6io3pckf2bsa,"" +0x1d8c5303DfC01D3a486fC7133958B45720CB314a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671173673,bafkreibxoror4sq53fdldqdbt5swebxmybdjv7t6pg4iuyz4berzmndyiu,"" +0xb60Bbb26C8fFa3f43D4a1276657d802DA5653d2c,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,6105.103482684887,1671173749,bafkreiex6b6ngsd737gnsplbjfb2cg2ykojkgrbiqywelvkftqog4mtarm,"" +0x76D03242952F35260D6A5cc697192808c706d83d,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,8694,1671173809,bafkreigruianiaam77psde2nvazodlx7226fh5kirmikurkthxa5awcyky,"" +0x216eAcf4A2aeF0008e5fF355d6d0F82bd30914e5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,14178,1671173900,bafkreigjpxu2sd5ruzd5lzvlzbsakpc3dtj3iqw5ga3m7mcliw2t7vrwtq,"" +0x7bF8bF27e3F300FeCe90EB785e4F09aba827eDde,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,20206.816949543398,1671173917,bafkreifciu2pqdunckxklup2zedvtswzydgujv7e2nqsuumdujd7z7cqfa,"" +0xE48608C7Da53A6481A46Bb247759b6d3B0eDc6AF,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3190776074289374,1671173987,bafkreig3mr7fpc2cpog3depg77p6jaqfqhcrysan4tguvef7yilgbmhhje,"" +0x44C4107E53a5e5e483a9e528B6Ed54508aB0c812,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1062.2521370331406,1671174019,bafkreihvxz7fovk4steeif4vvx2xk4xryreemqkzi7uzunptg4cnbbtnni,"" +0x6f07a26C7bF4ed24093944006C77733d06595666,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3259947039503073,1671174137,bafkreihjzblryag5pfio67bc32j6mozvm4dtei5lxap4wvmrcfus6druqq,"" +0xB8B5709D1f161A353bb5e902c0FFd761Bc4d8074,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,31439.6198676,1671174167,bafkreia6uykopvsrw56xrqbmnnmnovrsjaxghemfdpsfijhgxwguntwpne,"" +0xC6A7463A7Ee700d035Aff7BFD1EE198D680A4164,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,99900.99676724138,1671174200,bafkreigc72hhwahhm4enauslhgvt3wrycitcjlrsezjch5qagw3qxvteqq,"" +0xbC7D1F081039acc7DC2C1e7C06ab3879db5CDd1B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,4558,1671174226,bafkreiarabslx5kraapkaclrex7ocuu6x4v42oum36g3zuhgs5ygclutcm,"" +0xeA4B9b75CD563a9E003bb9c16Bb7a963D2fDc750,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174286,bafkreidswpe44ufo2pktgjh4btrj3d26vf2d3hi3suwlqjn3jbkxwynpme,"" +0x55f09FB7566bA51d822f1Ac2617037C144209D9e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174339,bafkreibxw4wt36i34qznkk573efwdby5prfkkeebtvaj6fd3mryzl6roga,"" +0x944a79aaf88C2E9eBC647a3314712BDA4d0f331E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174405,bafkreigit33ailfc5qddyr3wwlklonyuorzmkslsjiremkqv34v7sovazm,"" +0x9BA8575C255c9D54836c579bEe5901aeB6623e2a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174454,bafkreidgmkt2t2ew3myrgo5ky2oizgv6tv3wzk3bbgggc7grfjnhvs3chu,"" +0x0DFa5f2efC41DEb13b23163DD794613b40444509,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174500,bafkreifgwnpaywv7m6lfnd5ctta7o5crqbts2sanukzfgutcw75j56m7ou,"" +0xF957A7e0698E356BE75e4A25Db6712c11e682a43,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174546,bafkreibyhbnqfmf3kvw7uifefhy4olrhezmuiamsftu2bpix62cdkfapza,"" +0xcd0b67a61E5e8F4616c19e421e929813B6D947df,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.000230998494134902,1671174567,bafkreiccr4tcygzrtxezapdlrcisuzuvlhh2ey5s6la36zhbwo5q5b6qmi,"" +0xC8960736Beb04804fbd1301033d6a98820c09A9a,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174592,bafkreigggzp4eqpifgwwnp62rtcfew255kf4eennib7hituloxo6kz6z44,"" +0xF507dBEd7F75389cf3f45292E7Bb4C12e05932b9,,,,4500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4457.685865202084,1671174625,bafkreidqv7ubp7wx5f5brngwcsn2iizfvo3qs7jcymctrodagu6xw2qfam,"" +0x0b1AcD141937C85FB4aaCe0622E20a37eA006693,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174644,bafkreihbdiopa2ii2q47oobos5752q5c7nsajbjytubffzvjitv7zcrwte,"" +0x953d8D6419F8B0F7B7a15e7C8009B411011a8B5d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174692,bafkreid3u3d2eniudybfnut4km2yitidyr5nkthmtbddlzlzba7hl7azea,"" +0xdDA4A35346B9a8B6fDfE349f4FfC85e94718697d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174762,bafkreifno4gynqzhjqzogkmh5yqv64xoxharubkj46jdxpzpf53nagnyxu,"" +0xAB884368Ab49d771CCcDc3f5c9Ff682767e450d1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4744580884427233,1671174798,bafkreibqjwktwkryuynnjlcema33bqmdbesafyq2zclr577e65rkro4yyu,"" +0x01A49bB89DB31C340BFBe474f944944b96B2eBfb,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,15034,1671174811,bafkreignafcmbgj5cibf7iuzqyybleubenaznxrpcos67fovneqpzdmsh4,"" +0x469DE767E44981fADB4b2FDAc578FaCdF017c613,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10088.054601893731,1671174875,bafkreicifdyewge4i2mqaapp2wz3naiqgmmf7qb5qby4dffaxojeisors4,"" +0xFb1626C0311392c62723D06Fd3c9160404DA0f33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1.3025737922489966,1671174929,bafkreihhbenq476jgngm32znhzuyjnlgr4t2vecj2la2xxbw3htlk2ieuu,"" +0x7F7aD73518C490885723B425a998921Bb3Cd309A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.7513647337185243,1671175346,bafkreig3cihgg44shgrdgnsh5bj62mny3w6j62f54qfi4bmi6g4io6ruju,"" +0x11B540e8C00ee1B1B383e8c463B3D98155360BAA,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,16038.7526067,1671175417,bafkreidwqq34auuncvkwwwmwidwz5fe77gxj4nrxpus7272jlax425nody,"" +0xE2C7312d747C54eB6E476A2Bb79EC38835fc2568,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,3390,1671175697,bafkreigsmcinhza7hnjwcrkk6h76xbr5rg4ygjp6tft3hbyeq2wur5job4,"" +0x43dA2bd51A514b3a3c1F90B5B482E99b0F787669,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,9965.90788028,1671175754,bafkreibutehfrovwzv2wt6jnhoxyggiwqv5462ts72vx4jpq6uzmwvfkba,"" +0x758A7D086917067ff956aAE0732e113Cdd9C1d94,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6183.2330408900225,1671175794,bafkreicxw7rjuwv3ihwikxztszwsbo5th7653pp3wmiep7uf2pjdgvno54,"" +0xcd5609511a931dd5dDA9edE146aC83FD40f0FD87,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,27,1,,,,,1.5920637061257905,1671176043,bafkreifiywl2i6cfmh6opqkhuvqlvxrofftpwxbp5yxkga6fkwlxuvloc4,"" +0x06d0f03416fBc95a69BfFA1374E597F8AEF752D8,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,22230,1671176136,bafkreiftprqpwkhnl74gux7nazazy4i5pd2q36ak6tarnuq6m77q3akfmi,"" +0x821cC25a6b6E1d9b80b3Ed99Bb0B3f85cFc18693,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10093.23029,1671176198,bafkreihkmgopny2rzbd3elwzmeberhq7spyczuximo6uuqnshbqs4uql4q,"" +0xa22D6bd7BFeca97C60063087265a9Fb2BB8cCd1b,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,19595.813010609876,1671176208,bafkreidxbgmerztacdfueyy6pyvvqesen7fchuqz53bb6ta7fjlidirqb4,"" +0xbB2844146f40689b1fE38460935e31830204c104,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38124.80816665569,1671176426,bafkreiggxo7sc5qya2y25ya2dsmqw7ompdulq6yxs6vbdkkgzm2wyqbljy,"Gerry personifies the motto of 'Apes together strong' and is always helping and building. Trusting him to help us build and grow!" +0xdd4098207aF1d675B690053F0057A5d97D8B1C88,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.46367385178273024,1671176431,bafkreigrnf35ozkkbagugtrxihnm3xv2ua4iobr3734mzthy553efv76ei,"" +0x66DD2E46331219D1046B8452a04806EB6Ba07EF3,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671176436,bafkreigqg5ar3heprzulsk42ysyd7vxljvqrh767s7xscq36rt3nzaxinq,"" +0x775FBdB2273511a864c3DF883BC3759b12474d26,,,,3,,,,,,,1,,1,,,4,,,,,,,2,,,,,,,,,,,,,,,,,,13925.806057133295,1671176563,bafkreietyhwm2p6qrsgqztvn3cd6gbw7nub74oqgj2p35txbappzjtnpbu,"" +0xCcbb0F60620ce69f7AbE647D937d702694EA94A4,,,,,,,,,,,,,1,,,15,,,,,,,1,,,1,,,,,,,,,,,,,,,16746,1671176751,bafkreig6zxkdyjf6tdjn7giauqnz6a34clm6afxat2rymbti66jpouks4e,"" +0x6Ac5a8D0203b9Cc4752647f2aA4aA87C7f290774,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1615107177892012,1671176999,bafkreiar3aw4ymsttbrtqdyizxiak3k3jxp2l35r4to56tjbzkudecy4xm,"" +0x6B87616D8fe9eb216975D464F13A82f72114af2F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1671177180,bafkreiacx67tijlqye7dfemwm3b5k7u6tggjeczhvwrc4fnrxjshqzkjda,"" +0x769641550a8fbCb68b5a6216BA7E14c32414Ff4d,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,192.14069689,1671177208,bafkreiacdu5l2urumtvbrjjyeldikykrke3hragsnwggc7k5l2khp3xa34,"" +0x4D16f58F0030C794c6bF5AD9676559946dfad550,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.301,1671177210,bafkreihurmvemgny3npe4brydr6lbgfuc4ksy4fijwiwqszgigtwcmyhne,"" +0x9A44CA4fCD041062477360b77Da67401252f1752,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671177506,bafkreih35a2bhvudyvwtyc22rje24ub24x6wbjuxchwqynr35u3jk76vjy,"" +0x896002E29FE4CDa28A3ae139b0bf7bAc26B33a8C,,,1,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.97260353323612,1671177781,bafkreiemhszecjf65ufsmm6bebfnyiqpcf6askwan6ploorxgoym7yw3r4,"" +0x81F7c3796f4b024B6700A0134A1C509ACF920324,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3945,1671177824,bafkreihxwvvrx3fltxnxpeu3jbhw7aupef6zroh3empvpvdphl4fwkjqai,"" +0xA12deF0B79Aa8226984F8a26076Fec579A3972f8,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671177850,bafkreigamjuo7pkmxxnb7ohwmlb6xtcthfpy5avrfaj3olh7z3ciq7txi4,"" +0xD204e260ac2b6295298151E6AaadC2C6aF29f780,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49719.262714758515,1671177989,bafkreihk57la4hvrke37k3m3ogyvkluqg7wev2r7cv55lssrnflopmhkxm,"" +0x88AbE5f4Cb006947662A058d6ed82D62B7839036,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.304,1671178006,bafkreifuojpnoc74o6wyccrymfuu54iyurn5ky4c357g6fq4bwjobccigm,"" +0x79dA9Ed4E3226EfDADAEd613d488661A40F38b97,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.31,1671178365,bafkreie6tsu34vip7ktqvgh7kxe3feizth47teicquxpgik7sl3obqtq4i,"" +0x6fa0B5cCA8F1009541Ff697955813D2AA0C8CEFB,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671178609,bafkreiav4lwszrke66hmslxru2ehlxn6pefcl2kc4zenjak3iy6utcxwpy,"" +0x078Ad5270b0240D8529f600f35A271Fc6E2b2bD8,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,1.6143336387207583,1671178696,bafkreigwllsl4fcuplgkeyrjmj3g6hi2ww3ed2v7oonytu5orhtehxeyzq,"" +0x71213a9C9504E406d3242436A4bf69c6bfE74461,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.1762588894795614,1671178755,bafkreidjyh4x7r4gcf655oe3h3iuqgt5rd5dmcyejjo7jkzw3sun6cgb6y,"" +0x82053fa9505DFBAb217499C8205e55b135d25B01,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.32,1671178819,bafkreieeug443yobj7jhtgg3lsuuxuy67buubybfnaicqfoho42oyo7djq,"" +0x06e6FC96De94E49b771898642831F370A07E0f8d,,,,,,,,,,,,,25,,,25,,,,,,,,,,,,,,,,,,,50,,,,,,0.20767793,1671178846,bafkreibjcy4uhegfn2rqiul7mxqy5qbmevgcfmrh5kqrbghzklil5btvxq,"" +0x594C9Ad8D38Fd59daeAe8520Ab1E31B2A866C4f2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,615.38446,1671178914,bafkreicbgm4mbkz7betq5npdcxd5pdt3pkvibzfiprzetha2auazjs6ucu,"" +0x3178fC052C3Cbfcd2Bd2008bC9787eDFD12cd6DC,1,1,,,,,1,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.74,1671178952,bafkreig7u5uomuriiabasupwc4g76kb4t7x4ds67u2nxksbfyjnidvvaoq,"" +0x79270E3BEe26D802D8EE8BB905235DB9DD94A915,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671179080,bafkreigh7jnaqq2j42d2gaxvoyymtwd4l424l3pcituty4ic57hl6tiite,"" +0x8F2A0c6BDd5c1f61552558D2C0D2Afe6d3dC5272,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0500000000000003,1671179272,bafkreiez7suizgsdqinsuor4tiv7d4mr5xk3kv4tpqrqgyasvizjzgxklq,"" +0xe8Ee3A26083A76F22Cde45E67632a17a143A9d33,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671179295,bafkreie7jvvhniuixcorrd5aykoblyn236uk6kq3f4jx3jgqdhffq3n5iq,"" +0x29ee39be789aDA5cBb2051f4bDd70Dd735Aed7d0,,,,1,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1,,,,,,,,1.25,1671179334,bafkreic4i5zub5i3l7deh75irh32jbxwr6xwb2og4sugn2iworgb6koc6y,"" +0x1D784e25ccFBE50b1f4e118F97765DB6Bc44ea7a,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.335,1671179527,bafkreif7apxtluwraqbmyb5n2p73bb627yblr3p5ghru7dqu6vhrfd2mxa,"" +0x5244736b3A8F898149aE33f013126A20cE7abc62,,,,2,,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,2.8357027802918684,1671179586,bafkreibngjszth5zegs33qbz4zeysrxcnewcd5mwg7wu76tuytzzntiria,"" +0x9979ac671fFd09e49D22790Dc6588feE74fa777D,,1,,,,1,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1,,,,,0.256421529490551,1671179651,bafkreigbyq4vv2gdpf3gp3oondxeawsmhcphly525z27z2w3ggj4jg54ey,"" +0xE159BA4717fdbEA5B45dC49FdF991534A71B8755,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.33,1671179941,bafkreidizi5x2pv6rul5cq54cjb26yjisbddvyq2grtz3pxyiic6iij4mq,"" +0x8C155A38dF395Fc6C913e1Eed4463c03055FFBcA,2,1,,1,,,1,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671179956,bafkreidfdi2jmltscscgaym3eqi6oy26fu5rvta24ckjby3tmcqt6e5dp4,"" +0x74264aA892C5C4B596b91F961B1387f94ef3d5a1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671180022,bafkreiana7ihtzsqafr52hlubdxayzzmzf2i5jcilz55w23onk5erk3h6y,"" +0x91882B545ED077354310BA2015Bbd0994Aa0c834,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180036,bafkreid42ppd7l64hlhlvrt3fwb7mn3depuqsk4wykopxvrxb5rgthnbxm,"" +0x9b67271c40E6bc930530aE45272cBD56Bb014eD9,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180079,bafkreicspevxz47mmdidasfib5xmtto5ltl4xu77q6nnpq3xbvnq5fbify,"" +0x3A770AA35DAF18c3dA763Cfd8A34Bb550097836b,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180185,bafkreidx4soysmf646lp3k5rwh2hizbwecl22smjebvccgsihwhl7ayefa,"" +0xd41Cd94FBA987fD46d51Ab2104a4707822666666,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.54,1671180255,bafkreidyd2sf2ngve2xqpsaenokpozp2u4aako4dnekrox7s2s74nc6ktq,"" +0xd7688428E60D2cba8a9c3979AD73a2A337a6556D,,,,,,,,,,,,,,,,,,,,,,,1000000000,,,,,,,,,,,,,,,,,,5525,1671180266,bafkreihh6642lll55itqju3vsudsgq5bl7nt7ksytabrogfghfngbstbcq,"" +0x4712DF6d282c8830081cc1c172FF47E04Ec7aC60,1,1,1,1,1,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180290,bafkreihsozconifzbarwuftblgo3bwlieqkmuta4355tjfy4vodgfrfspe,"" +0x2169Ec73eeB5287Ed3180b401B6383BEaf5a2011,1,1,,,1,1,,,,,1,1,2,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,0.05569815079381274,1671180296,bafkreiacwumhnsiyvfsw53v5entlr3cgw2rlskr33wrqgm67z26cem6jm4,"" +0xE2c1a36f6d39F3D1698078e6579fCAbb779B5a32,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1671180470,bafkreihcwp5dv7mnz5nrkhtiilnf7rdy7himj27sznjeh4lrz6gsxq37ei,"" +0x1982bD37E91Fd7a8c88805E9a7aa009fA804b1f9,,,,,,,,,,,,25,,25,,,,,,,,,,,25,,,,,,,,,,25,,,,,,1.5505916398832649,1671180950,bafkreiakablm72qouqvpbqwaxcfdfwhr4rkb4qcf63aju5ihvleoek4dna,"" +0x70B7454d7bA86666E9d29B551f2603a6acc8DaaC,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2813053252,1671180966,bafkreie6l2yjbiiftoyqglb6y7ukvcxkak3ailcex3iwmqji5awboxpjmy,"" +0x10f04eA206ec0a82A268d4489365BBD02f6ab41C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,41.7774,1671181191,bafkreieumf4vu24ntzo76f5f3t4fs66filpk66x53r4phsn72gq4awt4xm,"" +0x15c823B0e6c08FCc75c8DaA930dc8b693EB477FC,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5190385478508064,1671181220,bafkreih6xmwb4dv4amesk3czeuzgbxcnxzuuawb2rymwxumwgd3rscp4pq,"" +0xAA32059AAAdE38e58948067cf9f62293323dE1E0,,,,,,,,,,,,,,,,,,,,,,,,,62000,,,,,,,,,,,,,,,,62001.32505863835,1671181315,bafkreighujdgxxsextoybgfe7pcmpqhiv5fmqh3akcyhe7q6j5zlstttqy,"" +0xe337a9212E15bE28148A4188dDca858956ad19F4,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,36012,1671181427,bafkreia6bcrpk3uco2sw6gs3dzsh3qehcfn3w4mpexdaj2ugu5ncgknusu,"" +0x4fb63D01Dc521FceeabAc44E57bC675077656DEB,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671181438,bafkreied3h6ovokeeoioarqeu7pkiuosld7qemfm5dnhvdbdnnchbqg3ri,"" +0x9aE6B470D238a4ab42cAc5fEB27CAA5A19F89510,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7209248689,1671181448,bafkreibnagj3ks7swdn3wxpkiuf2dknxgwnugs2dl5cp5g2nccpz2qeozu,"" +0xd0788c420418a1E5fEBBb6c210715F36Ca885C1B,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2727176937054279,1671181691,bafkreibf3spkynr5zqffaj2n6yakvz2cm3xgskbo6mju3rs36hlrepljrq,"" +0xab62265D80c6B88A01FFe8a7Edd58C2a1a7B0db6,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10966104063272286,1671181725,bafkreidlqjgg4govacfchv5ta5uo3p2p5f54fkyc2oc65lgmuju4lkadlu,"" +0x0e198F0c34A93aea5F6bD3967cbD1B8F8c8C8319,1,3,,,2,1,,,,,,,,,,,,,,,,,,,,,,,1,,1,1,,,,,,,,5,0.012568103118443086,1671181747,bafkreictksig3ms2sooa2q6dkpj5tytzbg5dayv33earbzy566i6g6mfva,"" +0x1d202DAfF74d2a6F124A95b588fBd010b896D267,3,,1,,2,1,,1,1,1,,,,,,,,,,,1,1,,,,,,,1,,1,1,,,,,,,,5,0.3124127692296935,1671181785,bafkreic3b2ierg335ajcgk3dfxom7raiamme47fa53ffqfrm4axtnnmeq4,"" +0x4EFf2F739B1B0d5719662f9094A06A742ed99c43,1,1,1,,2,1,,,,1,,,,,,,,,1,,1,1,,,,,,,1,,,1,,,,,,,,2,0.29481846854028226,1671181815,bafkreiaeyxxkjhr7yeqhblnhztnqj6lhpfd7ixdf7cj34f5nvdg53wsgye,"" +0xa94586fBB5B736a3f6AF31f84EEcc7677D2e7F84,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,4,1671181901,bafkreia3iwf2skjauoquzpe26vkxmrixorey6rqei62gceb275w7bnxeie,"" +0x70a913620fEE00f6120FDaBABf5d65291fcE8899,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,1,1,1,1,1,0.4463176584293698,1671181939,bafkreih332re4icdzmvxp6pv7lniamxa42skdukribxjk2hibvpk6ptg5q,"" +0x640E8A83Dd64E9d1CbbBe9c4a1433Aa736def624,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4032241994156843,1671181985,bafkreide54e52relwg4wcaggrjg63xi6dlg6345ltz3jqcbtvok2ir6bnq,"" +0x3a45255D69c878Ef45e012BB03f2E31782104885,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,909.1304600333609,1671182205,QmRLGZHs5BET8hSU3FGg7GZaK7moUaR9AFXcCxsMNBYvcn,"" +0x95D8Bc3ebcEc8A8F2D3BdAFe141EA118fBD7Ca3f,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6867252996,1671182210,bafkreib7oxlts3xrvqqtngcbq7ye4dzqlb2gaufk6k2qzlab57yj4agxjm,"" +0x3f170496f84c11668e00c572F391DFC5Fbcd1db9,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1.27792,1671182273,bafkreig3qrjxxjntcwxjfl2i2ncxrhqtiqso57upfedmapiky3ox4ygnmy,"" +0xb689D0813EF8d63aD619Ae5716229eD0D994c2ce,,,,,,,,,,,,,20,,,,25,,,,,,30,,,10,,,,,,,,,15,,,,,,13191.307280834013,1671182378,bafkreicbfw7a5dyyokrxtrmzq565pgwp4d4wmxxtmxfdedy4dgm4y5nxu4,"" +0xADa29d37eF1ac3Df5D76413eCF752013F7870202,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.016362355333957024,1671182584,bafkreig2hmwxqrsgnvhqp43letpsy7vb5tj6cxu5qfo4b355bc74n5x4ge,"" +0x56B5f8825173527690340B14D6fABf129Ef5f1AA,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671182946,bafkreicgxoewzjd3cm7c2st3h6foqt4xqux5ya4udc5sqvo6i7ayj6w5hm,"" +0xAB3F34994048c2714CF403fDBE38eF8BEE79b4BD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.8248329645,1671183071,bafkreie55r3m6ky6hbanpomi4qvhhytdctdj4bvd3h7vakzxcnzjh6tbim,"" +0x88441DCD4Bc985965e69ecf5A454B04DC84eD876,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.8933402603,1671183135,bafkreig3kos26pj3nk3b4gb2brdrdiwmb2fa47grtrmauy3ejshyxlpexy,"" +0x245b0A88060D9e992e7950922c86FEA91dD40FdE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.6072429401,1671183188,bafkreihk6dt6txudeqau4r5ly7ybtzuqxh27ex54euad224gdjbm4n4ngm,"" +0x670f2a946F731C6A1Aede41f27f2Fd4a378AbB5D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.74257786,1671183242,bafkreihcjlclbcvdlzxmuo2ncyh2uyytsyijxl5ndbha74xxy3zsw6yowq,"" +0x3DA952Ccef2b63bf708f7f78A0ED333FaA5cDaF7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.84787476,1671183300,bafkreidmgx3y4lmjj63bbr2lk65e7io6skl2l4pkfgtro6rjf5j3tnvdum,"" +0xB5B44C678659035cb6ff87E9F1393b54A4d0A335,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.62555928,1671183358,bafkreicxb64zzfmauktfdh3h2dz3k2yqur4nufaonhbextmqcl7go4x2k4,"" +0x3516175B2922dC53A8607E94ad34aEC9506011F5,,,,,,,,,,,1,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,1000,1671183370,bafkreififookfdppqre33dqgfb5yz6fcvh5uxrhxsawrwi4vijopghmlvq,"" +0x0064F043786e8c597d6565FCBF4F0989Bdd0F9A3,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,1,,,,,,,,,1,1,,,,,,43.40180377005323,1671183430,bafkreif25oppw4ul5ioazhguue5ya4ibhg5f4zj2je7xdw5vf2q63hv35a,"" +0xA1118D2663D83857e858F12a9cE29D8FAa2ef62F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671183451,bafkreig42ea5oyczaly4uznoe3mfumlo6wkzumquaxxq3e6brbpi46opzq,"" +0x608109470AfC9857561F9E33a3EfBE2547902302,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183508,bafkreicgotv6l5plb3ece2mvh2dok5kbt2pqtp2sbhbfpyrhgpnjbpx6pi,"" +0xdAf45073A54CF4Afc3122BF39D26E9620192f1B4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.445030880635007,1671183556,bafkreiadnkzhc3ycedpeixrdhbl2rpamz3dvkvo5osudadguxpt37sld44,"" +0xccB5D53c4721c008a65Cc02F5dF10A9cE67C6044,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183562,bafkreiaq2ixtm7klzvkvtn4zkympbva2gevxdlljivqenoxj67j7abnzja,"" +0x0426B2F8E43DeB95AD7A840F8c2a517Ee33c6FB1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671183620,bafkreigbpuyaz4m26fa4v76yqjso6b3jheibkvwagwtoyrer33butpau4a,"" +0x5acAd6E75bf6Ddd63aD5D88DbC9852bA401d8d02,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671183670,bafkreih6zv7hzvnxtq6ug5nzwsnchazv3ylblmnkjewbmwksnsaox5r5du,"" +0xdc78107155918e230246439E4159FeA4c477eAE9,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,26000,1671183744,bafkreid7pvb57yuu5z7cn4kupfzxim7n33vnpxob4x4ohurord5yvid2s4,"" +0xD22C848BE105e341b8bbC2245B5492B02D6A11F4,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671183828,bafkreic273toi24okfnq4h5tn26cimdy6irm7sohpz7ndkzzll3osk4dhi,"" +0xB49806Cf8DcDB108D318d6f4F7ab087851445D94,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,18360.64542231,1671183896,bafkreicdwaj2ymditjmpuc2neaco7eqh3lifjrbfcb6bvzpmndwos65bzy,"" +0xf660623b6Cb27c161C7B98857b994362Cf58530d,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,0.5,1671183904,bafkreiconjfge7p6khsbe3hjzlxktrvg3wzv2fdmpbxqoydybzzyyxy2dm,"" +0xA249ED6B533E811E3967205B49A82C6b092F8D25,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,0.5,1671183944,bafkreiag3zm6nzwpnigxrf6hmdm3aalt7znauqitxvka4nngnepmvjnbii,"" +0x825df1f29aD0efbFA11E4175fc8a9Ef28136e6Ff,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,0.1074,1671184078,QmNtzUmK4H1MyWkUnWD8CMZXKaVySqYHDiV63vaP4M9Npb,"" +0x637Bb85f830CFae4b5f1Ae83919cCA896c1fB6cC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,6,10,13,,0.004999028541701285,1671185054,bafkreietv46cubihtf2nm7l6a4rsmsozbuey4hleujye4cfn4wsus64cvm,"" +0xCE95728d52bA3d54AD62959240c5eeccc2975B57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,5,,2,,,0.3762410339185059,1671185184,bafkreif7hc3ejo36jxaaseli5pgzxceqhdb5ulbpvx47ig3nbsks4z7zfm,"" +0x1D04e429E74fb808767f40280F93a904ff091954,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1074,1671185224,bafkreibtbrof3pp5ukkpjdmooijr5vg5r374ipwdlqeiwheqlb7g7qanuq,"" +0xEE2c2018eA41b7bF2F95E4Cc4cCD65d98f6945e0,,,,,,,,,,,50,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,0.648721518583398,1671185798,bafkreiddmibom43mrc52wdv6rtvgy2uudmr3hncfw4flie7ejfqvhao5d4,"" +0xcc16426C8a83AF0719C18bce84A7d66336A74507,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671185888,bafkreia2kb2u4ch4c5cg3hmddlr55z5hjciwzxdizbgcip3i7b6yjeun5u,"" +0xb51494CF55127Ad1dcE2f0fBC2518FD51b43A3fF,,,,,,,,,70,,,10,,,,10,10,,,,,,,,,,,,,,,,,,,,,,,,0.7602896779573454,1671186037,bafkreieu3ltj4dsaybxakyc3qobvykvq7zwqgtpfvh3tjhxuif2tiyazxq,"" +0x30bcF4C98e6967EB7e9A2166DF9A9b95848881f2,,,,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10746689,1671186824,bafkreigfy2ea7cyk4bzvo75txdea7zgyznq72un5j5tux66jvagm5nvuz4,"" +0xfC55274D4B5e885180403584Bc9A3B68022B8a25,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,2,,,,,,1,1671187134,bafkreie63m3s6kbpc37bph7rpms2bvc6hijmw7v7qzj62w6dxpvc27dfey,"" +0x3be9909766f2D5c3bf3e587fF4E53790ba4E40aF,1,1,1,2,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1671187208,bafkreifpoffbcxpjqe7kxfjsakklmddeka4ccpp774egg5jms5bntkxbm4,"" +0x6F0c3105444e9Ad288ed64674C12420593A1Efb2,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.08148075143835591,1671187233,bafkreien6bk6wudcvpsjo4c7oaiaezcbh5bcfwklifroby5muaqrycqhm4,"" +0x0D140f62E02879f8801a21B91CaC302aDe8bF7C0,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,514.40773427,1671187678,bafkreielvuqkmd7nkji3p62tt6cjph3urthgfdz3h45djt5kfn42bfwjhm,"" +0x957e05840d80a31A26df11eE2DF13cc894b588bb,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.000067624977621013,1671188400,bafkreie3f3c3jet2inwxkinmltlwnaezhedpsfny2sfgnrejtzneek2y2i,"" +0xe0a013A77C2eFEF233dBcF2175fc2681bAee47e5,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3007026484074228,1671188473,bafkreidrbs3e2oz2iwqvh6eyrddi5anheqoczhmegj3ja2ixih3zyofome,"" +0x7d55507f7D96b373706C0131FFFbc4Ffdcb3B6f6,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671188520,bafkreiezw5pscevdn4j25bgztpivccdhfmaafhnvntmaliomuwz2zkxhzy,"" +0x66373b380ee7ef78541ed93dA685E41Df47a96Fc,,,,,,,,,,,15000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13761.295,1671188554,bafkreibpuyy5gkyda5shgy44y4ywn6dfgctbtetjshlpsqsbj3ilueoa6q,"" +0xcb02Bd278Da4F0d2385aD47622A80c844EF355A7,,,,,,,,,,,4000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2998,1671188961,bafkreieuv4qwutsytjnbrxffklbakm3kwf7rcsdaxwzvr43v374of46khq,"" +0xb0D11De0F31a33684FBdbA3dbf008992ff418810,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,525,,,,,,525.3397644421311,1671189524,bafkreihuu5nlmgqo3izb3thpfgplfpzlfg4rbbfwp3u6agco3ityzdgygm,"" +0x9E080f9bbB6C1DC91A29056c6007A0A529Ca45Bc,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,,,0.74,1671189697,bafkreicmihiu53q7xm6xaop4365wnffvptchvoihqgc3q7tkcpchti5e7a,"" +0x492b4a8e71E4072d59d93B127f246055BbE82A5B,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,1.26,1671190424,bafkreibau3paldtg67wlj4te736x2ea3ad65fdem6hmryq3bvgasnt2ioi,"" +0x77259366bA576CB32c3cCaa211192d276352E3AD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,0.03277019550513782,1671190581,bafkreig4z346by6ivtwuu7gv7smbkhtru5ljavc7qgr465prze7mwphpqu,"" +0xed3e1B62ab2E4E0CD42EEa5F3CC8Fda33dBccaD6,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,3601.0846721207517,1671190814,bafkreiefl5v26b7wjfbbtm75bndsu2h7znzdnakgosaqsg255zgnbxcvqq,"" +0x48A9789428F2067338D02B1EF3612DF64F05FeB7,1,1,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.94976,1671191147,bafkreigb2wt3wljvdwgualqoxx4id2mjkrm52p3pwapal4usngeclk6e4u,"" +0x80131e57f111F2354A86Bc2Af2fEA414eA9C66AF,1,1,,,1,1,1,2,3,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,0.86,1671191183,bafkreiff6rcxe7h6iktjgdlvvzwnuxlrvjm5z53u3b3xhu75wozyvrc5ha,"" +0xd007058e9b58E74C33c6bF6fbCd38BaAB813cBB6,,,,,,,,,,,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,101344,1671191820,bafkreifzikuiyfdxqmqx3dsvjjatnqm32u4breqrlqjddapzplgqo6lnky,"" +0x7D5A56B2BF39D8B35DF46905EDf069B6E49A0265,4,2,3,5,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.03777777,1671192137,bafkreihrxawsug5lc375ekxtyt7a2bka5ghfs44nqkmxfehdkgue2k4dda,"" +0xE73052aA21B655c70F4Aaa1F947f793C4bF7a95D,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0042322436732152,1671192345,bafkreidjo4srjmzh5qekeiwnmb3xirms2iapv6ranmf5ukp5g6hp3l7lbi,"" +0x15668eEE7F45387ffF4020A7E9dcD3d3d2968477,,1,1,1,1,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.74,1671192573,bafkreiemnksg6wfvnmuz33gybujhw2wipsindwdcbhgmykprhlvflj5ffa,"" +0xafb46441AEc7a2c9625c5c89edCB863671e310C8,2,,,1,,1,2,1,1,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.32786783305669553,1671192960,bafkreigyb53it4cy6scxewnot65bm7lkpkhzx26ufbedvhsehvu3e55pfm,"" +0x400b06b7236F51Bc2B4a3e88C3bCc0E8cca04202,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5387.433149710227,1671193157,bafkreiegppwlhpy4amtxbgr2un5lz5mdr4qeavzjgwqo7kobu3ywfbggrm,"" +0x0b4eE1BDA25C3aA420b74acb6E3877D6DC868a6c,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.09265654519532524,1671193385,bafkreihpkdfwz2f3kpl2fboa67l7txsugdpumvudtvjwvk6ukho3kdwhyq,"" +0xA635196147B6e53cF8f1C48D28b887F45A8A4e4d,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671193519,bafkreicg7wpz3yab4jybf2ecoaaahtd5bi2m6qflfll7uatqmkfsyakqki,"" +0xe7710D16410ec069f66d5bA3e5E700278e18B22a,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10733246908675693,1671193560,bafkreib65iltaw5z3cylrm2y2qlr354jv4guwe5xkqdtc5zbqa5gpj7lji,"" +0x05087ADd640Eecad416E66e6DdD97A0c085F96d8,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671193592,bafkreif4btv6hrkhkfti36sjc3n4ylj5zv77se2acuplf5tenbb2pyy4y4,"" +0xbC1500dAafF721f626Ef1a4F1a8C4e333648c5A4,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5.373783960563614,1671193601,bafkreidhfzy4gnruzjyzj37dac5cjvstzeyae75rgieizzedu33djcu6om,"" +0x59cc785DAD9E98a84Ce47388E09220Ab0E4396a4,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,630.8813065135042,1671193655,bafkreifdxrjk53u6xbndmkvr5si63qo4j6blueugypomfansxfoaoyqs5a,"" +0x088A38c2C22D4766f3864D1309A4bE4d5573712C,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671193700,bafkreicfzcw4xvjsowghaml7milphyug7ruov4qbr7ymlaljq4dqdpqoym,"" +0xd020E6a76bBe0139ec231Cc2C3160810048df405,,,,,,,,,,,,,100000,,,,,,,,,,,,,,,,,,,,,,,,,,,,15339.84392112661,1671193873,bafkreieaus7cvnoel6bapvwbqiuhhlkfdylioe553vghtimyopmxzrak3i,"" +0x6A8ae9F1EBEfd842DC7E9eA68d48D0a9a753D5b4,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.2453614711826217,1671194551,bafkreigfqd4ni3op5cmg3vff7juundgf5j2ksmdefhmwuvk3remtchtury,"" +0x6882726dfcC0fc223B63227270da89BD5e559e37,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.016950803702227735,1671195080,bafkreiej7ophru3thgy2hlmlsl4gmipntmytugfiwnp2sacfs23zxioati,"" +0xBaC7fF48e7c958644258b8451e7392d229024BE8,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.04256805584064915,1671195159,bafkreidhph4e7snw5pgzvyvzyaw337m5regc3mswu5zkjkmtket46ksjou,"" +0x2B6E0ccff545c428CeB31C539d00Acf7aC9b00B1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10977578776915364,1671195458,bafkreidtlmb2s6smie2cdai4x4bostj7v347zm75zs4qhwph4ritjo3o6e,"" +0x09b6fB5d910d675c6B12CE7906CB6cA30BCBFDb3,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.517242280040473,1671195522,bafkreifdqbn7s6k2j6mvze5vlytyvfp6aepjbatvetaokk6esjbeyxptoq,"" +0x7bcdf76694d630F32Cc156520D94ea8398F94571,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.13620112,1671195660,bafkreidtofy3c4jdvribo2xpuepk44wqwazfsuvko2wddl2om2ckbn6wym,"" +0x3420C19BCd121E6fEbCC20Fd502B14A71C2F857B,1001,1,1,,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.19504697,1671196018,bafkreif4qilfrgjj7ktpcoftpuwshpetbhi2ywvubbiupttf7kl6lqdpee,"" +0x8d58eA8a2BdFC72B5F0C0cfd2473a4D92F998902,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,109.277396454534,1671196038,bafkreidasjivvpwvlowerj6peggtexbmp6l5q53btus34wmiuydamdnqoe,"" +0xa8fA325872A3929fa7a3BBB6bc7CcfCBAAdF2Cfb,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.52,1671196040,bafkreihvuij4ou5umozxosmlxmvnsrok3hwpf2aszkp3fo4l4kh47ee6yq,"" +0x6C7f3cdd089fcFF4F24C78157A92C488D011d91B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1.001786591030274,1671196218,bafkreicevdzb52zcbpwt3vtnijyia7ob7isen2uhevom2owqdslxcn5opu,"" +0x05f7F81Ef8b158be44b96A3a3Bd5351BdF28946c,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.3973101599657906,1671196406,bafkreiedzjwgjyounmqdqwzs6kovgudvofwbqmrcsuf4i3avabrg2x7ocu,"" +0xCBb54Eda2048b57d1b0Afb19a73948E9D58B6973,,,,,,,,,,,1,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,316.54980272731285,1671196589,bafkreighyui76vogs4jqcp2m66tc5lxt4l5hi7hrs5roy2cvav3h2th2mi,"" +0x3664aDf16C2a4691E21EFdFCDde334891c136AbF,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,388.856234024717,1671197379,bafkreialyqcqeof2656agglyabof3l3gdljn735wrnnwoinxgjs7wm22e4,"" +0x5B0c276E9Dc16B113b1EE36bfA4f1113750A35a3,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,5,,3,,105.942079609764,1671197785,bafkreiggynsquq666rq56qhnt2i47pwtnvbvkquwgb6hrrse3drz5vqgwm,"" +0xE2294705AA121D149F04d3c5916019BF3A403169,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11974.363363923994,1671197999,bafkreif5fln5ndppf547zx2rkmvzqtuoxoh5gygpi2qk7u2slymk7nvl6y,"" +0x9ECb420c8177FD28495052439e0B032b94291c91,,,,,,,,,,,54,,46,,,,,,,,,,,,,,,,,,,,,,,,,,,,64357.6354,1671198144,bafkreifkt5y6l6knew3r4i7lvi4zooawayf6a7aermivs7i7jqgzznbxfm,"" +0xfd12bCC3026B2BfBC42F7A2944450A9b2C3EcAC7,,,,,,,,,,,11,,,,,17,,,,,,,72,,,,,,,,,,,,,,,,,,115521.15,1671198299,bafkreih7e2ynoin5qoqiecb7z6tgdmfipehwai3owgwd5giij3bj22kgqu,"" +0x5d977C17b93cF836f63e3E38751f8E52afA711A5,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,58926.21,1671198375,bafkreib7gghlssksjsnxkyjlor6j4ku762d3vdo3gr6o3fbd4yeslg3oje,"" +0x0678e836C26AbcFcd2b7e49559aA1a8B0f3ad36A,3,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,,1,1,,,1,,,,,,,,,,,,,,,0.14547604914987,1671198464,bafkreigjjmdn5fh4i5dj4vfts2sjrqkzsptek54orjz3dmg5lqxsiiirdm,"" +0x82F23De5A474fC904041c357576aFE53c30dD250,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,5097.333167065434,1671198564,bafkreid4um3t7akealkk3ajqqda2g65y4dwmz2mcvqj6h3f3ztnmhoexbu,"" +0xca833FCC545c8678F23514907e4CDB31073fAE41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,4940,1671199891,bafkreifqgg45vg5yjiadg3gdaujspdbukg4h5iao3c7x2sg5yn53emzlh4,"" +0xF8e9a3E9B4054D1ae3eEe530C1b558885cdC6D9F,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,21.73637850917692,1671199942,bafkreif4yxlo7nirjnnrjmhl2t2xu6egcwv2jhwgxeyqnb5svkvlshlpja,"" +0x4cB7BB7B9606a0F03E46229963766cEDBde1880e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,11592.784020874786,1671199983,bafkreidrdg5inqn3antalp5v6rgyhcsoxksgh4fehmenzgerqrmkpl5vem,"" +0x96e5478e73c4BEd24dd6ce1874105c3832b31a6B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7487.891795143783,1671201819,bafkreidndhp5outqg35mzxbygwmkue3knjv5cyia3xavagp5lqi56rror4,"" +0xE748d8aF8f0088dbF8CA7821929cAE297c1a5da1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7496358969248083,1671202408,bafkreibfgf2y4ukqw24anyuaiajlgz53hw3m77h46e2kcugcpt2jtuib5i,"" +0x9F9EBCE72C0715CdbAD4d589986EB22F6782A1CE,1,1,1,1,,2,1,1,,,,,,,1,,1,,,,,1,3,,,,,,,,,,,,,,,,,,0.13509970429591345,1671202838,bafkreib7rzfwz6tzmzxa257eczrnxg2or3vns2ha7lhxinmbpxcg7cusiu,"" +0x2FE2ceA1dc2Ad8Eb8a3913C91c33C338aafdFb40,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,29054.08837171794,1671203015,bafkreiecgnhndf4s4o27db4nzburk6sc3xv2run3o6y6qox6g6bpkpa6y4,"" +0x2127dBF1B8b7022Cba6Ddc600BA7CeaFfEfd451B,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50039.87127211457,1671203104,bafkreifhu2lxtxwvn4ztmlwm5vyjlx3lqcc7hgyqvkmjnuvicxhzkjkwki,"" +0xeb0DA32C9d1aA1aAbf37798B347638E57bfc6a6a,,,,,,,,,,,2,,,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,500.26748064,1671203217,bafkreicxchux7ov226vh7ca3hfjcfu7weqfoeibdah3z5dimoal6zukap4,"" +0x2EFDA14A0bdF5629aC06Bb1fd70Aa09A7d382a3E,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,,,,,,,50,,,,,,1299.2708451203305,1671203697,bafkreicr5x6hh6ym47stqursqohrgdexxluktzbuhqpbvyc5gi6gkps5xu,"" +0x5da896f87CA23a2A0c9b411274F997180618F1EB,,,,,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,637.5300101273529,1671203766,bafkreie5ine26mmqhjt4mqus6pqbrjcgm6aypvf533bfg65k4kqily65nq,"" +0xf843B6F5E0376483273B92E88caa20b79aaB46eF,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,,,,,,,,847.6853764291736,1671203876,bafkreigyxcz3qr4lvzaicr7kabdz4uhyszegloygmpwnynmisvwcuek2j4,"" +0x79b6327487E1105E747656715b4cbbD38667EaEE,1,1,1,,,,1,,,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,2,0.04786973608421607,1671203886,bafkreia6344444536k2sv74h2fgziv54yvwlpnpv2htvdrpvrxwny4bioq,"" +0xeAAB59269bD1bA8522E8e5E0FE510F7aa4d47A09,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,32.47867182247146,1671204183,bafkreic6k5zmo6niypkv7br3m7b52q4df4k6gw5ea32a6oymrxnekox2ru,"" +0x44c616d081e728189d2c1afA794BBC8dC0972837,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,,,,,100.00163217743646,1671204283,bafkreie2de3yzr6leuf6dw3yq7bdrjipihfii4hnrjrkyd252sgxytekam,"" +0x700B46F4CdA1d668920C105247291C640E521F0c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,0.4437556986248575,1671204298,bafkreig4kedegv7bvzazclochtj242gtgjna7z7z2s4g2fmlqf5vteumre,"" +0xbA86E23E64828781A43b71647cC2D2a32BfE8890,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2.6612,1671204533,bafkreig5plza74fgtdzu3mye62h5ayc4g4icsmzymfp2snlriz5hovdbrm,"" +0x0765b64e5c831b0DB47eB50689FAF27640581F46,,,,,,,,,,,1,,,,,1,,,,,,,1,,,,,,,,,,,,,1,,,,,1.34968,1671204583,bafkreifx7gu7pbchnrpu5akw4ypxzrgvx64kvqoakhtobes5jkmugntpza,"" +0x56C0A595C18bfac8498f0a111321a6c13F0C6c8F,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,5,1671204683,bafkreiastp2xwn5oypk5o5vx3eqttpddeua3o7sxqqpmdbxcskrwpdhoae,"OG, first gen BAYC derivative founder. Smart as hell. " +0xC9fF715ff5fDE21a10c8054085a756ce098fE896,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.349027752954284,1671204748,bafkreibixdfitecyxgajrrbsezs66f73ivvkoax3oajvqf3lxa5gtmcpn4,"" +0x96cd55CDd63F1034591b11A9003eAf16e7fe715d,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2256.600830942315,1671205499,bafkreibcoznyjefxwfnzttx44ga6xs2ksifbh5rqqwzqdvq6wtpzysz7jq,"" +0x429caDA80d5151BEe07478Aa3998d7fF662c934a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1975.1090068795834,1671205499,bafkreicrtzrdzlq2lzu52w3heqezoy2e2mvxpu4h6vncgpjbc7o3gxfi5i,"" +0xcbf14703817ea9BcD920c45e073E43720220B971,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37347.998309205395,1671206097,bafkreibonnddz6utw3xyjlmubpblhoyirnyiusk2lcjuuvla43o7lzizvi,"Cause I don't care who's popular, and want to choose the best person." +0xec47741B1102b74C51cd673Fe5572719aDd8a838,,,,,11550,,,,,,,,8700,,,5700,,,,5000,,,7500,,8700,,,,,5000,,,,,5000,,,,,,54130.600902104394,1671206339,bafkreicdkhc65eu3ggu5mhpmxvj4jneqwht6re4wwxfr4w6rjyiuorhsam,"" +0x9b2445f17BDa06F29375feD1B00A966aC3EAeA6b,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6995075402796984,1671206651,bafkreibc3uxxmgrqobsaaiisqp3y4l6466fvkvfmnqltp4b45krfz5lnie,"" +0xA8D57c23cD6709d47efa8760c50Cae13008e1BAf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,102,,,,,,1.1860387250983817,1671206730,bafkreiaqy4ubs2qktq2dyekc3ohih6ln6jb6wno3qxhp342iq7ezczwi6i,"" +0xDB561628fcaC1f08Da4C3A0ab130705d542b2161,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,101.01022129,1671206739,bafkreigcoj4eddlu2t2we7ztdv4wscip2frlf2qh2zj4hgqvck4csawvwq,"" +0xCBA711BEF21496Cfd66323d9AEA8C8EFd0F43e9d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.2553455619303106,1671206804,bafkreici4gqu3pz6xhyh2bgypwsn7sn3wz3i6pwyqs2pnmlxiw7h4o6cly,"" +0x302Cb4B44dAD92448078e82C04b033704D558EF7,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,35.8684240097027,1671206959,bafkreico2ryn4gjzwu2rj7shkufti3lzzrscplvnra6ss4aov3zuonwocy,"" +0x681a8d5212855d6953BA425f8D6E94cCCaF26D5C,,,,,,,,,,,,,25,,,,,,,75,,,,,,,,,,,,,,,,,,,,,5803.43,1671207283,bafkreiaf6yocmheoc3lesohiofhbcdwuy56nmsdpr4vyojhprl4qkrkh3q,"" +0x46f374Ac4a4E6779973812e051e72d9d6379e756,,,,,,,,,,,,,25,,,,,,,75,,,,,,,,,,,,,,,,,,,,,2121.2305254048565,1671207422,bafkreifjfpojx2wyde4delt25c3xyikktfc3lpa5lhwuqbmbgz7ykl6wna,"" +0x83C9440dc34DA00c47A0d4dC2b598d7BDB1b53F7,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,1.7676241269289703,1671207481,bafkreibzk4rrxfw7yo3wfjrjvgpntezi744numrlkfuonli3us2bivqfhe,"" +0x2BBc8FC8DF4B96Bb0Ab8090C15e0128176328465,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,29.34747896430588,1671207506,bafkreigy4f6grqrofrcyswiy5w5yddjc26cc7semipqvnltc3s3d2wnime,"" +0x919537727FB3fdb5D6646bE93D615122ffA6ed20,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,1825.5232547186997,1671207541,bafkreiebdt742x5gpayklwzzigm2t7my5tps3bcg2kgecc5az43zrlw2w4,"" +0x2D73dBD5C9b9CCc1AC273F155a7A335A88ED51c3,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,2898,1671207581,bafkreidqv3gazxorxlwkakhi6rowtf4odob2dp4mdk7r7lohswqo4tyh4a,"" +0x40DE3299Bd8a10D8Ac3f32C1A55DE40640cF9B75,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.1837882513481409,1671208032,bafkreicqlak6qsrnr6zfdynznte2wrh5a5pcetpdhchkve5prhkf5zbvwu,"" +0x49d1978DCe1a788A0e33Ac59C004e5fEe4093e95,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,0.51827,1671208076,bafkreiezajln4c7pbkmoblrafawsetza34jwtqtsalzsjieacvrdvrc4zy,"" +0x36b8A824dce619575067A5a012dc4F7434953F43,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84.42308041,1671208403,bafkreihonvkvtf7muyb36d2xkvdpuyw4e3b2us24253lzy6rgj7apxuwnu,"" +0xb197bcfd992ED6c07eFfe2ad662d63706bF10762,,,,,1,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,0.66434016,1671208579,bafkreih3eo6kijowmitcpgygvswoskuxskuwy3vinrztriz67knyo4es4i,"" +0xfdc4ef8a7Be1ddfe918A0D4822273b5FB01a33f5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,69,,,,,0.0973639753565,1671209602,bafkreifxt5henn5zgdhq5jjenlqi2mai7mmrlz75wpzkyinmkr7oaesara,"Madar bhai's referral." +0xC4a0B44448C98f14a498e8BF98A1FC8f8Dbe2b66,,,,20,,,,,,,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671209681,bafkreib4e47kzx5fw4bmci4c7l5zmoslkdzuicxq2owehyq5pu62zrr4rq,"" +0xed1426A8B06bD1328C3640d94e70E8c04f42F72e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671209886,bafkreifs2rpvvhbpft7yx2nefqgaiawohi4sq6fyw62ulqtfwmyhbpnqd4,"" +0xd73F607911967e716E9c275e71831d90C22E9bC2,,,1,,,1,,1,,,,,,,,,,,,1,3,,,,,,,,,,,,,,,,,,,,0.65,1671210151,bafkreih65e3jfde4nqlild2gb65wbgf4xwmdtrevp64cy2hl66bjobkhwq,"" +0x26d82ECacE3eA30A8F61CEc406aD8b8df5c7DE2d,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.09437993920357,1671210162,bafkreie6rc6pidrcopqgkzuls2zjsplxkzq5utftnb4bamx2nlzay5wj2m,"" +0xDc9C5e34959eC3643AF1e1D34A83D6b251AAb1eF,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.01381927,1671210212,bafkreialvjpvv3lnr243yesyb4jipehwb4b5qnywwl4jthiz2tdhd3prde,"" +0x6bA11B425C35064D841088d2094Cf0A910E27064,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,,,,,12992,1671210759,bafkreicqbqgzn5zl6bxrbdga7eta4gv2zkmwlwd6lp57atchzgbrzsbtgy,"" +0x2957C2968ebcB91f5683768a9bdC468d08C2a2C2,,,,1,,1,,,,,,,,1,,,1,,,,,,,,,1,,,,,,,1,,,,,,,,1,1671210851,bafkreifqcoado2plvys5w2kvvlpjsamqt2hkjdvqxzh3vw25luz5m7fskm,"" +0x90DF04c7C80FC13fCBd24d7bfd9E9D1DAb119F0d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,10950,1671210944,bafkreib6o5outdm5visjazhnc6e3etd74moxnco2cqu2fkdjj7eayep7ny,"" +0x940B06e1deAB94a79545Fad26Fc80b0593Cf3ef6,,,,,,,,,,,,,,,,,,,,,,,,,,12363,,,,,,,,,,,,,,,12363.4388340838,1671210965,bafkreidv6lvhxwtfltonxmjgmutyvmmhvgchp6rsi75lct34jkqnj34icy,"NoveCrypto has always been a strong voice for the Ape community and helped to expand its diversity." +0x19D7A7086E3a96E0aa783E59594eFf743eb12aCf,,,,1,,,,,,,,,1,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,1,1671211085,bafkreigaggrsafg32z5bpvwzzdcqmzvzuxzqplw7lxl3ox3sukpspscmha,"" +0x6EC03eE16bcD001A73B18331b954542368F79e45,10,8,,10,7,5,,,5,,,,,,,,4,,,,,,,2,,,,,,,,,,4,,1,1,1,1,1,0.1,1671211285,bafkreiaenjkfw7pwambzixambgx2t4qesavv4kflecvgf2p4hjgxrqhj6a,"" +0xB13Ab448612ebDe40D25bA8E229760f70120C0Ab,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19617,,,,,19617.018208970716,1671211969,bafkreidsf2qwstcz2woo7zr5pwslcxblbwsudev3hyyh6gwadnmbiggnve,"" +0xA24a81bCeBBEEB8E6687BABF99Bb4d0F72C22aF5,,,1,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,0.08572442165927624,1671212476,bafkreibsixdgifphw24zxdwitxozy7vh2lximv57jibkbfb56bnxsvrmb4,"" +0x7eb413211a9DE1cd2FE8b8Bb6055636c43F7d206,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,313559.07832660264,1671213805,bafkreib7iyr3i4yvt6zmyk7rycxrfma4mslgsq32qf7qcijufqfzu54vbi,"" +0xbb59f8ce665d238A9e8D942172D283ba87061F6F,,,,,,,,,,,,,2900,,,,,,,,,,,,,,,,,,,,,,,,,,,,2904.598055979192,1671214214,bafkreihbambspg2k45tfqcv3wiexqpgtpu2pxxinjcawru5aof7gdpnkr4,"" +0x9740F84Ff965f13Cd8C64B3E375CDf4dD5079e4A,,,,,,,,,66,,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,3016.0218223101856,1671214784,bafkreidiyyafmresrc2n2js3yaii2o6plphgihscva533aaoetqb36z6h4,"" +0xe26E7F7D5f8B554AaaA1564437708B0F73eF035D,,,,10,,,,,,,,,10,,,,,,,,,,,,,,,1,,,,,,,,,,,,,13696.87380755508,1671215035,bafkreig7jgmkt72mrr6u3a35dpb7667ed2qzs7izm7zuhoako7uifiarte,"" +0x7AA46b228d0a865bA1Bb473f935079cECA20e107,,,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,,,,,,,,,,,10956.928028402404,1671215052,bafkreidepsiz34ttgbrhjd2sgtpvwbapjscz5vfmotofrhm2ylunk6bb5q,"Let's go Gary!" +0x4650D0c9E3148A8f66AF374820AA2eCa0A47DAD4,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0657727312992504,1671215199,bafkreibtswbi2byxqcqcjsrbn3cgbc2pljpccnkeahjzeb2ugc7wrdlgta,"" +0x92655644842aE1c96d4439a4eD9f56d57089CC74,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,100,1671215228,bafkreicmo2iy2o23whegbv6cb425p3x2crh6mxizuje7r2ndnmqah45z4u,"" +0x5c149318E8295F398bB555dE04fe8753688782C8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2.053033639470262,1671215374,bafkreihl6z725qw3o5dg2qnitrdkq5qv75ari4mwzvbpozv5gzksqq32am,"" +0x805C36F06e1f1233aA9617932431C425d5385Abc,,,,1,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,4033.7466748236775,1671215569,bafkreif4tdb3kou3bclcnmjgmlkjjvh6xepurvdb4e4nwsb4agipfapwqy,"" +0x3FcD271Ef09476C4dE09Ac4e500a8E79008aeDcf,,,,3,,,,,,,2,,2,,,,,1,,,,,1,,1,1,,,,,,,,1,2,1,,,,,1.5,1671216275,bafkreihyyvnwjffkozur2kog4nmxljlkxxddtvpm7yo23fssoytaskghvq,"" +0xF1A5e8075fBBDdF495a2A18E5De377B7741a6350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,1,1671216450,bafkreieclero74uy5eis5gbm62moms5fagx5x67nzir3ogtahuoh5gnjca,"" +0x9550bFEbaa3a2b17be89B90c607ac07B3Ad8C630,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,14311.35,1671216529,bafkreiemr66h7eq6tgucxbds2lczffyo74acznqy4cxvhtypj3onkauz6e,"" +0x2584Cd4EaC415B8fc5Acc02Cc6E552b13110592F,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0000889965265607,1671216690,bafkreiedc6pwsbjhmda7uxjuyxk7bmpxt66uflomm26uqcodlmiviqc5gi,"" +0x6371D2309B7F79bB0FCaa6e7E8CeEEf8f1D4C484,,,,,,,,,,,,,,,,52,,,,,,,,,,,,,,,,,,,,,,,,,52.949334291317186,1671217202,bafkreibgcj5kjhkc66xq4lrsbjcwn2jjatrad433a44nkqk6dfylwjkj24,"" +0x268C824BE6856348A0c8A57F3F14573E16057FDD,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2.8724260212838457,1671217570,bafkreidfdqpwkvuz3udktngcnezcpgd6djaiu2mwflstcftbrfc7wyt2gu,"" +0x2e8c4a0D5e0Ee4595e8c96B1570dfdEf77998A9A,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2064.616453126144,1671217669,bafkreic7omdlrehanp5y6ap6ryggmacir43hwrlprmezusyuhmwq4l6cni,"" +0xe452D49486a37247040c7fE045eba3a55338FC70,,1,,,1,,,,1,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,1.0273526092158547,1671217945,bafkreif2oglvbrpd666xuffosfwt6ywo7xbaophpmskdoihwktakvg4soi,"" +0xf3A11F948FfC1ec0becF7961d9A0C013249A573C,,,,,1,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,2.32908743782098,1671218184,bafkreihtglnngtpzbibrpvv6ngccso7cweovadwqqhpvvwtfdpvsbsmrvm,"" +0x3A8D75b79a27d75107c697301E8120D6ee47535d,1,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.841923293145493,1671218482,bafkreicl5wzmsmodk75ruxclcwb2vsbpixvlxkz33b4c3gdcnnsqz6kun4,"" +0x7279F93A1C383743Fbcbb0730D9C7623BaC7e3A4,,,1,,,,,1,,1,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,1.2943157191481065,1671218789,bafkreieabmsvpxrxaz7roomehj4uvyqzjylp66c7mbxwwsykrnxcdd4ojy,"" +0x547d7Ef04c005a44a3cC89109D2CC78c85679586,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671218822,bafkreickvg5pxxodjyj3nqgasqesct5d4d47fvalmvkzzjtgimllda76qq,"" +0x27dc8063CAB466c901E554dA5113d0bE42D82D06,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671218907,bafkreicmzu6nvmai6tgya2esxujxymijzupiutb4jzlxlvnb4khspbzwi4,"" +0x9a74eC99Bd88ECA680485dA7F32FCa05Af375dcF,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1,,,,,0.43340849600165005,1671220292,bafkreicvlml6qumzcstg7evav34da47mdbtieuryryszi2rwr5tjkyyos4,"" +0x703746902985E6ca15d550B483Ae76DCf040B96f,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042.9156456662424,1671220419,bafkreicndvrfbwssrzkfq5ghneribptko4nhbabaysvhrec5qtxndg6you,"" +0x747B4638BE368fad22139948f3f08a7Ed4244A8f,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.72549376671005,1671220530,bafkreibj4wq3tolfwzjtvuoas7fxgfouu2lrna3fop2ibankkctglmaueu,"" +0x08e84a9fa044dadc4a2329834495eE12AD0845d9,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.8987945341781245,1671220782,bafkreihg7t7wr6uujnpeggodbadw2snkevcmvcelvousvjw3evkgyrsxra,"" +0x38F0C7d7e92422B68f2d5b4a388c05Df6D531F52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.1538404847148487,1671220941,bafkreifg3okchlp3sodlsmicznsxcj7svbhbw7hr7raplbhgbi5d2aqydq,"" +0xCC459846FF7587A972CaEFF28315c8D20390c4bd,,,,1,1,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1.1767782162315465,1671220946,bafkreifeo7yuhk5wxr4bqwrdpprqpyf7ch5mnv6o66nq7tpaaphcubcbma,"" +0xA37FbD2264b48ED56Dd7dE8B9B83DB35561700eF,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,41052.657273307166,1671221046,bafkreige7bxuacdvmqiuxozm2kodoomofz3qoef2u4yaqphgdjyafqvvxy,"" +0x78b74016f06EEA3D9b5498aa30f6981F2A01cC84,,,,,,,,,,,3,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,0.5561407619747151,1671221828,bafkreica7yun2nj5yu4fmdsx3phtu6rumeexjpzx4lmh42tt4hrjbkwcna,"" +0x153321Cff12c46A8b94B916fF33DdC684182583c,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042.024008607839,1671222026,bafkreidfskudqvs6sjlat552iks2o7rtbbobebhnodvzimzgg7ina55wym,"" +0x11b3637ab509Bd5F177d1382C8FAF41585edd108,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,51273.74947058975,1671222058,bafkreihjh5txyri6zlo5xhxj7c3wjltohjuooxf6yiltntkys66c6xcj2e,"Please work" +0x1CbD1cd53dD1a91b15adE97F5D78bb54dB598538,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,6,,,,,,,,1,1,7,,0.41018908201563425,1671222386,bafkreifklsek3gvq7mjjgijbrlfe7bv44ie3mhvbm42slmpr7lvlopleqa,"" +0x6854FFFA71A4aE49df700d087D377a297C595386,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.02711050473202231,1671223146,bafkreihctcov2sajmkd5z4fnzpwgfiaavklhc6isojv2r5nk6kscav2tni,"" +0x7baD8c1E1895F22cD594Bab7b0d5C6a2B1c02acA,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4987.378498674448,1671223493,bafkreidxzxzxid6bft2jsdb24lekacvyaiydjzpso73gck2qkgaatfdabe,"" +0xacd32cf13855Db3A1e49e49e1b67206ae5561789,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2000.25,1671223700,bafkreiff2lxlbaojtou6odk7dtzcu3fcdj5vuyxlrxztgkdhnf6cqvdxza,"" +0x66525cFdfE1438a1A130ac83BC7B9500912e31B0,,1,,1,,,,,1,,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,0.2168493754986168,1671224518,bafkreigzp22lfhdhpwtfql2yumonjjg77iddnduvjk3ddlqzlj4lpvxjmy,"" +0x4453796B9cb9F43aeaFd511728Aa738569f6Cf93,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,9278.30676951538,1671227735,bafkreid6rn5mz73vkodkwrfik3x3goswlogx4az37xmirazea4rqvc2uwa,"" +0x285d7b3C4Db8C27C9DfDb08D1808Df205f76866B,,,,,,,,,,,,,10000,,,2000,,,,,,,,,,,,,,,,,,,,,,,,,11743.882657884855,1671230055,bafkreihy6mlcduj3pvidppd52m3d4nu3tde6ptxkmyw6anndrempwuhjze,"" +0x22811cbb477bd2E18313B7113Fc8b66ABe929861,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,24719.718437700954,1671230566,bafkreiaews6attbbqtvxqulkidl7c2yeiia6q74bdgt3grawy7gvyfwxji,"novoboss" +0xa9f1efc2e4D79635B393cd35c5F4993A5fa36d8C,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,138.15225188541865,1671230749,bafkreihwshsipumv3ynbjlrwakirradwtsmsr3qet3wvg2qazamt26zqya,"" +0xB083d214a934f556580f850B8dBCFECCEFe8ED8B,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,7530,1671231530,bafkreihqaoysbwan7z5agel36xvc2dpamrht37oig7vnyslfgopckzpqii,"" +0x5af5b3f842fBDA3783C3fCeD36aE88E8A893848A,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2287.04180427728,1671231777,bafkreihdeax6ui6z6iswz5kwm5vzj2e4de2dzekkriu2s7pdljfkfplksi,"" +0x1Db5628f9443A603615beb064106BB159bEdEebc,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,2,,,,,,8443.144801450919,1671232524,bafkreidtlawaneqsxphc54wkdo3yna7y3ab2p52vg2u7igclsaynab4dwy,"" +0xa31c0D37b970B2aDF47ea2F606f4DF0b6D890bd0,,,,3000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898,1671232868,bafkreidqtvv6hwnikddpgv6qbv3js3z66jhbefuk7qvznahufg5ru5r22e,"" +0x8eD57576E9219b2c6b966f966BA8dab65444E443,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671236086,bafkreihixnd6tcqbkmhfxgegd36icicmm5t6ccyya4k4g3xv4hnupzh3cq,"" +0x0E98493285D6AbB9E2979C9A117C5C2Eb4EE3737,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,70610,1671236229,bafkreibgffkkdeycjgoa5x45gwsmws7rmho6qcdc3uilz4bdkec5o3cyxu,"" +0x24749AedF18208aB74A8110E07E820286Bb5acf8,11,11,11,,,,,,,,11,,,,,,,,,,,,,,11,,,,,,,11,,,,,,,,,0.2428375704435186,1671236694,bafkreidnox5xotvx2njx4gch7t6iyum4f54q7j5htgxmimc445ov4lkp4q,"" +0xd314cB3388D80236AC7111be118F86D8558dE8B5,1,1,1,1,,1,,1,1,,,,,1,,1,1,,,,,,,,,1,,,,,,,,,,,,,,,1.0331537342628272,1671236861,bafkreigg36d5xqysgw7p5kzbf73phhv7dhlo23k6yu7i5usev2uht5rvpi,"" +0x8B9Cc341084337c0A5828BC0D5E20dADB197d991,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,38646,1671236901,bafkreiavkd2gzepegfwr6wxqghish3odwwb7roqfjah46so5j72fk6cvae,"" +0xE510058152640c40266D910eEA4c42bf58ceD7f2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,1,,,,,,1980.77669521,1671237143,bafkreib7pd4eibqlrxxoksczd2qyt6sck43mwxthlxhgbngslzrkcrtamy,"" +0xd31A84c20bc430aD75E6a1903E7dDbee52211072,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3884820939313374,1671237659,bafkreias575h7nbp75tqcdhvdp6hbo3r3oualfnvkwsilabw3ermapw5nq,"" +0xcB2940837b919e86899d62c19242fA49d3821F47,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3.5309229076074486,1671237864,bafkreiceuluoyexejtlttxibfth3u5j6hxaftqonbooy3fimjj7d6s2euq,"" +0x63BDF2Cf160A53D38a08e69AEe860828c3a930C6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,62.95294118,1671238271,bafkreihzenfsxyj6l3xwt5myqlkua4oh26wvinayljmc2c5gl52p4wmjs4,"" +0x26e437baBD9388F20D00fDC7A45E26a516925f7f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,50,1671238345,bafkreieb36em4o7zz5zkpxokm44pctyxbotb7rn42y4qmx5adtnok7sh6m,"" +0xB68D15Af9625Cc33BB7357c293CC0D82D449eC14,8,,,,,,,,,3,,3,6,2,2,3,,,,,,,,,,,,,,,,,,,,,,,,,1,1671240486,bafkreihjtjvvisl3ri6h7evdyz7zqb7dciri7ytyydaar7w227662urpiy,"" +0x14DabD5b3BA60D97a22b01ea185c8124ADa6760e,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,7854.519213651425,1671240758,bafkreif2drkjkklk2ec4ekx6nv5aa6jwcrfnoaak3llfy5k42rqwegoaj4,"" +0x510E74e9Cdc8Dd5627D652a26E49480A81264ED5,,,,,,,,,,,1,,,,,,1,,,,,,1,,,,,,,,,,,,1,,,,,,20926.185918820403,1671240977,bafkreif2fvd7qzngzuf537mg7nzlagyyfxp3m4vqcsonwh64bxmbu4732q,"" +0xe3F97E97576b4EDAF30008a2586f9fDd417a745f,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671241798,bafkreieyo4srzkad3hyst3c34phjfxpgoc3k36nf7gluo44bkl2veojge4,"" +0x0928AE0e403514895B692476F052CeCBbDAd9EC8,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1461367596991081,1671242077,bafkreib5zuyuwe2cbhpzhr65bvl75giduzfelav2hks57vwqyv5xphkj2i,"" +0x565Ef6Cd1d7aE856ff3D8A52607b8A0d81bF7E0C,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242213,bafkreihm5g22bkgh2g4zwol2enhacmpqwzutvtipkv7rjiz7h7bsgu4xhy,"" +0xDf07b9f4394CbE97A8f1c89e910155c71fC1Ece7,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242392,bafkreidwpakks4szbfaj3uf57izbfdrd25rpf6v46tm2mxwfqmrz4mbqeq,"" +0xD9b6bde79863135Ff29A5A5ec13DbadBa50eb3F6,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02,1671242517,bafkreickji7evtygfwhhyd2mkmrhqxaa4fwjj5l6vhuylcbyghwkcjwqo4,"" +0xabFD99A7DA59E8B96F1CEfA6E35FD03E6831Bc10,1,1,1,1,,1,1,,,,,,1,1,1,,,,15,,,,,,,,,,,,,,,,,,,,,,0.09448520374039082,1671245847,bafkreidxswxtiqycxtgzd3qgmu5qt5aegxguj2hqbmmz2kwgodr2kkbaei,"" +0x4ECF4Bc90510794f5A4074136efb716485ae0dA1,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,57893.37653281102,1671247267,bafkreicl2qju3lzs7rfn7xub4m6hhfep4gtlqltv2v7fi6khdpvsv3ug7m,"" +0x9b36cF890e350d4330F4E863bD2F20cec70Aa66A,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,17973.87520366447,1671249021,bafkreicpmi3pmbcmd63lffv4rdxe4g2pfozrse23dunrkvrcuvvh6lc5tq,"" +0x64DC5abFE2147E1e361b64Bf7043867856fE548e,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1753.2158007959736,1671249129,bafkreib735tmt6ugb2xohtcy4pl6a532fmxzpceh3r4rrdjydnnpblez6e,"Best YouTuber ever for metaverse news weekly content!" +0x671e4d58F407BE00fCC383732C020A7Ac1AFde73,,,,25,,,,,,,,,25,,,,,,,,,,25,,,,,,,,,,,25,,,,,,,14.004268150127198,1671249220,bafkreiabtpt3qjdsixsophkihgsuqhpckkj5bruhtrkrebka6m3w5q2tsq,"Dedicated " +0x33dfBf5aD72E69B9844c65801097501101B569ea,,1,,1,,,1,,,1,,1,,,,1,,1,,,,,,1,,,,,,,,,,,,,,,,,1.655324939038903,1671249381,bafkreiefjybnvz4ve5xtwka3pq7rq75uplah76m7gunuuoe2csgy7aw27a,"" +0xA2201F091B2e8E5f8AdAf8b023b99322b9eA5E66,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,52859.62278816613,1671249466,bafkreiausin4uec5pltgmkdnfahcoydmi2ppxtqoxoo73ptah6j2hlv3dy,"" +0xB3A26dc6dbBB8f4c7268Fd43Ca29338093d9eC7f,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1259.8842743322903,1671251797,bafkreidnkvaxbixewinhozwyhwkbmz6dmhveui3sgrbpij7q5kj3b525oi,"" +0x50Da05bf3764a61908d5333B937Fa1f3d9900388,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2898.0500798374746,1671252101,bafkreig5bt6lrdwpkwjr6nn5djva5fdyorrwuf5wpjrxme463ehac5cciq,"" +0x7F7ed74ba8d347640a0a4150751879eFA6a5c8CF,,,1,,1,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.01676514319611566,1671252818,bafkreialrwvm64tutakqosqxfls6feqveapf5ib3mnume423xmeo5zxrp4,"" +0xAC304C68737A133068230f0537B3E58c51E9dA30,,,,1,,1,1,,,,,,,,,1,,1,,,,,,,,,,,,,,1,,,,,,,,,0.0633398263693809,1671252893,bafkreigvl735puphjtwjygipactnj336y25rxcqazf5qemw7u3bwfx6kwu,"" +0xC2d70fFE112d9b18c8e093B05C2f785B1CE7cfF2,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.23950044972721285,1671253024,bafkreidosuen6uri4htuogtwz4o6rgxgare634kp74fm7cqk7wbueasjui,"" +0x974A4946bCE4dadB4F9d3B5c04121B41AfAF8e40,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,0.05118559999343897,1671253093,bafkreid5lob25jykybt42wjsnmtp5mxdgkyig4gjvrvym6af46ais6ka7m,"" +0xbcD162B4a8063d72bF95A1f685D472a45B35d49b,,,,,1,,,1,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,0.05922929587951309,1671253182,bafkreieoxjkokbio6nubuhatxpiofbzgbbdm44jr7rjjknva6w6jgeyl2m,"" +0x1111212AEd04902512911f9573FC146ddEc74CB5,,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,1,,,,,0.0430875194253828,1671253252,bafkreicn2e7tonk6vakceg23gzcbcplul2qg2nomuvnujamr3nfqance6u,"" +0x5C42bDAE111098BA8E204D9Cf2692D4c861DCA95,,,,,1,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,1,1,1,,,,0.04635796911781609,1671253326,bafkreiaxaxujg2px3qawp6rb6btghvolzq4dzezzikxp6ga5ypaddkqi74,"" +0x72A7aeB720Aa7D5b3187757edcF4757fFdb506fc,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.05287214047356214,1671253389,bafkreieua6wufmbpq6jb6rhjbzck34464dnvevr4bzcaonvgq65dgcnuny,"" +0xD45791D42C5dA0Df1AE44da5cDB99969595D24Fd,1,,,,,,,,,,,1,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,0.03685967796236578,1671253593,bafkreiekkmogbns2ccluqxzgwvez24fx22y7i7ufqlq725uaak6q5opq2a,"" +0xac12BEbd2f2Ea732d18Ff1132062acF8a15C8E10,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.01020162168649319,1671253652,bafkreieqxuzh6recbleuzoy62blsksruw7hw25wlegtbdxtgma2exraptu,"" +0x9A9De9D579Af85c5f23a06390078A5799887BD8C,,,,1,,1,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,1,,,,0.06979189808477027,1671253715,bafkreidfvalubtpwfae7f75cdqurhfu4s4zl4vudcexazht2l4fx2l4ylu,"" +0x66d5d99C831D0222e1E4EFb990B75Dd5cA145068,,,,,,1,,,,,1,,1,,,,,,,,1,,,,,,,,,,,,,,,1,,,,,0.03757350005964388,1671253780,bafkreihswfyyv6si476vmlpxvm4jgtusgmk5t76cnzptpezoz3ha3qb3vy,"" +0x1A74d0285a569120AA2836CB2b0fa58038ADB800,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5959737455390056,1671254285,bafkreiae6zzcwg5zsq4ulfgw3c2mkswlxz3gugwpp7vkbia7tak3gntb3q,"" +0xFE274ff2846a414e690606c2ed2CCC4Ad6bB9C53,,,,,,,,,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,2044.957552074202,1671257221,bafkreihge3ngjjdx6gqbli6qfi2smvhpwlespg4726q3mqi2yorsta7yga,"highly qualified" +0xA884A2F1A5Ec6C2e499644666a5E6Ef97B988888,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1655957084693322,1671257888,bafkreieeoyi7f2oodebtacecmbakzqnqw4t2ugionjvklts5gkjjagkxyi,"" +0x36fF5fF9a0311F7c15BBA1f377F66c48683FFe10,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2903.7911666851123,1671258558,bafkreidolbfbg2zxrxinoysicu3spnqh6qveaeuwidt7taoht736vz4o3m,"" +0x654Ecf30edE43400D342Da2dCBc000d756882f64,,,,,5,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4272055,1671260680,bafkreidzq35y2wthjz4faelwpllvmkpxeygpeqkom4boxkb5cxr4c4nb5i,"" +0x5574D6F75a59945A3D2e056D048816E11Ce12BF8,1,,1,1,1,1,1,1,1,,,,,,,,,,,1,,,,,2,,,,,,,,,,,,,,,,0.18917595580772317,1671260704,bafkreifpqwzidndg334h7qfiffbu5p2a7m7yqvjy56yusy35dvqolil3uu,"" +0xdE1E4C3CFC5E2be601D7ABCd70a1167A3e0ABb7B,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,30779.200290666053,1671260819,bafkreicjybqvcassefifkdaq7u6l2cdfeqpjorgoavu3o2pqldqiatrcxq,"" +0x085ED975A8b6B860DE3C2b871da60a3f9F48A5B8,1,1,,1,1,1,1,1,,,,,,,,,,,,,,1,1,2,1,,,,,,,,,,,,,,,,0.17384810246927598,1671260997,bafkreiahzwzf276rxryq4yrvebjvxhkuh3axcqpuj65qxwtm2rxozlhgri,"" +0x32791bbC7DDc9d0e6Bd914F3B7F73747132a3A5B,1,1,,1,1,,,,,,,,,1,1,,1,1,1,,,,,1,,1,,1,1,,,,,,,,,,,,0.3091705561948307,1671261099,bafkreiahjwtbl7ncewtjqeddwjf75pfuqgeb2tqjfg27bwghcvso65oo6u,"" +0x17EbEe050C312567aD0038c0a703779401cb0fE0,,1,1,1,,1,,1,,,1,1,,1,1,1,1,,,,,,,1,1,,1,,1,,,,,,,,,,,,0.13382320122129726,1671261461,bafkreifgtvxlriutkndak3llzw6j466zjrc444scqfqbgiv2b6r7mkrmz4,"" +0xAbAeABC8d5e5bFf88579E5C5F434B56Ffbcde811,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,1,1671261559,bafkreifxddja56wtjcm5k2gidumstuzmznaqdnsu24recs2exnjt22lde4,"" +0xbCD8Fc34307CC53755b6082c41B6BA643FbC6f99,,1,1,,,1,1,1,,,1,1,,1,1,,,,,,,,,1,1,,1,,,,,,,,,,,,,,0.3029624755970485,1671261597,bafkreidwvjjfliczxv7jkiv4wde4h5wfuj25vmn43cv46vvc7quie25esy,"" +0xd7b26011E6eB5857a6251da1f77E9f3d8AaC4489,1,,1,,1,,1,,1,,,,,,,,,,,,,,,,,1,1,2,,,,,,,,,,,,,2.1251145003999774,1671261823,bafkreihilanru4q2wbzmj43mch62s23drbjfkxwoer6dzqu35knhnmz6bm,"" +0x4131826eaFDCb7dcd855Fae9098EC693165F157d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1,1671263034,bafkreiei6gqr5v7ipngsqumkk6qn5uol3vs4zikporp7wonwnn5gtmzm4q,"" +0xbeE81eAd08A2Dc61D07fb5eda71915e099052EC2,,,,,,1,,,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,1,4,1671263239,bafkreifpqo4sfvyo3es5ckd6hrr5niixhsmtuxrobmamjidaret5ia2l4y,"" +0xd8338299e6af9B38D23EeD8f8DB4427884FEaeC6,,,,,,,,,,,,,1,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,2436.902431680988,1671263330,bafkreifftj6md2f254qyhqjoontrhrqvgcu5oviobmf4o64oruhtax3cqm,"" +0xcaAB362B715335ED09FF3a002CE8B4A9f9fB1647,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3727447105117369,1671264227,bafkreicqhbf3urgbkgqqg4ubxcdjii5raroi3o4yblhdems42whuasn3gy,"" +0xBB8B4d64f99f714954522C3BFd21B1cB1A6DE9D8,4,2,2,1,1,1,1,,,1,,1,,1,6,1,,1,,,,,,,,,,,,,,,,,,,,,,,0.19869195039928267,1671264832,bafkreifq6b2brcdsu3flmxekx65tvwzdg4c3obhc37u2oa4hcka732el44,"" +0x06160a0fA426077554962C984c27939c80939d80,,,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,,,,,,,,,,1.4587230461295004,1671265265,bafkreicbsld7uomoenzgadcpkq55hxtre5i6zo5hcn5q5jn2r24lby6ntq,"" +0x9b6a453f3cF839bB85bBE60c8fF8b757F5eDF321,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,2,1,,1,,0.1,1671265511,bafkreihltytvhr3deelvwavmc27ykd2gk43w4brvmtpynjqzilrbgqariq,"" +0xf661216d01f19b7510B2231C9011D36fDC43FB28,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.2489,1671265797,bafkreicuykbolkentgcnwlk6fzjcqzezij5nlmrjioq3wjrz6x3va35a2m,"" +0x8e62389Bb355821D66a449fe0dF384C5Bd2019B8,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.0936684794085329,1671266816,bafkreiaxjz6e5s4liefaeeply4esqkmfer7nz7sv2xodrnehzs34eesnzm,"" +0x05717559F79C1446344590ECA181166d94b539aF,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2048.277602540187,1671268021,bafkreiewczr3x6yyszahkhmtzeg2kdhcrvaabyqgo2kmljgdoktrleescq,"" +0xFb408FA20c6f6DA099a7492107bC3531911896e3,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.025727362655572,1671269969,bafkreieyqtliaylrdqqngxxx3jxvwiqfe55r2v5myvftfpij6ucshtukbi,"" +0x819Fec659e1C225ce330B02e01f1e4c629E92A7a,1,1,1,1,1,2,1,1,3,1,1,1,1,1,2,1,2,1,2,1,1,1,1,2,3,1,1,2,1,2,1,1,1,2,1,1,1,3,1,2,0.011898285447481172,1671270495,bafkreicv74qxwjqow62io5fkjvlppm44i7n6ns5esrzkquyzjkp4kwgq5m,"" +0x168F87fBfe36B84E44B9d06278B2aA1CC73d7400,,,,,,,,,,25,75,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671270681,bafkreid7rnflvtxj6ujkp4f253xyyxz3ln3p2ukgs7ccfvpgnl7wezthwy,"" +0x61601FF524276FC864B9BCb417c8410984652871,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,0.5758154348201056,1671271731,bafkreignz2ojru4qznpvfpwke5qfppicboix75onq2pg4tfnawr4hrhoga,"" +0x5b2AD6a2884f5F14ec5C6d3EA363E6F86Fe9109B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,7456.27419430181,1671272568,bafkreicgo6qdwu7o7uoid753qyle6ldut7tzz25hf2fe3tecpjhxovbr4a,"" +0xAbe2f901cec5eb03B8ca6357F068b0BdE6ba004b,2,,3,3,3,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,2,,,,0.14089387472143755,1671274181,bafkreih322ux5hhqn5yepyhrft6bhduevremb7w73crzl75dhjvk72faae,"" +0x44821E910e6b53B6c9a416abAd4Ec40e35463DEC,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2911490119206965,1671274980,bafkreics6n5ieh3jc66gtkflpd6qmdub26jfk4pzo5otlhw6tbrpu6bqkq,"" +0x945276fb8750c8ee5b86dF4804903Ce66B25eB59,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,302.31372203,1671275427,bafkreig6aihtvillpgacp3bcypsgxlvnfbyexjupvqivjmfhd3hppylxju,"" +0x9959eC3d692b689ecAEaAdb569c72109AB870c89,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2334.3521871329885,1671275475,bafkreiaujhttb46ep6xmnx2fertk64n74l6lzrgr7zesejt26deh7i7hqm,"" +0x1F118bc49d12855EA7Db09E785778038b9E04F04,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671275590,bafkreigh7o4ew5nlguox4mzanql25kuhlpefrbvr6k33hixmbi4fthhhi4,"" +0x13aE877B17610348D2f926b6C8d56E2A5C944D23,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1779.1279651100947,1671275675,bafkreiaezzgb44x2j4h2giro6khal5ixzk2t6pimzvxkcaqxso4w637atu,"" +0x8C2260c955e38665751a9927eF482Bb0cb23e3f2,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2665.96464336139,1671275765,bafkreifbquomnvfrb7vygcr3p73qnrqplpyeo4okqzfnu7536nrv3biqvm,"" +0x4b900b8Ec1C7d8F0A9B602a803fE6193F4D5AF54,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21686,1671275836,bafkreianialfkxrosxpo7ub225rythmsd4alyez6g5jxu32l3berqlpaay,"" +0x10D172F41Ea8A9e60a97DdAF86D0924aC57629eD,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1448,1671276720,bafkreic4ky7kc3o4aqbvpbysjyewjwb7sitcdrkfk7xntd2k7xlubimcqi,"" +0xcfFf83681b41F78bf128c541854ae5d13B714524,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.07331805224391214,1671277548,bafkreic6qtuxrrctooxk5xlq4dsclypi3pmzgzyhfnppql7dffzckhsga4,"" +0x7DA0e97CB78832463914392B5d414C1bEFA1fB01,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.483727221262586,1671277941,bafkreigjmsv7lowzqanett5bzrcerqgjze5r6wnjcbc4j6pzk4onyolska,"" +0xaB7b49bacd43BD4CfA41433D477F690Bb9E1fB26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671277997,bafkreib2heyqcwzaucjv7zvakh4v6knw33ipjilui2tze2wsicabitg2ji,"" +0x6896Fc21cB49706f549fa9Cc9944f0492e87Cbb9,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.8055829781335766,1671278884,bafkreiewoqgpmcub5dyzraavcnz5zihujy3atlog4hkvlwpuvttkogucpe,"" +0x0a5F56cBf9c27BD3beb790a4914a36eb45Ef08d6,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,41700.19814099805,1671279290,bafkreigiye4kilm3uqfuyl5irrmmnv4d37tbap5csudffchvjb7dvuvtua,"" +0x1aD23FDc757c2843759dEF2FE404E2c32D41cCC9,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,0.8023387119877576,1671280520,bafkreihyoeoylixtxuin5u2fkrxb6rubtgrhxpcjyjmlgtu2zlmfkxjoz4,"" +0xc7eC028C706ec2FCfdCf66bba7e80DED634f6Ca9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,,,,,,1.25,1671281765,bafkreighq43vdkc4rxnp27b6yzzqigkrc5eqbxz7bbp3evefz2zea675mu,"" +0xe7c0dE8937CA02F262C9357Dd7CE079C64045Bf7,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22.112020277962525,1671283169,bafkreid3lre55d5by35zu3knezdjnseyvxmmbb5vbklz3a3ykeoxmirk34,"" +0x75133Cc748f1f9b280118A65610c0d5811B19d55,,1,1,1,,,,,,,1,1,,,,,,,,2,,,,,,,,,1,,,,,,,3,,,,,1.393362118011519,1671284140,bafkreigikltomrbldr7okryzxt45pkflxekzqk5f5uteoycik2z4kpye4i,"" +0x405a3c03094a9e35d7f9847C7C9F2F68e91F55Ac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,0.7524939049990644,1671286378,bafkreictfhdkkm6u5jwxzwqa6p64ycychrmkkd5isafgmaz24ly4242fma,"" +0x6f8b3E110995DAf3c3B48b10E106a7860F3EcacA,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02918597651880387,1671288620,bafkreia6bbymll3kcvzjlxywvm6z5oblrnbgutkgitder2zae72dl7iaua,"" +0x9Fc7EEACD27d38a436462BB43AD97E49106820D7,6,3,2,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11.087104127354513,1671288717,QmYH7imLTWtn5AEMaJFb7Q1AYgw9WxzYBwTZeoJX13677B,"" +0x8d0EFE7dB232fe95f9073D3a0ABDb4b6BB7CC68E,1,1,1,1,1,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,6.676079358955183,1671290338,bafkreiabir24hjxmkiq3ohh74jy55turmvm74ktn3sbyslewidywifffqu,"" +0x563415679588e508C0C8f0a729C9bF898406e9b5,,,,,,,,,,,,,50,,,50,,,,,,,,,,,,,,,,,,,,,,,,,56563.15403456935,1671290471,bafkreifj6wi4d4h7j6xisyx5qqiyjd3wzuofrnghgufdlj6dz2ouetbplm,"OG's" +0x98c366dbE6d98A2D6A3ED471608921b03f3abCCa,,,,,1,,,,,,1,,1,,,1,,,,,,,1,,1,,,,,,,,,1,1,,,,,,1.00013,1671291005,bafkreicdt6jimwkkn3ual6vt3p6xv7j5ppl2dw37yvlzngdry5f3owhrqe,"" +0x416365993481e52e0472e7417656276d4E147A00,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671291824,bafkreig6cnzk2xiipixtowf2znuf5xhdeqrei4icvd5ek6o4eihj73rv6e,"" +0x695617Cf7798ab1Ba9783C5d29eEf21722991596,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,0.9830142648823579,1671291994,bafkreiayp5dyf7bwhemio3bawhp6ci66zo3h6c4wpte5ptdaqvnnpyrk3q,"" +0xB62cC7e91e4aa45D725E5bE32660982861911E7b,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.7494944549842599,1671292427,bafkreicl4ubidxm676n2ppxlb54hhdg64jkvem72udp2pluxvaascmmm6a,"" +0xe8C4BbAeEC2286A7E312217E51d6ADE15BE4f1fd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671293964,bafkreigxf4yufxtb2anfscorlqjd34wtdd3ur26huzanya2gjdn6yvmmaa,"" +0x1de2EF7a09f98510A507525D0Fab2d6c2A8c5e75,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671294056,bafkreic5o4ze7kr3l57n7zye5c3kucjma3lg2cflpsnb2qih7fetvy6cc4,"" +0x7F49Ea702931E4Fd84a6A9cbe96C804BAE43adD2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294167,bafkreiavet4mf2t4b5vyh3qu4fyg4sngko4sstcl3ffmfddl65xjere3ha,"" +0xFC3d12Bd93b8779bc548e0acba1377A692e34Fa6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294345,bafkreid4nbfbrdkc7zvnd5brlnxsje366xckyacvspcl2ljyze42c66nim,"" +0x2d9C2E2da61476Dc842D4F0F0c2792A35FFc20e2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294433,bafkreibkb43z6mvfbbqajqelopp2rebxihzz537qlyz4sgnsdwkf4c5q5i,"" +0x49184A069D9811737Cf276ee27E90ab180A56e07,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.1,1671294475,bafkreiaukokpj4tyg4hpezjk53yl4gbtg7ka23vgzeccdyrqa5dr7efkoa,"" +0xa0e328f9CABB36f9F45904AF9651Ed32314E9F2A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,0.3065208566137737,1671294834,bafkreidbc74xvmjmxjdifbo3qtqopvlnabstpj6exa3wtkhdnhs6p76obe,"" +0x037DBeb376900653E8b1744ccfD30f074f9F282A,10,10,10,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.40859718485822,1671296080,bafkreiac2sixvt7bnxngl6bg6hlqarqrvc2ggwdp5agqafrjnc7pp5xtze,"" +0x315F8eA109dd7fCDa2b0e6b7FA4d7a4AB0e16De3,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6263815942921476,1671296187,bafkreiccuugmjfmegx7u35ha4f47iwcptoapudn2qpd6fkbvrjycgtgv6y,"" +0xF5C7831ED9AD02Ae09236C4FC9f42eA2105C8127,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3824349258352667,1671296195,bafkreidex23u7pbrhtbb52axjxdd6zukbrmht3iircnpdpqxsibredphoy,"" +0x13D0A01820336B22a6f7c64a72C64FE7B7a12858,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,1671296215,bafkreibg5o6yvlvqaurja347bx6gajznc3t4p3a2ooal2txhgn4ah65eia,"" +0x9Ff5b690CE21EDcae135648f7ADB26c20f730761,,,,,,,,,,,,,,,,60000,,,,,,,,,,,,,,,,,,,,,,,,,58470,1671297223,bafkreicpafc2cmk2ytmmiibdmijsszexsaaj6wpt4v4witidljomio5htq,"" +0x49B6E39bbDcA2439a91b29747818d0C364B116f8,,,,,,,,,,,,,1200,,,1760,,,,,,,,,,,,,,,,,,,,,,,,,2962.442319062657,1671298376,bafkreignglogqv5t5pd32okr3wytjhr5oev2iif3z3ct7hoyb4qh4npnei,"<3" +0x4D1765279EeBc8F8d1De32e401349a1460C399C1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.8616471282543192,1671299357,bafkreia2fb7ztlzblvg3733k5inwweqwfc22laz6bdzto3bjcle6mzi234,"" +0x3722a8b1E2674FbBA7081C84E39A5cE738B8159D,,,,,,,,,,,,,,,1,,,,1,,,,,,,,,,,,,,,,1,,,,,,1.071471101222316,1671299521,bafkreihekbjisloknmtgxcqpd2foxccobetn7ebvvmutwhgbsjtoidh2zq,"" +0x994F96722575B64b27CDBe327498F34Aaa2f0043,1,1,1,2,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.18036494427307362,1671299609,bafkreibhx4kmalf4qckqqha3ton3ub4sj5wyfua7kyi7nqcigwteir2rku,"" +0x424929525a9f36897cDd3235023c13A2eA7D7218,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,74901.113275685,1671301257,bafkreiah54dd4lrmczq2gynlygby7vryjntrx7nlbivjelmtf7tmbkvqhm,"" +0xD5C9B4E15624023Edf7Bd37ef568e3f7519275AF,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14160.535069270943,1671301757,bafkreih3pbm54xmh4j4mbqwcgsjio62s4wixj56gsmtjjfiwbcaltbrdba,"" +0x165481239cc2827f92F738571b2cE1E532C900cA,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671303721,bafkreiatdwqgrhezh4ww6fdgkv3ficwl7bpyiwggbnntfqsahctpgmduj4,"" +0x0f28862bb9cC96f865c8047268230fF1248C7721,,,,,,,,,,,,,,,,,,,,,,,4000000,,,,,,,,,,,,,,,,,,10810.840170928062,1671306482,bafkreif54z2s2rl44rzlv3ma36yeyhe2bsbsela625khxb6vjrcvqigevu,"" +0x0c4d9aAB37FE770956dA285C55C863fd114dafcC,,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6914263981336658,1671306868,bafkreiah4lhi7xdf5gdaapz3x7dmrcfqjtd74f4h7vy3fc3sxsnaobltv4,"" +0x6316a7c591E73772C457Db369C475149f55b827e,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2054.957062785004,1671308400,bafkreicmxbyz5hbovdsgxslndgxhhn3a6nvtbkfc3l2kkc3xsllf5i6fyy,"" +0x3424cd7D170949636C300e62674a3DFB7706Fc35,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,10094,1671310781,bafkreigrot5w5vcdz3j4hm6cm5x7hqgowozbm7lru3ooiar536xkbp2dfu,"" +0xCD531EfADb2a5Fc230EE1B55a510Faa5E33a2FB8,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.1630958968406897,1671311474,bafkreidynt5q4wgdve6hz3jcuun4qzjsmc3qrcjjaqv4iokv2jux4s2imq,"" +0x71df93Ae5A9a2ba5064aE90b9690b4fa9C413387,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.064827901578754,1671313547,bafkreiepz5o3lvmw3zwapq7poopgrlce45ggqed3mplo4t4qtv3yaejopy,"" +0xE21ecb50AA7a84688AE4457b770E44a21CDC5A56,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671314587,bafkreihzrn7t3p4d4dl6xgwnsq7qb5pygdsmw53rhu5mirjsex5k63unca,"" +0x46A13b188365C40E5F4114a4CBd0D2425472d8D2,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,27170,1671314615,bafkreibo5cr7brp33gicibzjaaqfew3kkd7uq375fo2mwspgq3u5y4sqhm,"" +0x355D9Ae5E1280dAe29442f250da325a0f7d5545E,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,46438.94969057179,1671314674,bafkreiav4zpzhadalzc7f5vngpctl3mvvcfv53vbsy7zfymskgekideffq,"" +0x43286eFeA7820699484aD2256e2b6679f8Ce9361,,,,,,,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,199.6306102,1671315141,bafkreic6tcu4c5656zmskyejqwau3zu65zjfucvqtwrdlauwz2iljkr75q,"" +0x14D607c20fF934B0d895577c6e80ab0cD6a8b322,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,1.8612038555956325,1671316704,bafkreidgslis2zycfyrbs5cngtkkfqhwxhtxhphbq3jetettj4drxg5feu,"" +0x921887803bEF20491fdD1ed3b0B3e0a102205131,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25404.334795157523,1671318866,bafkreicbbctwu66aluc5yv7eqwgaqm74hjcz4uv433kr63sg3z3i6xipya,"actually took the time to hit me up, set up a call and talk about his plans and vision for the DAO and if that's not dedication idk what is" +0x66362B929C1a9AaF14c51aaB9B455ad7fb8268c4,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,25441.109406340853,1671321143,bafkreigtakiv734f45cqpwze2ykbta5dsueoeefxxtty3g5uj352o2vs34,"" +0x77D4D7ed546b19077720EDA2Be8C847A1C358125,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.397184801604203,1671322753,bafkreiacyhisegnoda4llmjk6zjbvtew7m2bp2dl3rxbffklaonx4jy7xi,"" +0xfCdD21e1fE6D09F6b6B2125fFD55b2a486767255,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1,1671323140,bafkreifp5nkz6fnmxafuvydizen4z7o7wspb6tbyot7vwo2go6u2kh5yi4,"" +0x35Ff42FC4a02E0E6789912F30b2415607099a535,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,37500,1671323362,bafkreihueppmfltjenwakpuq7apw4nd6uzsfs7tjd4grzgsuc63smfsyje,"" +0x21518831D8852658057E43c7ec5503Be25366df9,,,,,,,,,,,,,100000000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,8128.8041753574535,1671324065,bafkreiew2yedfiyuslmjrrueakuj3jl4kccruzq763n4zoy6a6peobc7fa,"100% for Gerry" +0xDE2cA70e71829962A99A2552D826ac37e51882E7,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7902281586956074,1671327677,bafkreifz225nrjza3o5ykshzhen42prcw47iv6ficz5jp7kv2bq3a76gke,"" +0x85a8181eeE053a72896b98B2F6698B6763aAB30b,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.01,1671328237,bafkreic24tzalzimyuhvtjsi3ewoxkitx4dvhhr4u6wwh3npvows6msl34,"" +0x48386A6E3528A9aaFF7591B320afdC7bAb527669,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2,1671328533,bafkreigiszuaagvdrwnrkb4yn4g5ujvahklermraehgg5blypofdiyl5a4,"" +0x762b34974ECdBcf8D9015125A48F7B4B6cBAA205,,,,,,,,,,,,,1,,,1,,,,,,,,2,,,,,,,,,,,1,,,,,,10577.594993647292,1671329607,bafkreick4abax4mawmwilatrdxzga7bnoj4m65gwupisfuq2nqdneklvfe,"" +0x69E550D20eF429a092B4d4e3d3E9A0391714faEf,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671329691,bafkreiacbxdmgft24lgvtp2myajslnejyo33nqmheuzmpqpbnzeiavt6py,"" +0x2ff5CDf2DFE9A60F650cA13A319A183f77EAcF18,,,,1,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,167.35625374984568,1671330873,bafkreifjtxlyrxe4seddbr44graltz3fezgagzspmaa5fmfsbmtxpnyx5e,"" +0x407f099b53C9A67D0A407d5e79D79b1Ac940C07E,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1053.73277668,1671331283,bafkreictbgw4trinpbptjzshzedqy6czxc7ewxrdvppa67l7ofdyhovcle,"Gerry was the first person I met when I joined the apes discord. He has helped me tremendously while I've been here and he is a great leader" +0x9FeAc18007E38c8fBa5d5BF07fF04746f64D169E,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,414.85528633132094,1671331966,bafkreigoes4vkc5qsfkx3gj7lu3ogaoqihp3wlopfavbxqqe7xcpw5myyq,"" +0x1eF7bcC3976056d3F0238b6f8653287D4d2Ea24E,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,4368.08636205011,1671332335,Qmbjx1uXFyhxctBhjyMBbSMz32q9dUBkm8Hyzme1oXZdcJ,"" +0xee516142fdFc3066E096bbF4AFd35F00aEDCc2f5,,,,,,,,,,,,,34,,,33,,,,,,,33,,,,,,,,,,,,,,,,,,3401.9081930297534,1671336083,QmUdTSKjoNiUbJGsFbwrtmzfPJZvp412gvmpvPmDYD1xDW,"" +0x955A1a68613C028Ea98b0b5dcC58901897EB90DB,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,2042,1671338330,QmRU384gyiVpqF5ZZrZNqEPic5mcYj8tagq7FVkj8tBR6F,"" +0x8eE3Fc743653BC3854a71FB06505bA4c988A3148,,,,1,3,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,0.16297069024732827,1671341557,QmRY2bxHNgF7bpAphJMMmF2L5PxKRoWo1NPvHeKRHyqhTp,"" +0x10cCD4136471c7c266a9Fc4569622989Fb4caB99,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10951.253434866197,1671344429,QmZf1NoMuueh77MHZ5pNastmPJG8RV39y4mQQFUSC2KwfR,"" +0xceB0a87FDa9C81e280DCbaf943771871533566Cc,,,,4000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2820.130918683725,1671348976,QmVgXDnVKaqRtkGiVTicB9oz9hjA5Njv52CmmQgCbsQyx1,"" +0x300736a2C7eACaC5524930afF74779EcB2C775ED,,,,,,,,,1,,,,1,,,1,,,1,,,,1,,,1,,,,,,,,,1,,,,,,13743.578917029754,1671349223,QmRdrAvj74ybnmqP1TwqyrxSbxho7Dt1jabuxyohfmekiK,"" +0xF37Dd808574dd96cdc87a196105A425543eB5a20,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2181.137028025385,1671355383,bafkreiagehu3dez2e6gal52of3dg6qj744kori2saxcaw2gqmja722ilwq,"" +0xd493a0Be4B8bF4B62A59624e83382422B68a3451,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,0.6572477572861801,1671355671,QmVQq83DmfbCddXABcoBhk9tEChc9Sn9kbNoLdXNWvR6oM,"" +0x2A1BBcdff7A047d82fc8829FAA0D13a8D2cf1dBE,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.67,1671356760,QmcNpAzoLvNqSJziRUaq6My67dYYsPVVWoXxAf66DYHUh6,"" +0xC292573D51097347bA34Bec624fD088DD3D0314A,,,,,,1,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6762016345540045,1671356762,bafkreif2kmeknvzbfgm5kvmi7nhrqzjiwokol5iobm24etb4xecbtt2tte,"" +0xC09C4E76f01260F16428a34A03C431b051002424,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5328488663828079,1671359661,bafkreig5rkugm7dl2jljur6t4z355x2s4chfeajv2q6t4kh5x7qustg7ea,"" +0xe68E4a5EaaA13F21c7665DCB472686366d55eda5,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3.006,1671360736,bafkreig5wezcml26klti6bv2qtu2wll7tglwjfxbbmtzemfrsbgjed7nra,"" +0x372570802335134b5654b41Fa5eEF84548DB4d79,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.32647652277045347,1671360796,bafkreidag7wj7utts5zdeh7cdhutdtl2fl3rmrm2dorxvc6ge44f2ottem,"" +0xd8aAa186db7214926cdD4C8aB5Ef1d919913402F,,,,,,,,,,,1,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,2.291284832370243,1671361533,bafkreif3vmsddxa5eipapvrepxpz2zmpbt2kfzp74zkqpt3mbw6wkuc7aq,"" +0x6B62240234AFd9bd4E5EFcCb44F96254DA30a324,,,,,,,,,,1,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,2.2083475220540887,1671361758,bafkreie7kkt6mckqbtkwt5o5a72ox4luxfsgerbug4vjxar6dc6uyz4z6m,"" +0x3c36e10c0048c298b87Eb26601A374aeb86b1b93,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.37,1671362286,bafkreih4f5ni2r34wu32dt25gq3tq5m22cz46ptydairvkh3m2cvhuqwza,"" +0xf85d965e9Fd4607B000110253214f49231f0031a,1,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.08905522419268616,1671362912,bafkreibdmvdkglmm2tr6ouolznz4pwopnhvhtaxuazrzpoyupm6eboaera,"" +0xB395BCBeE0F4eCfC8f2EdA592c7E945760F666d6,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,2,,,,,,378.8609298328888,1671363020,bafkreibj6pfgmrwruseupxb4o7wpnyros4k35j34evbgqt5w2vexl77kom,"" +0x37D2445Fdf9B83B58392dADc9cC29100C263B505,2,,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,0.0822823488633826,1671363258,bafkreiakhid3xgbid36aci5np6g3emphbesuqdc64r6fy3hnwlnfungjt4,"" +0xc153c97eC33a7ef4eE5c15aEdAc38225E1954ce1,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,0.2,1671363376,bafkreig6pgfa4v5hnszsks3tswz22rqbkmzazu47inhwhfgssrocok4xea,"" +0x545425F9686B56078Da3bFac5f9f25bB287b1291,1,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,0.003389747324169346,1671363516,bafkreichw7epbuefz723is5w6krgvncqgiu4smgdwup4bakpjdlkgbyxge,"" +0x5d18014F44bb78b5D2F5aac5a0A547F53c2Ac592,,1,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03276771832066755,1671363984,bafkreia7phvvlomho5rhfyudygsv2ivgp5shhhsbozpbtkdcy6pyljvdnq,"" +0x0b27Da84572d4eB58D82C496457fc692a419C92F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1000,,,,,31.614931710465985,1671364481,bafkreiewqrisikiym42v6ybclecq2ycuqo4yzuq4mdbpm3imdy4zncgsbq,"" +0x276266acADA1798BCfac5822936768383d2ed782,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6078.877701893966,1671364565,bafkreihbdjjpnvfn7p7smdbjlir3mjkxmzl7byblegb4xcrnfad7gz44fu,"" +0x7277e1fDe9CEAf97BC5960F0Aee96038F39A70d8,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.07145890165885926,1671365643,bafkreia437qln73l4dzaedf5pp6o6xsnzlqfu77sxxaoer43eaoo7rcxpm,"" +0xe4f100b9D50a2fCD41bd475b8a33198779fe5DD7,,,,,,,,,,,,,1,1,1,1,,,1,,,,,,,,,,,,,,,,,,,1,,,0.1190173457645154,1671365872,bafkreiaeeo2ezbpak4y2vv4evkesou7ww275l2f5vonyoysi5fypg76ps4,"" +0x6B73A9E6c06946d543Ae131071da0C2942CB584A,1,1,1,,,,,,,,,,,1,,,,1,,,,,,,,1,,,,,,,,1,,,,,,,0.5031163110337015,1671366154,bafkreievbnavdfudpw4egtbid3hx3szuxlerp7j6u45oolrqzpsjernhra,"" +0x762ab7C7c71772a195baEC1e964c0584C3aDeBF4,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,119.12022724624251,1671366335,bafkreiexhtiyzecosp32dodk3o5zm2qvcf6xnizvpkjg45v2pmiifqm7ga,"" +0x8105FA2e9E9e8F8964C0ed9193614D352b24385F,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.016207386639491006,1671366511,bafkreihq5ejwmcw45lzhsr4647wcq6ogeqkqarnxofqlrxp2ypvda5tuw4,"" +0x8d3ec18dc2c96daFCD0924afE7273892Bf4c1652,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0625830289936688,1671366955,bafkreigyhwen6vygu2lltce2kolcp7npwhuw5txm5ljp5enfuj74zj67uy,"" +0xC795E5209DBE5B8e4a4D0438c0Dd3793684F336c,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671367443,bafkreifybu75a4vp5admndo5inyooavufjnxg22cpde5stdvn26d7s6hou,"" +0x72656CdF1c5Bc08F7D95919e1b31Ca8a88de62c6,,,,,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,0.40105038674946214,1671367763,bafkreigl2chiyc6ljncfjsuk7whdvwnqxx5rkrncwghg3jdovqm74uagiq,"" +0xbf2539F8CDB7F3eEeD57aB6C4195dc190c199678,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.001,1671367809,bafkreiei63vhnucw3xghglhvdvazki64l5rapnotx3jaqb4o4tupvrfbly,"" +0x1B081542303d27A705Fcff9512b45c58dd7dC4a9,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4015660951541833,1671367972,bafkreiaiccatxe4m5zwlhs4nkbkkeewadfhdjuo6tta4g343ihrtdjpw6u,"" +0x22BC858e301C864e898cF06D2f383e70d26CDf5e,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.02773749053288088,1671368304,bafkreiebwz4hollk5ag3pk43mas2ozbo7zxqmdohnyqhqm4asoxtkp6fte,"" +0x83D2E472495f408BD0Bc85702F4bE5EF1acAee80,4,1,2,2,1,3,4,1,1,1,3,12,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,0.23143450422910172,1671369199,bafkreigms3pbsshbsftciibw22rv7o43boxuq6ccaloqtlzeosnlmeqtwq,"" +0x56979F6a5Ec520294E8163Ac0804D43973f4a503,1,1,1,1,1,1,,,,1,1,,,,1,1,,,,1,1,,,,,,,,,,,,,,,,,,,,0.008279583538895074,1671369706,bafkreibpammumz5frt4xozvy2q6jumlrur75fhg7vbox4c6i5qeyhjosku,"" +0xb555Eee31FC3704c22e8f69B097930E7fF68f3ee,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03601508781494342,1671370593,bafkreicut7khhs7q4kskmkpp4w56swrasyv7eycthg36mhx2rtmrwfa73y,"" +0x4879032313fa7648bf821f9880ba2C645D0f356b,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1,1671370649,bafkreihtsazsg4tyee26ykajkwjrkqydbalwue2fe4e62bkybj3aikqooq,"" +0x98fF5E8be4104d0aBbCC54f42a474054F87723bE,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.025678622188871292,1671371098,bafkreihfec3m7kjkrm2foebjksg5n7j6npbn7nxmc4wh3i4vv5t5g3uwqi,"" +0x134AdE3f5E771f408BF7aB0a7AEff45364445BcD,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.038295215179206,1671371214,bafkreid6qs2m2zfr7ary7xshglikgfz6koag4ntaalqwtkh56zygt3b7ui,"" +0x6dF7d76e8Ba33A3e11fF0b48C1c792F9Ac9a7314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,0.20551530545813534,1671371304,bafkreidpzpqehtqnjzjlz4psdfb6axruqhlwcda536lyno2jw3zvdomq3u,"" +0x6665a5A00ef3388328cB0713c008099e3E7B7092,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,5796,1671371608,bafkreifwgqrb6e6cjmcjx2z5c7odbjdshr7j3sa66s56izzaeviqxdnz5m,"" +0xD80d57e2d1cBF09b14626EC3974f12c1952917C8,90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.17132635366649998,1671372023,bafkreibp67ly6we2idqhjqtfrgqj6rhkjc4its3g535sphjevikexfudzq,"" +0x936DF0FB2134e04948C2A07482486e1362C38c9d,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,0.12056574134921297,1671372556,bafkreic5x455c4cr5dr5whfa6rwpcdkh42cgm3upssacl2poc7nmplbige,"" +0xC2cA4eE4C8C79796e8beea362F657F5004a9d1Ca,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0641234606236436,1671372594,bafkreidys2lkdezhqmksxjczdxltg4kfqwnw375gph4i6eev52ormodx3q,"" +0xd182768D1a7B9a09515464e017dBCDaA2993e059,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.038108802942678,1671372664,bafkreid2cnmkfxu46dzth5yxoz3zolkkentxknns3myxstx4j562mqxe5a,"" +0xcC90c10D54368321E4f022D13334490c52FB6121,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.31161095,1671372749,bafkreia2icvjzhbvjkkrkibmduxuyzzszldfnkhavo4sewetiqxf3j5rqm,"" +0x040BAa573b9DaB3143425D7E0D11916961d385BF,10,5,5,6,4,7,7,6,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03258185883633462,1671373591,bafkreih7wijnlgn3ohywcuv7l6e4xrn2d7wnri5ncdxcreo4yy5r7n5fze,"" +0x00B7C84DbBD871A8eb209138174D1ef378F015a0,13,13,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.04579555404873756,1671373728,bafkreicfv4nq34nr4pcffadoyb6likuwuerbweeviwpoaj4olni2lzhofi,"" +0xf4dC26387af654ed24199Dd26920EbDB9a5f4a74,,,,,2,,,,,,,,,,,,,,,,9,,,,,,,,,8,,,,,,,7,,,,3.145453273922682,1671373805,bafkreib5qtjsjazw7cll55flyqly7g4lg4bvc5okkz3ca52qamsemhsore,"" +0xCCfd1FF80D176f1b98f7E40ed71A5B13d70dAF69,,,,,,,,,,,9,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.798353694029279,1671374447,bafkreiebjhriof6otlwcjj5vr5k473rqtowr6dvhs2ihpj3tipyxngmny4,"" +0x1cad9db2453Be4B0dB2CF5DF085F9f70d7e79ac1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,437.8216173,1671374506,bafkreide5mad6hwa6247uggjwxcwtvusnd64ldl2xbpaoobcynzqn4t4fa,"" +0xE9f89D3ddeD8c92eF9402E1A2608590d1c041239,1,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,0.09237818734719583,1671374974,bafkreifkxluybmocw7tyxv5jt3ehdkxhloobfmxigntbvdqrwi5fglsa2u,"" +0xA425fE8b53B1386ED496DD3EE143F2d8c3A624D3,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.001,1671375066,bafkreicgpwnk5p2bloqqj5ap36bnblldf7eizo4s6v5ey6uwuwfce7haci,"" +0x01F9Ecead3A16C29b2F277e1cE018Cf3985b2597,,,,1000,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,4793.0648899975795,1671375281,bafkreigypjoo4t6sos2lnzhkhuevlhwsmjqtneher5glbe5mojhl5j25f4,"" +0xD83FcD0Ce05895Acae34519bEc5DaE8686608E0A,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1203.8,1671375560,bafkreiay2y7auo4eymydyovpbgzu3sm76n7cradnq44gygbpslt5xqomrm,"" +0x0ed7A2469834Fe7e26a5A2Db5ecaB4E23cbd585F,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0046943836855114,1671375658,bafkreicwykxeucoek3znweh3n4algucseeatovzl547byntr376p44wgky,"" +0x38B0dC2D8aF9f32F72372bA6955e16Dc0aa369e1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.5605846032049848,1671375842,bafkreiccc3pibzoezzvjko3dtjrqx4vrh3zfan4hhbjgv4cpr23r6g4v7y,"" +0x9882954D15f500Ea7A63A33479CBE0132B584Eb0,,,,,,,,,,,25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671378153,bafkreibx5772hsfl2kqjakawn5qsmtskgvkhphs4t4cvstvcnyspvygiye,"" +0xb7eba91e21325d16eAe515948990fbE69e8Cd181,1,,,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.012740251684438018,1671378568,bafkreieumxgdpuox6nqvhvhhlbbonh6bcrbjzmi6jptjqcl4r7qng2txqa,"" +0x4B298E988079ab2fba509810fD712d82305A1E4f,5,7,3,1,1,1,1,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,0.04067092408181453,1671379388,bafkreiaxu7kaawoym6rg6fnjb7imtrkymgjb4red6duci64atgaksikuvq,"" +0xD4e51C07357114E6d6058cc752115967EF18F99b,50,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,40,,,,,,0.09416017610561472,1671379465,bafkreiegix7x4lw3eutt3kw2tx3rof2jjbq4nyiws2y6rairivfqxkas4e,"" +0xeE4bFD7fe07DBc45F2270191391bd564e0D32C5A,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,50,,,,,,0.18329759940824875,1671384131,bafkreifrd5zvarlhyy35yl35h4ae4vk27opgh32ch4flxk4ryjzgnfdv5a,"" +0x7196e387E6dAFf279C964559d3D64c0faF523B20,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,3931.844832867965,1671386445,bafkreibpn46ensqvkr7nmez6ld27braw2qynq73ycnudiq6rfua33nxp3q,"" +0xF771e31a7Fabcce2Aa9148591bEc94bc84c5F491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1839.2887869005876,1671386858,bafkreiavxlvmo7k2stthnag3wktbcd6tttozywy6agcuevtiojgwjhr4wu,"" +0x48c9bBDEF31D7D50ED0f4bAD4e8925C08791a7dB,1,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.14688097570952588,1671388573,bafkreidxc6lgcbjinouhizscd4yesctagkpcyr72dux4p6nugmr4r343qi,"" +0x4c710B38199f589DD769D36eD52b6d0170cb83EE,2,1,1,1,1,,1,1,,,,,2,,,2,,,,1,,,,,,1,,,,,,,,,,,1,,,,0.2485787272224984,1671390674,bafkreifekigdkwodlkkvcwzaxffxl3q3hdgggxs65slxn4brc4if5jmksy,"" +0xCf35cFaCF4F2CE74556064d51D5405E58be327f4,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.03575817433486994,1671392171,bafkreiag6v5ghpguzu5qaumjrzvefuxi77igsobqflobmwz5uz4e4nszzu,"" +0xADf44724617D891B933faB904cf6E939a167Aa1F,,,,,,,,,1,1,8,,,,1,1,,1,,,1,,,,,,,,,,,,,,,,,,,,0.10568447094091535,1671392249,bafkreifvheklfqhpls3caaak72hm4cpxdwd75ppnv6zlkmeud2o3k5ayxi,"" +0x6EA012A3249ccc35D020Dd4124b739956966699e,,,,,,,,,,,4,,,,,,,,,,,,1,,,,,,,,,,,,2,,,,,,0.5322961520176586,1671392636,bafkreihuzlsarbje6vgn57am5bfgihhpfuk64vpemnc7nriix3dvwmqaqe,"" +0xBD227C7B8D581b9D3639B7e6E301CdF99c374dd6,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.07942286,1671393325,bafkreiaqm66222kgi5dgc4uv5ep2cqbkmh4xobdw6jfr7sfmev23r7y4mi,"" +0x723D3ec41b5BBdd52089CE7F5E063936647f6403,4,,1,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.28775049597345437,1671394101,bafkreibqqeetyf6peftj7mjfhfpo2khyoioyw7byzmcz2czvyas5ksvh5m,"" +0x411d209E4874E00Dd550de43190224515b28fAFe,,1,1,,1,,1,,,,1,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,0.05123319959560518,1671395072,bafkreifrjsepq7ykkcodnwhl5dkuaew3fosowsgcyrxku5hbk656w5xqpe,"" +0x49d43f74988c31E2Df1E751e5F0Ee160EcdBC5cF,1,1,,,1,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.129501992352094,1671396109,bafkreiefifiqvt3hvr7akcrqxvtust2jb2bcsux4bjkxuzhm5r76wnfnsm,"" +0x107147bBf9b61b235d88aE320ac21C113150db81,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.011676493636606888,1671396470,bafkreigzcuqijuylletoaritban6zzqd5bbmm2usgt37zrfri6ul6bwclu,"" +0x53909bcC8eEE8E648d7B3ee6Bf412612AC042245,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1083824415214349,1671397893,bafkreifhj7xutupgsf3w5t7dce6ztjwrmitxwxm3chi4orhayiqskkmp4a,"" +0xfbF0736EB2ac1C4bB0193AE54c53e182B18037Fc,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.7511190155169448,1671398408,bafkreibe253g4t5mvfzvnv44x6oipc74akuentu32elnq3b6l4icza7dqq,"" +0x139f2916CF105A494EfA59645BdC0598A5D4C256,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.25,1671400311,bafkreie5vj3ba2mp7nu3dmtuejbfryhllklsf3tndwfsummzd7kix75qza,"" +0x2669628C787e13b55aAB9B27dc4559bFBfB9CCc3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,100.39,1671404946,bafkreibom2nsjeanrx3hmzt3iry74doez7pw5kjklwkrkdcslfqxmakkk4,"" +0xeB70F86CDcC047CF052554dB6962DdcD4d057f9e,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.1053218835941294,1671408270,bafkreie47yffwbzohkteqtq3bxdpcbghval64p7f26c6zvvmbprmt3zfzy,"" +0x428364c1919Fd29B620F7f1DAE3cAd18376c74fA,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,392.60021011,1671409886,bafkreifp7kzeaiogtwcrz3vbvbrx225glgubvc5afjohx5jqauysxf6fim,"" +0xc2EA22ec0C12761B26d05888397Ca5dC23be64e0,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0.36766384,1671410016,bafkreigw4vt4f63gve766l64nop5yzlr3y2pmppkxcennnvtb5axe6kdei,"" +0x6FDF6238101B986D9231866B3C9BCcC69D6655Cd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,114.71222423864467,1671411792,bafkreiewmaf5s54lamhmqi2uofvov4qny25pzaneafxiaga7bqps27fj2y,"Vera is super kind" +0xfA72004942aC072962A8f93596D587A4200A0f88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,769.7712866384564,1671412114,bafkreicsrrjapy2enzf2lbedl6iaec32hauh2v4y2ktulu62gozcj5qfeu,"Very capable BAYC " +0xEAEB9eA163A3BF40Ec1aeC77862B65d3d448af06,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1600.0795338493722,1671412433,bafkreicmk7iept3leobkeocb4lqpi36bpjonujhym6sk47mdneo3sbfhta,"" +0xAC993Ad2eE5a5dfD8bC0cd360a98b950FF26Cd2F,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,34.90358867048719,1671413760,bafkreibuxtcnmmtyb5l2vjxr5pybwey3ou7r72qsipzloncgz3xvn6q2xy,"" +0xd12f7211071a20Ce76Bf9Fb8e069036B6fb63C6A,1,1,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,30.61347049934633,1671416043,bafkreib4qsab35raufcp3wbemb6gfa4pl3yj4e4s4dflwmhxnvahs233oi,"" +0x9c035924d172A5Ba3ef6E544af9DDA28A47508c4,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.8406571713627665,1671416308,bafkreibewwp5v6eptbhqhk25fse4c5m3ghe7v4sxmp3xyksfs7ll7ipsgi,"" +0x337CfB6E0466977c6419D5DcA8FA8B82904787b1,,1,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.25,1671416557,bafkreie5l4y4kcqhtbkghk5mejp25hpay3ax3w7mazjpbkksczc2odhxfa,"" +0x9179107E3d45D841179729F02dba57C3342D7fdF,1,1,1,,,1,,,1,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,0.4064531973241,1671416631,bafkreiapq3okowyvbhkfjbuzj2wcjqlsndvsrzkpmwvgls6zt7rj5nqzuq,"" +0xDB724442AA1AA972B6F23B63491cC6B601608C9D,,,,1,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,16270.984638030899,1671417212,bafkreiemsv6zfypvl6rm3nce6zilg7qpg4j7z2n4f5pdzojfr4qd2yheau,"" +0x99BDce51a4CCffc80d2e7082fbdDC18Ede6a7d75,,,,,,,,,,,,,,,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,1671417364,bafkreiflnk6lvon743ychm7d5fannqxlgtsdfloj2ettbnw5cgq3hb52fa,"" +0x1FD8271f95b32EcFFAdE04a2C93C7009b6Fe7d5F,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1,1671417851,bafkreidvcohlq2qlp5pvaujuhwfqrfhunn67b3eeoy7hoo47wu5lqtcjnm,"" +0x669C5c5672443879C7c5650Addc6231076b03beD,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671418619,bafkreidd5sulsflozgtktnucstidm3t3v6lo6xo72g7zqvmxy3eah2mkmy,"" +0x9Adbe89c461993aA71F18174c922605cd1fabf1a,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.00002,1671418658,bafkreig6pths4n3x7oapcr5fzg4nwkw67ud4kz2pq7qh4bh6wiva5iwxw4,"" +0xCc6f414b71c58218c1aDc3965ba7B48FDf607000,,,,,,,,,,,1000,,,,,100,100,,,,,,800,,,,,,,100,,,,,,,,,100,,2011.6337966026913,1671421297,bafkreif26fp7aldu7eh3xx7hcpg3xqsnqlirqidlurrdhnaezsk6zxkfcy,"" +0x29737f1186Fbe889D4906841c30A5048dAb7E638,,,,,,,,,,,1000,,,,,100,100,,,,,,800,,,,,,,100,,,,,,,,,100,,3474,1671421404,bafkreicuynkdp3gweybxangshufannnre2pf446ykwe4olsux3abzl3pha,"" +0x8D4Fcf8170A20ccC91fAB546Ee57Bd01c930E608,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671422930,bafkreib4oybtjoa7b5rozyltov4uf2u4525hccz6z5mdlrzwqrpmhjcyme,"" +0x325817691bCDd8449FB0f88a4fbFa27bcCb8f5dd,,1,1,1,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.10532965628377434,1671423408,bafkreig56ytr32f72vgblk5d3hihxhfjl5jf2sgttrzrdujcazk72powvu,"" +0xBf6554783Aed99b39A27e60FC456A983DbEAaC8B,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671424332,bafkreiet22zmexhcw7h6jizabq77j2blna5xxu77lffvmga46akkigmlfq,"" +0xD8cf3e31820ceEC940C69f462FC047d306BcB984,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.18,1671424335,bafkreigwde27ltxtvd4u3vbdcojxery4dgjn64o67bl7obsj23o47szzne,"" +0xaD928e545cf5598802B3c601E04B0CFE6bf6351C,60,40,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671424829,bafkreibewichkgc5x462qo5tgvsxuv3rfnn6u222ov6q54nsxz3udsxlnu,"" +0xD0ac50d9F7516be16e2449539394A3967BEa03C7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2.491677489561012,1671425283,bafkreiflicpos3gnkip7edxqcpvrl7ycgo3dnhv7v5agfwqikmm27v5aha,"" +0x529408a6962Bae6Ca5328874d633738116B89B05,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.016804102509884,1671427472,bafkreiatlybzzlmfduhh2wu2wv7zhrhmjsdmjczjsynrpuky3go5bjxnze,"" +0x80771c740F659760C9423F82110c03087c21Cbe8,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,13859.774357574643,1671429537,bafkreiez3jehqbovbc3j2ci4wagmwhwmlypvbtohi5kxyb3b34dgc5qjkq,"" +0x323461bB7171C3E1759AD35247EAa3b3AEFabD75,1,,,,,,,,,,,,,,,,,,,,,,146,,,,,,,,,,,,,,,,,,4000,1671431980,bafkreiaq3pdijlgrkyuxddlawskg6bfgfi6izc4ltpiqncj65ux67yq7yq,"" +0x14Adaecf15F069c71A846e30e62dCbF6d362B9d6,,,,,,,,,,,,,2042,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.25,1671432976,bafkreigtbbdq2lxg7eq33z4qeqexaa5wfkr3l7tsdim5bsplxjzdkl4fa4,"" +0xc75b143301cF47A3Ad096ED904f5E3f0831a57Fb,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,74653.07800763927,1671434451,bafkreicmjoqbcp7ujmtqpq4dw2ytegwxrojal6smmhbheh5cemrxxfh2su,"" +0xF7838C101DD142AbFF1B612bd4DA21b21e43721f,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,15604.942155380913,1671434638,bafkreic7un4e5eopqkszuce35plzgjc345za2nu7dxfayh7hzr4o74tqpu,"" +0xFca4Dd58878DcaEA060EACe9fF6397353797F8BE,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0643740792632834,1671435927,bafkreicndtiu4wxeheeclqkmp2zg4tuje7o5gik5tisrvgp5go2om6g6zy,"" +0xC720aAd5b91dc6661d3EA32dDEA7E11003A0C12f,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.424,1671436161,bafkreiei7s2z4yv2pygcmb7kjffddqyqgn7qjmooc7tr2kbndfkyruyule,"" +0x8168363c12488275050F75F4deCd92b773F637F9,2,1,1,1,,,1,,,,,,,,,,1,,,,,1,1,,,,,,,,,,,,,,,,,,0.99,1671437707,bafkreia5jkb3bx7lrgccqs4f7mmxubsafs43ht4vffertqqbsivomrf3te,"" +0xAf11b3B0Ea9C697e92ABDa3D89D5c942fd4E335f,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6790576988985595,1671437794,bafkreifq3nwpgq6obnh7p5bexwq4hmflgwvvwkqglzzdomxwqkzi5cc2xi,"" +0xF84DabE76B1a95413C322Eff45e9768F732D1975,1,,1,,,,1,1,,,,,,,,,,1,,,,,1,1,,1,,,,,,,,,,,,,,,1,1671438001,bafkreid3bddmfcz4gfuaoa4pud3ktztphuix4t2lstbli34y4o5acjwyry,"" +0xe0fda19799b5100192f2bA402CB9150aDfc42501,,1,1,1,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.005423730038069619,1671438022,bafkreiguu3bdwsxhrrfhfwaq4dskn6wmvqehwyd2umyrz4yfmxf6uhsrna,"" +0x038C413AFb8B817634336895890C6a785085145A,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,0.1,1671438456,bafkreigkefyqooc2hpmy3zfd6wpvaokls65l6aggipkzhc36uaendaaqku,"" +0x77C9e49073d9830723195f3788570c2c36c97688,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2902631320735517,1671438492,bafkreidxb47dlzo5hf4p4pqjkoxn5xdt4wd63amdpyqkllzlbpt6oh2ma4,"" +0x5E464B4766FB32Ac5f4bF74249D2681d6E00FBAd,1,,,,,1,,,1,,,,,,,,1,,,1,,1,,1,1,,,,,,,1,,1,1,1,,,,1,0.3104121749518531,1671438524,bafkreih4x6563ihex5yewtqzsmplpevndi4pky2f2pd6pleprx2tdstnmi,"" +0x281A0eC0A602eB9C9B92a6711941f9D8E93fBB0f,,,,,,,,,,,1,,,,,1,,,,,,1,,,,,,,,,,,,,1,,,,,,1,1671439921,bafkreidwkgzeygh6ovkidwnshdtit4izzziovcormar55pvctbyvv5je6a,"" +0xfB953D5c69bB04461b74e13655072eaE8fB384Da,1,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15.2203458665033,1671441022,bafkreig2gh4cl3ir43jcksofvdt3xv6pwc7juhwqj77rfwxr7e3gqmseru,"" +0xA0794Ed544000f21265abd994d289180D1888888,1,4,2,,,,,,,,,,,,,,,2,,,,,,,,,5,,,,,,,,,,,,,,0.21685909313853075,1671441027,bafkreibdrqmffmrnzlbtbp4pn5kq6rlxvlmsztabil2ulnsgcwlwgx2wle,"" +0x95e9ffc26Cb33FA701A56862cd6E2b4c96Cb444e,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2.04,1671442053,bafkreidksuvpqu3n2tzgv3ar2rnci4r5kvbgoakhbxlv3zayitrp4ghvta,"" +0xc1606079b6867E25aCf6d4252578446e16f49FB1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,0.03121,1671443435,bafkreidahfjyzmuygko2p4fmdw24x73naxtj33wmbxnjfvebigzprsbhhq,"" +0x84828783701e4FDD3d09E66fE546e0555E420CBD,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,0.21,1671444026,bafkreics7u5e45l7p3rs7emdac4qfmjkuzxfc5fet4kbwjjf5mqn6nocga,"" +0x75AB80d94F9F7C0FE4E7973C8fF505882bE80f97,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0306227542838693,1671444037,bafkreigd5v7isi5thcslvxd7etp4q52iuq24bmjzmsa5n5uplhde2mlynm,"" +0x4B51e46A88d5Ec2902E1125820855CEaB51e9057,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.16186836990032671,1671444166,bafkreicknfdkvuxrh6mv4il3lrz56inbavkxmjaprqmycoqtd57k2s3kxm,"" +0xad7a281B422734200d6D24f630abA41ae328F802,,4,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,3,,,,,,,0.1855,1671444207,bafkreih26qlsmkn6lmvelcyyp2szckd6xhy3ltoxosqrqxxyihsovhvqby,"" +0xF74709B52c0E108eCFE56fA364175A779d3C059A,,1,1,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.106755951825728,1671444886,bafkreibih3b7eupocsy5hei7wmazkx5dbc7cprlpgmc7hur2iypq7lbswi,"" +0x5A6bCB75b849c00FD1C3Eff254dAc2f4560f1A9d,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.054480917120417985,1671445018,bafkreiffrvsxqpubzzolwyxlfico3uhacpkhjeupa77s52wggpf66zpfsi,"" +0x45EcA36B38C029f31262076297cf9374BDcfE7F1,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.023,1671445467,bafkreidqjt6gj4w5jca7m5wksirz7trw3btsnewlrv2naeayapnnic7cvq,"" +0x16AF4e518bcf252F781B15527aF2b48bfB5Cbbc8,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.023,1671445606,bafkreihsdqdq2zrsp6iynvnvt3wkgloljrri7qvqqlmuwbmi7prb7dxr5i,"" +0x72B76C9791216f6DDF955d330aA28C4c78694550,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0121158,1671446242,bafkreien2betf6ydzodv2xdcg3cs5bu5woofuf3xxvmdb6chi5wzpbmb4a,"" +0xDF617Fc072215c638137B3038628b420064c06B2,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,10241.434641625228,1671447124,bafkreifnpt2viohjwwfgbfok6rnd4kxc3zxr4jhsxzozcfvgkovoydgnbe,"" +0x4B886d3eea50f46624953935Adc0414008888888,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,2,2,1,1,1,1,1,1,1,1,5.269,1671447281,bafkreieeb2f5t3wejqvbbc6lacf3ecrhngho2r2f44paiumt756nengyya,"" +0x16F5CCCFD730157F1f1758822Af04a970004896f,1,1,1,1,2,1,1,1,1,2,1,2,1,1,2,1,2,1,2,1,1,2,1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,14.01536069676373,1671447595,bafkreidxr2yjwpegeky5wwlfbb6fpy3cbesv4opbwyi6sniqwz2op43aze,"" +0xE7DcC040dEbdA16f385E02C11FE3B7Be779Aa145,,,,,,,,,,,40,,30,,,,,,,,,,30,,,,,,,,,,,,,,,,,,50379.94715177048,1671448021,bafkreibvapihhyqnlgx3ovyh2bd66rmgis4izbs3sw3bnwcdvje6rvg5j4,"" +0x37Ea22D0f551AA66d54605592b672F385b713Dc4,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1671448189,bafkreifenokb2u5cpd6lj7buipyehc5lw7sklkmazfappg7tyu52sciag4,"" +0x0ADf8A5Bea1d55Be7aCBBD6eF4E0251bf740747D,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3686.6151294105352,1671448732,bafkreiht3zkch24cjnfl24bafobqrswpk6vnxnotitlztt7f5swsfa466q,"" +0xc21611A12525D3aB940c339b8aE4C4BE5865B6a2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4791428431633782,1671448987,bafkreic7ctmhbuq3bqlrma3e7nhohuqlrylidku3iahya3s6cwc34ofwcu,"" +0x68c4D9E03D7D902053C428Ca2D74b612Db7F583A,,,,,,,,,,,,,14,,,,,,,,,,,,,,,,,,,,,,14,,,,,,85201.52941176,1671449902,bafkreicv76nejvwzkvvfufqac4qjbimc35smylaofjjwvm6stcncehqk5q,"" +0x88e92986ff8523F2cCe7aA89ccBAcE997A8c8Ecb,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2082.4800514132035,1671450334,bafkreicqyxwn7s5m6ea4tra6mohked2m6frqybr7kc4s3g3d6mvmmsoone,"" +0x3b7d646966a4f9c2814Bd0b414818aB0cbd1242B,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1586.3278170416852,1671450683,bafkreigfakfk4bxkqxfh6khg72qkrufv7uiin5juxrs4uql7wl3sbai65q,"" +0x631ab8EB40588543dF900263F864b6376d56A587,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2756809216756617,1671451872,bafkreidrbsvxalomlysysgjtvqiuyanpwdomur6yadxpd2j6wtfokboy5a,"" +0x2A92195A610f21f8DA1801Ff9756Aaa11319Ef68,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4559501442623976,1671453493,bafkreidobl7lyi4dubs2zhmn7qw3pc6vkpexaoujbzdkmlut3btiyy3gou,"" +0xDC24c2Aa06eA26ac3bc4a226c4aE3182d4e11813,1,1,1,,1,,,,,,,,2,3,1,1,,,,,,,,,,2,,,,,,,,,,,,,,,1.2334,1671453615,bafkreifgbdd2ammnh3mma4fpidzkv7k75tsqyin5iq5uw2x5ifgnt5gauq,"" +0x739f3a1012EB0AdBDDCCA7606Fcbd607871d63Db,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,1,0.17063669778475943,1671453693,bafkreifd7zevfcyembn7vd23lwbiwsxvcbpkpnwpf34uyxdhlsnhotvaya,"" +0x73428EC1C479C0f7c8113Ec3D2829139C5273607,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,0.4854262429745949,1671453860,bafkreidolyqf4v7pt3dszifyxe74ppmrfiuzdc3xf4ywabp6sx5ruupbfy,"" +0xbb96d92C7F873259A1E25E0103B1b54562178eeA,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.64398858,1671454264,bafkreidtgn43dfqsvs5wslwdr7uwgnvotbqpv73g2hecfkvczi3fuprki4,"" +0x21126ac61093260d2f2Ff826395885DCDE37ffA2,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5,1671454299,bafkreidmsofywsnbev7lu5vqxnqsnw2gbrxstd6yzcvooackie5pjzdjfm,"" +0xA87A47428d2d57a1557078B3336035D0F82f82D3,1,,,,1,,,1,,,1,,,,1,,,,,,,,,,1,,,,,,,,1,,,,,,,,0.20157071721713796,1671454469,bafkreic37vglj633v23xh4a636ps3k2ynnlts67axr6dlkh3suinytqwy4,"" +0x3591E03172dD55A6e0E701354Cf9ABb6C25D4EdA,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.5646434475762996,1671454572,bafkreianbwe4esjifyubup5eog53w3lu46gja5osepx6apgxzuekfoxk4a,"" +0x68f66Fac4B02419496a7C1D5Ad5F093Ae67e6E50,,,,,,,,,,,98,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.4,1671455166,bafkreicfpsdue5rxzr4nf7msfmxgcnkrsm362pdjr2vhhpthdbuy6kzvnq,"" +0x9bF3613B9C1f44f30209723058AE2e58ec5be4e0,2,3,,,,3,,1,3,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.24361257463169067,1671456440,bafkreigv4kzc7kei6vb34v3rtq56tyexjbmt2wvadgkjdurbhe44kr5svu,"" +0x9A94d74f8883d25b86702D15c5119aF9fFA1AD60,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.08298932470356568,1671457723,bafkreids4h6fqsgiqivqlhtdvxru5zm2e7ucqqoerb6frchkwz3glygkwm,"" +0x180fB0E6ab6E35Ed77aE4E9E8C7fBcc38AFa35aC,1,3,3,,,,,,3,2,1,2,,,,,,,2,,,,,,,,,,,,,,,,,,2,,,,1.3099887,1671460973,bafkreif7fdsnm3zir4mnmgl7wtkhapngtz6ugyslczol2ehvojn5eyaqye,"" +0x387277be9d1b80D7A03832a0F4FCC4C0c3716eeB,2,1,1,1,1,,,,,,,,4,1,1,1,,,,,,,,,1,1,,1,,,,,,,,,,2,2,1,2,1671461297,bafkreifazs5bxkt4tuieh3efezhnbfrkom4k5vg3seuprcxy6esfdtlru4,"" +0xBE171D4A35725C19c7e57ca9801C9B414C0E25D1,2,1,1,1,1,1,1,1,1,,4,,,1,,1,,,,,,,,1,,1,,,,,,,1,,,,,,,,0.25539212223042795,1671461419,bafkreiabsfkkk5cxph5d3ubmej44tazrkpwmqv75xju7irbpftqhljxiea,"" +0xD90350f6E2d085aac01f422f59575E8Ab93CA399,1,2,2,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2,1671461463,bafkreigqwggm7vpmm7crhgv4wzjpqijdtxgnxsxkolwjgu24icfbrta2qq,"" +0x64c6AC491527A44BC45858F2811158936FB8044d,2,3,3,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,2,1,1,1,1.167788,1671462010,bafkreie7uxc6x6czbdoe6vdpwjdachwxdvgjsizytgl2eqpqsiuwcebwgy,"" +0x7F85Cf44E446a4B1AaCe2A28774E88cd6d4e3441,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3324280113362281,1671463726,bafkreibpzdohaypbruakqzev6nbmz75br74vkt6kqxy3rd4xew2sdycvi4,"" +0x68761dE35422d8e36d18dC2F7f6313a58c1a3616,,,,20,,,,,,,,,35,,,35,,,,,,,10,,,,,,,,,,,,,,,,,,90364.44913544039,1671464305,bafkreicb7bjvjgo5w7zwzypbenu26pvfvbn4awt2cy4oi3lwaxhrp2ee6e,"" +0xbC1934f548417f79ab10138B57716Fbc7C25c177,,,,,,,,,,,50,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,21900,1671464857,bafkreihy5jrdjzrz2kmxd65brabjt4vey5ivsx3x4qnmd6eblnfr5moqwm,"" +0x34A64a630F9bB4c8eCaA6AF99df079B34195E791,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671465047,bafkreicvy6limty2zptwgkvgww27u26gsq7a3yimrrj27rmaji5tan3ev4,"" +0xA6fEc7740EcF58F141Fe158E3795925F2B3Aa7bB,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.014248970195778587,1671465608,bafkreihxs2uzzzhc7zu344bxttppjimqwlqunknxyfcjn2af5rewfiaxhq,"" +0x03b40776AF5a364fFBAEA3d2E293df4CceaB4F98,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.025870250071309497,1671465916,bafkreidufme7mmawcbhwbkxkaiugwbnk53qqj57xcj2nb6z36gwxtovz4y,"" +0x8B9A3787dfA6d221990967C7AEe4c6F7237649A4,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,20,1671466882,bafkreiet5tdj3uotsgrqva6ny7lvnumwrzg2u7hsg4rlt3anjsjenr2l2y,"" +0x4b7A3aBA7e499d9D8c799D15064710A2Abb47F3e,,,,,,,,,,,10,,5,,,,,,,,,,5,,,,,,,,,,,,,,,,,,4943.521883632025,1671467211,bafkreiaw3tgadwdrdkegie4skpbuxtazeir4rp4qdmdn3cwzoer72a7v6a,"" +0x1430Cc22bCcFecE3d894E298A3845D3AC8E871F9,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898,1671467691,bafkreicocn3mlm7d2pyndffc4g5js3qnmh5dp3l3yns3abcmjnqdpoetzi,"bored ape g has a solid plan to operationalize the DAO and align with the community" +0x86870b7d7b2680864c145b5F4FAB9fB57Ae71B4A,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.13,1671468094,bafkreid7binnn2e2uxr6z6gh4y2x4d2lp6u4se5o62wujyryv4l5jpz3ou,"" +0x6665ff08Df4E8dB4090A4a3137665a63aaA0dd13,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.3757012482789799,1671468515,bafkreihojnocalsgkqfqjjxuiia2xkltuxecmu7tw7prtcmwzksexfpxsm,"" +0xEDc93Bb561ed9E4F81237bB21774Fd4917947B89,,,,1,,,,,1,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,2898.1668167418925,1671469562,bafkreihvzdilintqzbv7nl4hbby4ccqhql5xw3y2yjnxm4trnctgy7d54i,"" +0x647AbC6016Ab3D97994358c3B6813aB6F226e7f5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671472865,bafkreidbgxibd6to4dk7rzuuibxt4yurzlkdmamdfzby3akwkxacbtwaae,"" +0x024813B4972428003C725EA756348Dcd79B826e6,,,,1,,1,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,0.2980470231770758,1671474077,bafkreicfwzpcefqzs7frgsjvhca4lqrmlzjlkzql3rxctjwjeidflvfsq4,"" +0xc578958DD1880cF00BFfbb7Feb9c28cbbbcaD3bF,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,105.9560427434483,1671475015,bafkreiggpquvjaqw4ivfiijgmquyow7gtlel3fjidj4eqkogxei7y6o4sq,"" +0xC77dc85d870EC78BeE35a8629269DA19A36b1E60,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4516.5035807116865,1671475161,bafkreieq2tnghsiqopm4djv3dzaeaa4o3mz52bjopi5r7ticd5flhcl47i,"helped me every step of the way since joining the BAYC. Long before the council was even imagined. Hes the right guy for the job! " +0x828C5030558428af00AD1715DB9287344bFF6563,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56583.76291048456,1671476782,bafkreig4sul22wijn5ihnoxek7sqsepino5kt5lrspqz5c2lzeywdg7lci,"" +0x54a25A05F1680928b2ae1469c6c2033794d6c45e,,,,1,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,23628.656667392614,1671477170,bafkreiagt3ykssf6cp7lbiilkva73tjznc73peew7pdvwl5u5wtj5la3f4,"" +0xc86B12d850FdBBF3260a7BAAE862F85857aAdBBa,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,2016,1671477678,bafkreifgwit2d77hxri3x6d6auodqgoru7nryl4vutpgudaeokyidfdcqy,"" +0x683EbbA7A833A809071afb4819C0a2Dfd6e07333,,,,,,,,,,,,,100000,,,,,,,,,,,,,,,,,,,,,,,,,,,,10906.043740640374,1671479292,bafkreiceiappenn4bev6s3oz4ghhlyc3wuwektxj4v7fmqswfk5j5mu6eu,"" +0x8E7C024EeAcF826e6F298A2df2Ed3fFa7c5a912f,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,610,1671480166,bafkreigynfepukv3kq2ahxfg4uzhaxeolnw7dmjehdm33f3cevowomdlxe,"" +0xba8f08E7Eb69fC1C9D8434fDAc09AdcB4aDEca50,,,,,,,,,,,,,,,,1,,,,,,,2,,,,,,,,,,,,2,,,,,,20177.42051978082,1671481041,bafkreic3ib2lf3xjsjihjlgqep72acf6g4gt7vkdzccmkzg4pggog5qpiq,"" +0xbADD62044A0641Ab189C86dDD9a096a364B93c60,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2045.2796509176799,1671481593,bafkreickkwkafgtkrzlxsic7f6xcxmbaezv2g3sdl2c675evyttmgitiw4,"" +0xc0738649740929eF714cc5C0229a1D5fa8138c29,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,51255.31321457812,1671482473,bafkreiafvgxywj6aidumkxojdikh5la7ddare22tg4fdzyi4vsiq4szeu4,"" +0xA0c7Dd61DAe5Edd2E1b9a33fBe4D9FF6e901eee8,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094,1671482591,bafkreiannzgzv7nb4e27ixklnebu7nni4lbt74r7sqvhvdkdkc3th53dym,"" +0x4a851F4031345b17A857E12A0f5dAa881731f74A,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671483596,bafkreifgkfp62nckrqjixlbd5hr5zr5oznuxqog5fanrgveqkengd5jbcu,"" +0x34C1fF88C5eB05F3f7876A12CD06a4fa1814a656,,,,,,,,,,,108,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2922.124177687693,1671485543,bafkreietm3vbzfyyjsp34hlxosgjozsqfvjcizvatv7nvucmcrw53zpbya,"" +0xC883A79E8e4594C4f89434EDb754a10Da2311139,,,,10,,,,,,,,,5,,,3,,,,,,,,,,,,,,,,,,7,,,,,,,137029.44264404205,1671485765,bafkreigrxekaf7qcmi7jfo6vy464gbohi333jt6f5hgtdplxq4di3sfg4u,"Editing based on Discourse activity" +0xfD7cFA732b3F676295689c5355D65c27eedB6dDB,,,,,,,,,,,,,,,,2919,,,,,,,,,,,,,,,,,,,,,,,,,2925.1903926004293,1671486063,bafkreigjxi5ivpa2o2gnaunffbnqwvosddsuxxp4ylnjpjo5jrb3ahb2w4,"100% for herb" +0x2F64b9C5e4b24eef6C2003406302f0DD92AE9B56,,,,1,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3000.3169679241323,1671486211,bafkreidsnpggngmt7sodzudx7s6cvxldwhm4ppjxx657l3he5i4z2vgln4,"" +0x3c6E78A279ca78088a939d80968feFfcd517190A,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.69,1671486251,bafkreiesqvelzmo4aec56w42nshoeaiogerqjqetbunee4b767lfzp3kbe,"" +0xE4D0296c0Ab22Ea98f8F19Ee0567F049efF56A81,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,224.33982767315507,1671486931,bafkreighdga5c2jymveqolpsiswfrmdwenzuhaacbh3aqzvyf7qlx7zpf4,"Novocrypto would be an asset to the DAO" +0xeFa5615b742945e1f6aedfe7EDfcF61ec5DCEeC5,,,,1,,,,1,,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,1,,,1.3993311779118451,1671487606,bafkreid5oprc7m7ysjljora55dstsv35ftearfn6o5xqw4ijd6z6fbww2q,"" +0x8bbEca4D93Ce618407dfE431990e6C0C74a0f71f,,,,,,,1,,,,,,1,1,,,,,,,,1,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2.440339142372726,1671488024,bafkreigzmk6wo623zo4crmeh7wsvwuumfhbwz5ruarzrzl6yomehiwwa6q,"" +0x921Ff98DfD6739AC24AD2581a7e6B8d21A939364,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,3,1671488642,bafkreidrj33frplxr32ug5xrrcewfo3bkwx3gtc7l3qraotkh5pbvuqb3y,"" +0x4072d2C6E58c9A3d43D692c0dBa81eC0eeEEd15d,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,8856.005760504298,1671490112,bafkreidvoq3vgu4brgcterusy55vuvctlo5gcqalthqxb2gwbn2btihhc4,"" +0x3a8b9B6d9286A42d3956A54DC60ec81c6865ce82,,,1,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,,,,1,,1,,,2.5172776774664514,1671490177,bafkreidte673ewrtejaq6g4x2o3k3d3epdsuhexbs3fqtpi6xlj3ftcomy,"" +0x23099Ec85B447cA18B62591813CB89D9c3a4455b,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,26080.074377654044,1671490842,bafkreiaemhkcqrry6u44mdp6vids6d7vkmjmu5mry3ikgytke7fwh63n6m,"" +0xAf79ee26cE3f57a008ae739Bcf0996A2fB9C6626,,,,1,,,1,,,,1,,,,1,,,,,,,,1,,,,1,,,,,1,,,,1,,,1,,0.5154458151783653,1671490964,bafkreienjsee6ydk3cjt3wa7wdm7ax6nynsshglvmyhknntq4tbolcp4zi,"" +0xDCDBC5eF852964945bA5D4772B26dAcFFcD9F59d,,,,,,1,,,1,,,1,,,,1,,,,,1,,,,,1,,,1,,,,1,,,,,1,,,1.4920769512242802,1671491599,bafkreihmrxkfn7m4suxpxsy3pp36dk2dbthdbe4siaqflmlifl2xifx6ey,"" +0x84Ecf15af6fEC307aFeAB934b46947967Bc02d5f,1,1,1,,1,1,1,1,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6.236450674521951,1671492313,bafkreih572ftuw6sqbvpmvwfstughxibahssxjfpikfr6undkhvclt5pfe,"" +0x4032aB8d5ccEd1444240c7b973F36d712981FB00,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,1.7302914377376888,1671493583,bafkreihnptryi4apgvcru2ebeoepnhaf4c6eoqys6ywm7enwscrqfgmbsy,"" +0xd76Aa530b8C1F0039971Eca13ca1850047271aF0,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,26314,1671493860,bafkreihssiiskhhdbscqddsniiq7qwoq7pa3uwnm3mdbtw4gv7kd7yylha,"" +0xC1818d0D4B392E1A3c39233d9de3319b9ffd1b28,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,3,1671494407,bafkreiduzxo6bii2o74yftw4un4qjz3an75egsjq6ynnuttmhjqibeeznu,"" +0x00652700CB56BD11A52fCFb5709F89b70a445208,,,,2200,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2241.2405398706865,1671495095,bafkreigodj6yg4ijziosfxzzlecyzmpax2ziwsrz5f6jgndrwttr2vq5sa,"" +0xC22fd653df4F0a2a4331FE81f0964F4b0ee5033d,,,,500,131,,,,,,,,250,,,,,,,125,,,,,,125,,,,,,,,,125,,,,,,1256.5922312354426,1671495321,bafkreidb4mlyk4jtxwm56mrasoo4cxhssmosoypcgw6udcklkah2w2jyla,"" +0xA77e0bE155C36E9e0f4B85fD5fCF86440d619913,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496087,bafkreid2jkl7363smdfoyq7mmswsrcvmrjwizouzlxqdp4k7i5jued3gxi,"" +0xE1BF8839930b173a97Ac29DC33C7774416517811,,,,,,,,,,,100000,,50000,,,,,,,,,,50000,,,,,,,,,,,,40000,,,,,,135538,1671496599,bafkreifay6ic5slg34bm62224k6y7u7adam76gpeo7rqpbskkraeuayfze,"" +0xaC2e542e8586a8063267Dc028b9ed093b12158dc,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496808,bafkreifbmsgolrjnoabnnuzlm7576ktbnq7w7vqmm3lzc6qmszhsa6m5uq,"" +0x6069ff82e3236312Cb4DF04c6E17ca0442dB1bFa,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1745.287455015515,1671496898,bafkreic2yzsbcq36mxccjblq3pvehqjudz3gftishuic3thh6uegyidugy,"WAGMI" +0xe8fe52CB1A4154036103D036924D43BC2A3B2dEa,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,1671496922,bafkreiahhehbmgeb2r6e7raye5gbhj7zitnqkhkgokdojdmzluwqwyjzbe,"" +0x2c5317d8E45b9a5C0488114AFC96CF460e5d0783,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,105232.3637075137,1671497006,bafkreidukagtenvydrlorlpbtjhxripbjng3jtemnx6wjdkc3vb7wbbx54,"" +0x681964BEAE493D4Ea511caCa53BafE183B35511F,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,24,1671497045,bafkreic6qkzt77y6smriymocin7nfju3cw4zmdockjwiu7vrb6vqnyumcq,"" +0xEEdF3ec4235854D751d43E636341aDc0bb65dC8f,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,22,1671497159,bafkreibi3asw6t7zfiemf7nn2d6keswfsarfizvaivepya5mo2basqpdvq,"" +0xd099C484A42AB337d82AF28298688c413FFc1f10,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,18.14014191,1671497299,bafkreiaxwelfnt5h67tbjemfwenr3advltngoqx4y663z2iuaimouno5xm,"" +0x9A34B5Fd5D2454021cD373ed2F6D653507a6fD47,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67,,,,,,,6126,1671498858,bafkreic5iszqrrfmbnau6t6c7yxjv32a5cwpcowe3yspnhf3vw55256ss4,"" +0xEaC4a477C275dd968F29267CC02DE31574F6B0F9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2898.96624113,1671498980,bafkreigi6iipssufgzc6tnvjgjegk4ld6aftdiqvqyfng6uvvcxdomgmta,"" +0x969424c5Eea14327feD11624703f54E60B0aF1eD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67,,,,,,,2043.3,1671498999,bafkreieugxeqne5q3ve3l5dqsulajnzidi2chsowovwdzto7vpckugms4i,"" +0x80B1b33a888924EE204b27553D270B3ae6a22ac4,,,,1,1,,,,,,1,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1275.2639585134584,1671500193,bafkreigtenzlx5gtiyqfx2ydqzxopw24cz5bitgj76slc5ve6ytjkhdn7a,"" +0xc0309fB00BD8439155857D7d7bdCA222274F05e6,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,27394.408364384617,1671501301,bafkreif4dufhvb2xjq7mrswo3u4opclpsmlsu2crfcjeawwuxokmctb3h4,"" +0xff5A94619c71B9B96B7a160E71C2A2Cb82b050d9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501359,bafkreigts3m2uhnv2iolx5f5q6ebc4ejeuuodrywj65b4k6pjzb7smoapu,"" +0xA9640998Ac009d2F2FfB60E934F126079315ae59,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501459,bafkreihsbilnhwfu2kjv34u67z744mwxanhwi5v2kffiwrghyajumntbtm,"" +0x075aC07E9154a8A65346286d9Ef03166A74CF279,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671501504,bafkreibkabbyalds2qbjgh75isahgodszmn5a45pzlqk5uxafpvave2bxe,"" +0x70d4aB4815C4997dc16caeD4A967B4F7E386A96f,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15890,1671501557,bafkreicvsygncbhnqomzsq6pu5czve7joxw53ccityopstxdarzltfn7vm,"" +0x8D412E067f76B761b92209a9E7EDbEaF475AF3Fb,,,1,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.698129790724,1671501983,bafkreigrhsuxabiylj374q7llnax22e6e45y72766ihzmzycmu3e2a2psy,"" +0x6fccBe0ed71f9989d03af950F4bbb01eF245917B,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,52616.16556078197,1671502234,bafkreiax6dwhpzvla7ipoy2mhwdk3336jianl4hgoytyd43xi75ckqzrky,"" +0xa8d67e13AC97cba918DeCdCD78f71fca8aB2d1a8,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11669.935844542668,1671502717,bafkreiauhsbdjwmnmtiedjyrqhv5psez72hzxcf33ta3tjweq4tebxumrq,"eeeyyyooo" +0xaB888291F4127352B655fd476F64AC2ebfb8fe76,1,,1,,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3162685187198403,1671503421,bafkreianijuasfeoeo2xpsydpwzz6o7afz3dfsghv3u5jp23ikf5icxtpq,"" +0x88Bd639d6B029596B029c61490F29f57b0bF4a3f,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1.186527063169733,1671503446,bafkreifb5x344cpzjlyopyzs3nmpor6cfnbzpxyxaeh3335tdmc2e42qdi,"" +0xcDd5ddDc8eD9A10B65d605950E40B7efE7603111,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10655.861166574476,1671504936,bafkreiboryi4n2vah7tsrf2ucq22md5mubiet3cr7hnzpvz3ncooxywvby,"" +0x5A7cf87555eFE360086A89b60C1988bAE02eEe2E,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.9141748171147056,1671505082,bafkreifgflc2d2nwo47zxgvxj4rtg5e7zn6tu2ojxjv5spukg5xegu5r6y,"" +0x159968FAD6A3df074cFe7E587CDE0C5F375C1B70,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,15899,1671505108,bafkreiegevsurn4qdaiw3dmindeudk75rij6xsmzvm5pan3hts7rt4fm7a,"" +0x8D1011626268BD26CB82f00C2089e356D36a1000,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1100516185929852,1671505118,bafkreibzwtbn7j2mole3kwkixro2d6nhqxwzfo4pw4aadnit3cgdo2igte,"" +0xFFB950af044Ad20b12eD483eD8Ea4B6e279A5419,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6914491707489577,1671505346,bafkreiadwsd7qohtoihguekwno4odwxxztuuc7rhiajx7c7bixuiqfzqfy,"" +0xC32b7438b3dF7844c9eE799930a2224Fe6E26426,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6776709568618676,1671505633,bafkreid6apcg6ziosod2n4jsxwnmovgu4luvtl3vcab6uugkb2pnrehjfi,"" +0x7d6520A825e7c1F69D3d2D9BF48e60CB1f2f3C75,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.6148802940233321,1671505954,bafkreiedgsvivckyl5ou25dyih6fo7rohmmtc2upf2ezrnfuuqc2u3wrge,"" +0x7Eb885b31130543f7A8e1fCffc4d03159838E598,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.31477977728349155,1671506011,bafkreibgpekg5v6ob4smchq4zj6juqrs5kavgpcdnwg66n5wzazoyr6keu,"" +0xA97D4048b71975a475766E8278dcD2DA1E8674fa,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0001,1671506022,bafkreielpygloxyzjceicka25tniqxqv2hzwwi4q7fmjg5xticr5bbptpi,"" +0x793bEA03888c04D479bb0C545F0a31504049E87d,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.3,1671506029,bafkreibz27b5fbq6j2zkl463zwjvndsoqtl3p4hxjwpd3dc5y3ms423d7e,"" +0x35D771584C07c63cfefD751f0Ac5818192606935,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.335,1671506040,bafkreibgqpevyaqbf3m5pqlmkbnmuu65ykcchseucmggodg42wvrifnrs4,"" +0x59a5B524D7B009eECBB23324Eeb984AC6e17D6e4,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6092,1671506201,bafkreidpkx3ks6lhtp4hr4tbqklnrwj3fkngwtpxnph6pfmbj6hh2imr5q,"" +0xfdDc0659688495da6b709DC628a9B6A19c0D50EF,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10024,1671506242,bafkreib3vpuzuzuxjpi2uiflsbd5c5hwzzrylwhz4rpc76otbu3tqhoxwu,"" +0x8B503C46930ABbf53D8a9Df51733c84d6C29a76D,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,11212.286164119505,1671506727,bafkreigjhlw4m5d5ce6mge2gtxmn4tx337usxdmqe3ecoturdj7hfndn3q,"" +0x423c03f48dc46a1F27D76d285d43d0F101666666,3,3,,,3,,,4,,,,,,,,5,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,0.25726110987867606,1671507327,bafkreibw3sf7xts2vjlvbovo65s7mgsv72tw5rm3srovoqd67f4cqoqfte,"" +0x6daF6dc3c8AA3Ee860478645205B5F9D6397616D,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,0.16175387513335415,1671507503,bafkreickuztg2iesqxxmyy4dqcgqtq5be2j4mc2iqrg36fqqpwx3upbke4,"" +0x89A23F067054Fcec705E64D4f4aAc36FF0db6B2c,3,1,2,2,,1,2,3,3,3,,,,,,,,,3,2,3,,,,,,2,2,2,,,,,,,,2,2,2,2,0.13076951726910613,1671507534,bafkreihxbzcb7zy2dy7th77sv3ix2zkp6hidh2ggkyajoj4j2tmcr4jldm,"" +0xFA6e906DD9084d50be4B0e6AC13ef5B7186362E2,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.17269004542075,1671507722,bafkreic3m2hahrt4ncwtujo73q2klzh56ecemt56uxvnx2zm6bmo6t4364,"" +0x2F03CE8B4e68b860Ea89a59010F964E377fc058C,,,,,,,,,,,,,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,10822.204215641657,1671508466,bafkreib6nrxfpclprwqu24ubkgr44gbsw2h6fqh5mk5tqdcrmlrbz5kgvu,"" +0xCd8Ceb90f34f1fe03f384ef33aCB386F45872297,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,647.3542743645634,1671508957,bafkreidfx6a6j3sxsab773zv5ai66syseywmnvqx3zx2rkxtuns4jw74eq,"" +0x37c99C0Bd9149A9Cd5a3C7C150c604D896786945,,,,,,,,,,,72,,30,,,,,,,,,,4,,,,,,,,,,,,,,,,,,1,1671509210,bafkreibmjr6r77bn2kdj2zkchsmnigppuvaax3zhj4yeeb2ncvjr44axua,"" +0xa698A0adFfDF132e3f8F35f3C89c0B9623835090,,,,,,,,,,,7,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671509551,bafkreihbr7kjw4veekq6p6gjcbvshzpcqnmex4yoml5oxyntjepkc3tm2q,"" +0x73BEaA2Dd24aDA65DF6Da284729558aFDd8105Ba,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2080374203347921,1671509810,bafkreigizktt7frk7cedg276ansyrkvxm65o7obi7hs6jovcwojqxaz7cq,"" +0x5B36002E5Ee1103A44246f67b067FD5509b97A9E,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4.05,1671510125,bafkreidrx4ibdy22f5c3dcvmdpun55kf32uoeuzipzhyksamob4fixqghu,"" +0xd9a67Cab3cdd712f65B0C48e3F0015673F8D9335,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,1951.7510746902203,1671511811,bafkreih2pv74py3mvfdzsclgs3csd5pno327v3kco7vtsvkrnbalj23qhq,"" +0xFEAfF63e94268c2dd6170794Bc7dDd5007910CbD,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,15109.498344324074,1671513706,bafkreig67lsc24ykmgoiodbltm2qp2wj4a2ar7446wg4zruyf4pwxo5qk4,"" +0x61b86C9E2Df0ae0f9288E27FB3dB2731F59Ae733,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2928.6916259367863,1671514110,bafkreiarprxz5rd4z4rh3jdxtfbzxlmxunsm3gzty77m3plsr3ruedwyv4,"" +0xcb7958Ddf673Aa8f21614346d3E1c46182A9454d,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.2,1671514481,bafkreigj6mqbg7jox6mtvdmxrf4hhild4cwywatmonshh7eoj2xln5inwq,"" +0xcC99489Be87F4Efa26919d918995c09a7A688677,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,8569.237459660348,1671515676,bafkreibznoetj6iepa4dl7f32p32qw6cyxctclanqeh3xfbeyo5w2dt3jy,"" +0xE0e82310b21c06eF9c1E92489a9CB542B54ff728,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,14178.615459130842,1671515707,bafkreihmc6k545dqmzysjhq3fjqkz3oigq3rmav4wjlrrfhijpo4wc2w5m,"" +0xde731672533D772C4a21bfA0353299C320151de8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,13190.524692163743,1671515731,bafkreifrhn3s4jatk6e3t3iopjdyfloqoom5ylinn5ecurxyib46g3if4y,"" +0x0043859dE73f1bEC4b123Eb9311436c299B38Bf5,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,60.129847307698235,1671518139,bafkreidomanpqvvdprduibxvqichhkbhc3b2fy6udgvtkzvqaw4wl7k4ey,"" +0xde1B6dD59a147a5CBD584F5eC2E0954CfeCD2816,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5796.185350700435,1671518221,bafkreihjdno6b2zuubfohxyo6didomyx7tlzobvpl4w3sk5qeyyvvi4yde,"" +0x5a507c770246Ba98AF4003efdF118fD6A37466Ad,1,1,1,1,1,1,1,1,1,1,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0.5725370190433058,1671519772,bafkreiah3j42jqicyjjg4p7aoc5o7jjo7olln4yd3da6d2bddhgxf5qb7i,"" +0x8b727EC4612dB947BA4111AC8359b94d6265a869,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,143000,,,,,,143075.0889022,1671520510,bafkreifl663yizdrzvnskcilw4fxh3uzu7qvtb4apmtu35xhyrngv4wyqm,"" +0x072c807A5447D3AA990d33C06850baA4caEf0F9a,,,,80,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,10,,,,,,35408.525493881854,1671520719,bafkreier5zqenlkrmjnhnsi5nder7jj7xyxintuof5rblb7ckiofxz7cgq,"" +0x3eA7c30e91720745a9E57527eC74863A507849AF,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,3.934918763586961,1671520949,bafkreiheniwii35rfplaqpkdn6jvmuacyjmohlabcbh3xfsrsc5udswrsq,"" +0x67ba6abF3fd1B9668f1aAe171Ff450D054418ED7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,579998.84688021,1671524357,bafkreidcjigxslutlrqeibi7rtl22hpvnafq22x3bh6raa275axdvpmpcq,"" +0x4d143df97ABE6f3521ee66BdE8D40Ff830f7a104,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1178.5069802645348,1671524626,bafkreibdxtya546o7xezlgnd7ok7tadt6cl2sjupnfgz3ks3o7lpvngs6y,"" +0x7E88854a5f2A5e6647FBe67F08A184dC0867a822,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3000,,,,,,3108.218288548972,1671524906,bafkreigiwwjbw4ehzhudv6rlqmtl6x7fips66jxymepn3qy2fatsdff6ky,"" +0x0CfBBDFF8e741Ab4d996fD121BD56f20446E8F8C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,5912.486117608522,1671525471,bafkreicwrp45v4b6sjwbfzhw5qmlzh4crkemxzecztbjjp4znr4zpv6vka,"" +0x424aDf9d641b781870AFd230775b4eC9a6E3b2F8,,,,10,30,,,,,,,,20,,,,,,,,,,,,,40,,,,,,,,,,,,,,,11951.472619222248,1671526281,bafkreifuwtcwi7hygx2ymudghq4u3xh5tawi3tauxzjecsg3gsmy2jbija,"" +0xA4D3786210A59CC113eeDf5a30e1358Ed9BeFa2A,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,66717.73498510045,1671530926,bafkreiaqwfp6ufcuvdaovaavz4wxb2dk3ykhpct7vbfnqez5wpcgys7vty,"He's the best" +0x45a7742393cF1df4F8fC33926a4bd474a3941A67,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,35152.79,1671531445,bafkreifflqmh3xlrtubd4giwuaaywplc6vgknlwdztzfyjjq4ygreoqkbu,"" +0x75DDb7aB958135bBE2DaB48D6286826f6aa5E3b4,,,,,,,,,,,,,2,,,2,,,,,,,10,,,,,,,,,,,2,,,,,,,7065,1671532296,bafkreiecoi7dn3zpqnlqt55uyulvmobsapntv42ashkwg2yxc7g5qsr5km,"" +0xFF1882511a5673194b252c35f2530562f74F47e4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,0.1,1671532425,bafkreiczihcuz5j43gfarz7fswlxvthlz5554gkfxo4j5denchx6fv2374,"" +0x7977B909D55a53F9c73140f7F611EaF0638238Ed,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.011218295138671314,1671533780,bafkreiejalpwg23itgpmbpsepsrjqda7cjewgdsmwowdejjn5zj4aqesmy,"" +0xa785a1FD05a0C006b94484F124F6F420E6E50834,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,12346,1671535829,bafkreiczgr6nmdu7p34kq4lqaktpkle5fgmfkudxc7saarbalxermh57ei,"" +0xC3115992BC4E840bD7af1F1781f1c46b7374DC7a,,,,,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,12809.802732478318,1671535952,bafkreibxs2khqukzpuyocwtwvbi6aiawl3myxmhqttutcxzgj4zvexfpx4,"" +0x8247bC62985678B38FB9cCc7E7c321C030E9aAb4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,316.96062488793086,1671536324,bafkreibqdlyms2sod45gd642fq2hl42sppvn3nas7f2blijzyqsx3ek5wu,"" +0xC3b30E0C1Be66C72Dbb6e6DeB85d660cb3eF0270,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1220372.6085502957,1671537805,bafkreieyiuav3kok4pz5zuxe4hqnt6kkr625xgsaok7k6uxpbpybbjdwxy,"" +0x50B13f2F79Fa06Ab33f5eaf7ddea666499C36de2,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.2,1671538698,bafkreigmk7cnrup267eeipsnvmbvivsunphuxv2t3phv32ystlhgoktakm,"" +0xFB25B2687CB2403A7625f0C480163b4f020E53cd,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.37041196735673104,1671539951,bafkreibq6e4vfnwe3uflethgl4ifzxvivtaormteotvnfv7zogc7bu3wdy,"" +0x8Ea2a56feF1887001961b34F69b9191d24Fc415c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,10.82,1671540021,bafkreiemk2l2axkb6wkflfixgpdgykwb3cbh6yfzu3qgrfid3r3rp46qzy,"" +0x0D3B8744600dA2e200d2a46f676fd5a29B7BD1BC,1,1,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1.1698928013945156,1671540831,bafkreibdbbw6rmk6g5qx4euzp76rwq3zpusjq7yrfehd5ikbz6isfacgo4,"" +0x401835554EAbB3B676ce8B0E8B6b066543aD7DA1,1,,,,,1,1,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,0.2314256955274622,1671541597,bafkreicjteghw4cz6xnzg2wlsmvbmypzeuj6755qbacyjio3v4lxtcmsra,"" +0x9076522f767597B93FA83F39ce163777Bf20C3b1,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671545155,bafkreic2rc7p3vrvalhbryrc2pq24fngfllvxummvlppozxpstym7nretm,"" +0xbbd23079B8D81c6Eb100e822825E410E2e8B1064,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,24065.275759764358,1671546593,bafkreidgp6o4borifzq6valshd5zi7iyolnz2lhhqcrjoqglwo3oacyfd4,"passion positive dedication" +0x903F9520Ca4bc28D53a516C04914deeBbBf2F243,,,,,,,,,,,,,20,,,,,,,,,,,,,,,,,,,,,,80,,,,,,93.84268846835003,1671550714,bafkreibdljokjwyw6lv7dnanlicxw2uwriwvuyc7qeja2zfmr37fk3vpmm,"" +0xf56345338Cb4CddaF915ebeF3bfde63E70FE3053,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,9149.239104040693,1671551349,bafkreicsdt6vcg2t5q35ocisychttbjv2vyehrl72bsyefkpkkrx7l4nm4,"" +0x21A0F52DAa934786A5EF80c34B9De8b94Fdc9822,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042.3737876676703,1671551364,bafkreifnlfcbbh5uazdxa6f6zravoweumpodl4skvtsscucfmvydou5dsi,"" +0xE88a203D722e506648a7e9482de68EC9C58249e0,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,984.9890912807199,1671551444,bafkreigqjzyx5i63am25s3rfoupfhjlpou7gmlmdulrjpwj55pqpdbss2y,"" +0x81b3893a8F3557712705E83D2aB877710044d74d,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,118979.64445035787,1671551557,bafkreig5xlykgkeallcygzsk26zytib37mso4wllitjmpawpspnwl4b5xy,"" +0x9f4A549dD4415968f0279dB9Ae43AFfD7354CFDE,,,,7700,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7651.2410737671,1671553435,bafkreigkqrxhlker6e3erdldgeioalkupwvxplfuvitr2cmyghwr2asd5a,"" +0xdf1CF9E3DebfEFd56286eF4024646f49cc540e37,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,278644.0393379495,1671553840,bafkreiepcyzy5znfaja6d2oz5jmht62n247vsi6mx2rymt5sfkgw7xr2cy,"" +0xF584617637c2Bf5b6a826aDf213f7BEb9b76b29A,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671553888,bafkreigk4ztpgun2gfy3kj454nzt2s6gixcw6dxgq4kwwsgozcwhz7uywe,"" +0xb7a98544083a5f6Dd3Bcf267aBa5a714E3f515f4,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,451209.521835123,1671554311,bafkreig4y4ctv72hg62v2fnj7e4fqypcavvwhgwtn22bluuosud3feykuq,"" +0x0eEFfea78e89A75F6BAF1d345F16B185EE75a815,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,,,8092.236579863466,1671555111,bafkreidh2diycr4ta7apo4hzyox457wkxgtovswq2vn2zwcyrn5leu4wk4,"" +0x0253de2863975260822611086835571f86b7794f,,,,,,,,,,,,,1000000,,,,,,,,,,,,,,,,,,,,,,,,,,,,8546.26298904,1671555535,bafkreicd2bhevjukvuob4szfgdau5w2rou4b22yzpnf5a4eptpl3ldtzhi,"" +0x17B9c8863b3bD8D5Fdb9497378fD0cDa29C15AE1,,1,,2,1,,,,,,,,1,,,1,,,,,,,1,,,1,,,,,,,,,1,,,,,,401,1671555624,bafkreickj2wjptzhcy6ajcocwe7lhglqdu7s47c7mmuvc3kaf5y6kgdaq4,"" +0x04F671fF7215EB5908Ee1FB5e7a089152681AEb4,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,21983.169629199983,1671557165,bafkreiavoiqk3fcvs6ygtmt3zjhvwfgbu3xonrv22ykhrnz75bbk6ht564,"" +0xA9061b9fd4e3Ed12713fb64743c01F72Ab86D30a,,,,,,,,,,,2040,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671557479,bafkreibcu4dsx5px56r52v3ihnmws2zhgjnfbphbt3obwkjy2kuxi65shq,"" +0x96474a1ab05Cd0D67eDdfd9F86F0569ACA3d7e56,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,116565.56381748024,1671557725,bafkreigije4idgqevlfxql33hoj2ihpyoqf3s7dgrhsznc2suxsr4xnaum,"" +0x771690B7AD4417878a604B798aC38b46262B7670,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,98555.44178400462,1671557764,bafkreiczeq3tnrlloc3r7uwjnpwcpurn73ohtxs5lzhvcrpl37mxpazgw4,"" +0x4A97e4E71BaE0263978323dD8442e490bBB533cD,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,99428.1109508388,1671557824,bafkreifa2ouzr56r5uqg6d4evnuf4l7j6ag2dk26hr5uperiznji6ppdjm,"" +0x5C04911bA3a457De6FA0357b339220e4E034e8F7,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,5318.383702313741,1671558315,bafkreihtontakqj4cykv4sti5eycsynkt2nuuk5fw3flvh62w2yzkl2ib4,"" +0xf1faECa73C28bd888BdA15D32181C6421D75B986,,,,,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,35.289565725491144,1671559104,bafkreicch54bdyhepdstv7d4ghccrrcdiegld4ofhn5d5nnykkiwouqmjy,"" +0xb75E34c02BDEeb29fD9826e8E6b887CDDC4cAb8e,2,,,9,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,1671560959,bafkreihhycjqhb2lkcgttghnf4c4almi3pqdvv6jqfioxwpeex7uhotnuy,"" +0xf62FDFd493EE736793787a2C261FcbDC6D753D67,,,,,,,,,,,,,,,,,,,,10000,,,,,,,,,,,,,,,,,,,,,10241.84021277827,1671562681,bafkreibm4we7kojethwdo3cmpm3djfc5ooozhn5foc4nywak6s7o3foj5q,"" +0x14D87e292Aa0e251CA50BF980B8cA54d4f2f2623,,,,,,,,,,,,,,,,,,,,,,,19000,,,,,,,,,,,,,,,,,,19193.19953931745,1671564550,bafkreid7o6vpzrqfzhkaivgjxiugfmok5vefwjktk43dug6zucinlpqmam,"" +0x8665E6A5c02FF4fCbE83d998982E4c08791b54e5,,10,,10,10,,,,5,,10,,10,,,10,,,,10,,,10,10,5,10,,,,,,,5,,,,,,5,,90374.6850772568,1671566361,bafkreidr6toqot4c6422cuwpoxw5iua3n5oo6aehy5yjh42ghsyhn5f4si,"" +0x578E941424770936988B009D837c80a9E579c431,,,,,,,,,,,,,,,,,,,,,,,10094,,,,,,,,,,,,,,,,,,10094,1671567147,bafkreib7pv6dzszowflkl2mw6uji7t2d7tifmvsqgbrnktqcfrs3htbvri,"" +0xEe1d599BA0e6C585277c5aFc0B89A9ed12534E80,,,,,,,,,,,,,,,,,,,,,,,10950,,,,,,,,,,,,,,,,,,10950,1671567686,bafkreichr2uyhdn4qhcsdhnelg3iac4gilx2xo7eylb2zgr6ccw4wkbau4,"" +0x33Bc4bB331A67088F1732eF5B84F79e9caB29CF7,,,,,,,,,,,,,,,,,,,,,,,12992,,,,,,,,,,,,,,,,,,12992,1671568226,bafkreic54lnzqzqkjyoemfidn5rk6kkvjp6wx7zaxxevbezvtopffq5n4e,"" +0x9ABb502f272e8840ccB3aD68CfE7E2E82c809A21,,,,,,,,,,,,,,,,,,,,,,,17076,,,,,,,,,,,,,,,,,,17076,1671568707,bafkreibdo4bylbs6jbzajugz7x6qylxuh2dvzu7mmdtijifbpo2ezje57y,"" +0xe876387B8246663Bc0f3c76114aD75d58CFD2b46,,,,,,,,,,,5,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,36390,1671569644,bafkreie3bdao5xexwxal3lvewrzhtsupkhltvbn74t5uyyghn3rq4moz7u,"" +0x7525e71f51BDa1fBC326000714d2fC68ed5Aed6b,,,,,1,,,,,1,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,14463.171912358788,1671571756,bafkreia2bfvjize65gsaczrfyny4o5muetnrqvwxzg3tflv43tjfasy4am,"" +0x08c1AE7E46D4A13b766566033b5C47c735e19F6f,,,,,,,,,,,550000,,,,,,,,,,,,600000,,,,,,,,,,,,,,,,,,1155619.8008433485,1671576881,bafkreiczfry7lrjhar3mx26eq4l6vy7a2cf5beg7ct76glwctdhozu24ey,"" +0x8da288c9FdaA754F2eeadf8145222bD1cc8782ff,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.252790482840706,1671576924,bafkreic6gyusknnorbm7xaopqktytye5fwtycpxxsjolvdn2q6lbkaw43e,"" +0xEBcacC414478f5e2fEd75F56566baA90b60188e4,,1,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,9569.539192798118,1671577163,bafkreier3u2oqjwevic3ziix555cviyb66irix2ekzkykh2wvstr22pjpq,"" +0x8884fBca23D2C64a7d526731AC93d2d1c9A428FB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1000,,,,,,2451.6912959315214,1671577524,bafkreig6s6fppoxdvnpr4l4xbo3sk7nr6435nivbk52nb45piwg2lvmxde,"" +0x6a91B82a9Abd58963b164d01CBF793CF60c089fd,,,,20000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19954.947765464392,1671578965,bafkreicmjgyrmzvbny37wjd26gmm3f7fzahipc67hcdydxf6alqknq3qqy,"BoredG has exhibited amazing efforts during the campaign and was extremely knowledgeable of the problems, understood his role as guidance. " +0x2974f8b144b4E2Bdb6Ff57797ed9cc7c7aC77618,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,13848,1671579750,bafkreidt7awrss54dhh33oamaepvjg6lkf4v7pkzdxavg4f7szqgnaxmmq,"" +0x99918ce502C8861aC6a664b3f56BABF0DF93C695,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6443.682214480737,1671582267,bafkreia32y4adadk6dqdpiys3abu63graumry72zbvfedpx3vs2lsn6yvu,"" +0x8f1B5A2c412b8069E80eA399c4B53be4F4217E98,,,,,,,,,1,,2,,,,,,,,,,,,3,,,,,,,,,,,1,1,,,,,,53791.23120483479,1671583988,bafkreiaf3sqsoilwgvs57pie3sqsheff2a2qcgyxnwcelxkrekf6eafzaq,"" +0x22154EC3f542483b2C35d67CB5e75A905338C259,,,,15,,,,,,,15,,35,,,,,,,,,,35,,,,,,,,,,,,,,,,,,90634.07209211274,1671584648,bafkreieglget2q5negummd4quwaz27o4sglelshra2bn2lrjjlwq7fg5nu,"" +0xC7AA66F4618171e4e074c3B3Cd87645d322aB1e6,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,22230.072102758197,1671585769,bafkreiddmes33qnvi5tkgueqadc563rxqidxq5bzne7hsgwvi7mhiryg4i,"" +0x3207136F3C82370b17eD87B89F91fFCD6987680c,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1.885365861029664,1671586647,bafkreihv6jdqnrzpczo7amlsjuz3qflpsqttx5zbomb5pnkyvuw3qeja4m,"" +0x7d795a0CdB5B2F5F7177606d57313d17F119278a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.21627144159443348,1671587694,bafkreiel3vlizsqd6wibbryw3hwa5cxjqerhn7yv4g56su22akx3kfsrqa,"" +0xE5e508C953114f8688b9d6072cB1196Cf6487006,,5,,20,25,,10,,10,10,,,15,,,10,,,5,20,,,5,,,20,,,,,,,,,20,10,,,,,77.62390972967073,1671587998,bafkreiefcnxje4btg6nsgc2vpzk26kvqi2d5lb7b755ongpxqm7wno3huq,"" +0xbf118E085855598A04Eb12338BA0ebb16525f521,,,,,,,,,,,,,25,,,25,,,,,,,50,,,,,,,,,,,,,,,,,,19118,1671588764,bafkreih3xmdiqtd3csf57ss7ah6oosh2j6jzhrh5mrr66iwapo5cppeghy,"" +0x9E4E4bEC255a59d2b07cE3bbEC0aFe5Df00B4b45,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,10869.69156719,1671589195,bafkreibk57gkzn23nbeofivmaktswpb4xd4kdsd5vnrmtsva2gjq6oyvb4,"" +0x85199311Df08299D312A66Dd90C98FaC27B2dC86,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,37249.677972927544,1671591096,bafkreiaa7a5nyvxjpo3hemv4nc3pdgdhqhuyhwzvwfg3e4z57llzguubpe,"" +0x8eF7F3651800194968e04030CB09C0d130514111,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,0.6307290555139802,1671592770,bafkreidovgkc7imqbflrzmtlg4slvro3y7vtwyo7r2ohomyfwnvjy5zbom,"" +0x157Ea7465237654286Ba3FdfAeFD145cafc8859E,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,1,1671593648,bafkreiag6rte2vdjitu4mdl6hv4ofd5rttyqs53tsg2vmcyou4abndrfrm,"" +0xed14578B5317333183dF8541E75FD5F01B8bA9e0,,,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,15034,1671594365,bafkreiejltfwauae3wye4rex67c5zhi34l654z57gxla4gbrgqqbkemkey,"" +0xaa73F5B2DF5364173e2abA92890bAA6026a2251b,,,,10,,,,,25,,,,,,,25,,,,,,15,,,,,,,,,,,,,25,,,,,,11156.00691272,1671594517,bafkreih67bslmimn5xhc67utgraqo3q5dheyjvni77brcdd26uudfshini,"" +0xff5fE762636E874CAD39C05B92ffCb09c520b7CD,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1188.8754005049534,1671594858,bafkreibcxbxsv5mpyfielbn3isl2pvakrsglx66ffl72y2ki2gnawdgbg4,"" +0x5b47Ce248ea313841668A318AFB9a5597d5eFC23,,,,88,,,,,88,,88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,96.88594271051765,1671594899,bafkreiefjnfzni5b6rtlhtte6d35em25eapnunil57wcrrful7ectkxk7e,"" +0xaC8FD22Bf9588A1Ba5562E05C755A2B94EA34cDF,,,,1,1,,,,,,,,,,,1,1,,,,,,1,,,,,,,,,,,,,,,,,,11892.353265796084,1671597823,bafkreifkaviuggvg2ot2vbhcidxyxelm2d3driqwdie6dwyb3tbhp3myam,"" +0x08552b556cd22F54141B361E207619A49F28FfEd,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,8946.880185661481,1671598351,bafkreibsmyqujyeupudrzwgktwnsdkgbpr4k56dtppsprhuzjqcbdpgecm,"" +0x241b0D032fCE2427E0171778F146Ccafc90aEDBc,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671598362,bafkreibpes2lab2n3pqe6xwqmsdjtureot42eb2mlufzsvx3kmbub3k3di,"" +0xb8861Dd4C9684eDDfA720029C91681c288Ddc084,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671598503,bafkreic7xmcl2lacjtxy6g2umzlhs2zsltwqwh2mpkkfyejzraaqpedhky,"" +0x5c0F53Cc4bEcb359d2C3f2d67e2B578eDf2Bf4fc,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17259.230981740526,1671601433,bafkreie75jrcr5yi4mr4cl2oy776xnstuuyflvh3cfnuzkizfu73b7kxfy,"" +0xe8Cc7c453ecA25450CA16D551dB93d5F5740E054,,,,,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,21265.706945654583,1671603414,bafkreib7o2e4nxroyw3gmmhh6s7nbgqlfb4ihr5uklbbfbw6vbmdcdxmwq,"" +0xFf3884575452BF87ab027c8C2933772d9D102896,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60143.30940149005,1671603505,bafkreidi24vhtor5ojkbqhwjptbvvjwatwdmraagmbv4bq5rlx6np64ppi,"" +0x6f3a4412262428dc7dE6685854bF50298433D0fC,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60771.49086761074,1671603587,bafkreieoixfcu5op5dfpdmy6c3zy5bf7zj3tf7od4vyd6tyxllyoj7z5ha,"" +0x9543b24481Ea651eC35F805E7815E0A314Ca7490,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,61804.95069897057,1671603693,bafkreih2ukfyyt6kwripczg2nsudgmtemd24nuoxbsmjhrqpjo62hunqgy,"" +0x582643c7E266a4568d9662C0fb9d8D6Aa7592442,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,61852.75488300007,1671603931,bafkreiesat2cuuey5nr72l5begavqlagkv6t5wbb2eibk4cmvwgb5llmhi,"" +0x4A77CBa0b22646DD2f6F5a9998527D7D5f49703a,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,92616.71092,1671604680,bafkreic7gvdv3d5xg3gqofgjbqplfug2cdtuvqgphygazltgc3jwjif2km,"" +0x833F96475e8032f88BE1F3e2b57D5Ee31eeE20EB,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,44849.11709327758,1671604762,bafkreig4djsptkb4pzynuouqvbejvpdw5iqbi6x6klduar34pzegycz444,"" +0x09fC90831502fBBA42EB367EB244B25f9c2804c4,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,56467.47515660747,1671604824,bafkreifyox6lw6dfnznlhozsmogmwbdnuypazkht7wnkclxirkayayumke,"" +0xeA56CCc1F88958dB6a0868957917861A1dE5E31f,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,45585.28196770686,1671605105,bafkreiaabxcg4q5pvpw7rzjtj33a7em2fw2yzajjxwax2orpt4y72kxrxy,"" +0x037ac7Fa0039DA18D9bDa7fA946c684358be4b52,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,15798,1671605410,bafkreia253dcfpbu2sl44ch4tm6ak2eqcopyre4xo4nxhf5znkgzbtphdi,"" +0x59e1cDf908933Ce0f3296b64E726160aF1B63320,,,,50,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,75152,1671606181,bafkreicpteicmwrajfe24ijfcycufo44altveoc3ufgeinqydidoff4lsm,"" +0xeee22b68F93e130535d1d56c1B95Bf22c94090E0,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,151802,1671606281,bafkreicf4z7i55fvlugduqk74drnhu4ark2ynvpvovztypqrgp7e57d764,"" +0xd6595AB8D76f3e44c1c80b6c64Cf721948C9cE0c,,1,,,,1,,1,,,1,2,,,,,,,,,,1,,1,,1,,,,1,,,,,,,,1,,,0.3287170734307452,1671606305,bafkreicokc676lpzy5lrvtyhizckzw65ec2hiktoi7wbu4nccz6wl3spxy,"" +0x9D4c1C518442aD9Eb23cb79A4792D508b49c81af,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,15034,1671606379,bafkreihd5lqgfr4mcff77arbjuaz4dp7cpevzpgmtstohuqef5aemlomuq,"" +0xE28160714be54a94797BeBcf69d6FdE4a883a568,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,50650.31329745207,1671606464,bafkreigeovendkmxeuvhuahllj2cv5r7vtgohjjrlufz3grrw33gc6exp4,"" +0x363227123564aCCBa048094A2D554239b1aa5779,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,60780.37595694248,1671606594,bafkreiaik6v7u6ko7oivapdumgwsxwd7gehghhxkdo2ujyt2735gi4lqh4,"" +0xEFF6f2D3770550A4dE70777aDF86EdbebA252561,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,56282.62813612874,1671606653,bafkreibr2jm2zwm7ehvnbqzycvazandtikujnnvydgp5rl25tdm2tlc3ru,"" +0x1D168517c61B572c3df1CDDDeF33879689dCD1A0,,,,10300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9985.327579744204,1671606959,bafkreiccnscwgvribczo2zlrkuoymfmbcgbwtaqcqiccbvbypheidapy5a,"" +0x15251b01C04a14628e4480Ab3e40e702594cf1dB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,9647.177019045108,1671608605,bafkreihsp3qkm5rl3aqqs7jibelloznthh72i3cyjhyf5ghl7o2rvkktse,"" +0x80a20347b912dC538639112754320C016812a554,,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671611765,bafkreiatk6u5ge2b33vrxloo5626gxhzw42skfj3wtky4lwddgxqls2mx4,"" +0x13a80dE23190e82DD00c9d41bdfA5C23D223d20c,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671611933,bafkreicemaks6yyfft5y6h3uzxi5rbflgdzscqh5umpwedmrs5yzlddhgu,"" +0xd32664737fE970EE00e2e95BeD430C3845A94980,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,40911.6,1671612037,bafkreigvndtjn4qruytiaw7qg3ibvhmzvlwi447wrbdhznqt4aarayo3de,"" +0x03C84F943de4CF7bBc40117Eb75EDa994EB0E240,,,,,,,,12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671612139,bafkreiaiq5p2hkjs5uweo7rnaf3jym5l645qtvc3hoq3fxeicwtxthbkfy,"" +0x85321407cCa732fc01B74B201E490Be397166B3d,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,19867.6,1671612158,bafkreihq3prhqmpkrv5loq5mgb6jhqjw2xtayiipgggour3bgosaz2mite,"" +0x33569c101562e1fAF5b24581057E5cEE4c8288D7,,,,1,,,,,,,1,,1,,,12,,,,,,,12,,,,,,,,,,,,,,,,,,333613.24233267165,1671612212,bafkreigbut3igc7bxujbiceztg2cyltvcg7pfydminfmfhq3faylduv7fq,"" +0x09fF3E739a0f87D1a38b551659079cC6BDfbcF79,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,29962,1671612249,bafkreietzmv6by3c7fd34co2zybdpd5se5ljer5pbjvz4leqfbnksjtsa4,"" +0x4F17E2Fe0b2688636282884066f2CBc8b741a1A8,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,,,,,,,4.15300329,1671612262,bafkreihwos7kjmnr3yzifhdijfr2kphhmvrtjozq4uoapxvlbohbcodmda,"" +0x82a479BD14f05275A68016e5338367200bEE08dA,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,12281.92802788,1671612416,bafkreiazq3do5smuost4cyldbltnzvieuateb2amvjxwfrafgjat3aes74,"" +0xc55Ea01bFF091198CdA9d91100500b70c532b1A5,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,22.533934923197926,1671612458,bafkreihp7qwyhtklezud5vnvddpnx37yu7weeav3dcw6gbr5hi53em4miq,"" +0x5E8456702Ba82f5143Cfc2C7B1c35e9bEEc02CF2,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,10097,1671612486,bafkreid4enmxddu2vkn3w6g4mdojuqefnx62vz5qpawty7ry36t4mifmga,"" +0x5E999748CBdad576F17BB549F25681c01d6aBed3,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,791.158063234232,1671613058,bafkreifhb746j5wgsgdoc357cqpy3bwdrf3qrdi7cv3bvstgwpnn5znhqi,"" +0x5c5Bdc3e2Bcc382C1c5b05D3f3139BAB829C6160,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,20.694623276662835,1671613535,bafkreign4surkr6a2k23om7rnfkwvb4plkeuwjvh5kstkbr3nxv7l4mcde,"" +0xc8BA28507aa7F1825dB28a7882402D616ad7F562,,,,,,,,,,,,,,,,1000,,,,,,,1000,,,,,,,,,,,,,,,,,,2043.2588341142925,1671613554,bafkreibqgoue3eerqmkywv7efjjcvlkpbqm77b44wwsxp3xc4orchzb23a,"" +0x8928b26dE9eCc59cacdbA095C6Ed6237F48DdbD2,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,11274.014978907262,1671614188,bafkreifhjtckvus5w7qehevheqbi4x3rf65ihhihvgujpntzzeluaoen2y,"" +0xd4c8AE4747926c3b09b3A9B83071d94FA6e2c740,,25,,,,,,,,,25,,25,,,,,,,,,,25,,,,,,,,,,,,,,,,,,30594,1671614267,bafkreid2phwemqf7qleij3fol5euxcrzoszae6ddcck7cukcewza2ejpn4,"" +0x5fFDCe83c21820ECDD98DB65D2801e42d74d9f01,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0307675621158374,1671614592,bafkreicch2ajgx4rw6ljevzim7mspn4atg4nnxx3iyfrrxjkx4zkv3qhhi,"" +0x400e4F44D0cE889E1D09FC12815Befb059D13535,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,82300,1671616189,bafkreidpvcs4mxdlahy67idlpifuxvxqgo3caplykaqx75mwp4yjbd6fke,"" +0xA72D8bf26E605482F7332084944272ec19dE34Df,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,23427.23234621043,1671617359,bafkreigcdz4qcq4ngf37osbih3daep3fphwojuzlq5uqpdpmsyhwjfs35a,"" +0x720A4FaB08CB746fC90E88d1924a98104C0822Cf,,,,2,,,,,,,2,,1,,,4,,,,,,,2,,,,,,,,,,,,1,,,,,,52095.57694186,1671618140,bafkreiaobyrdgqtfnox4txpqedcfqcitjrqgd5634pqrcq3raynzswehey,"" +0x1CC3d66A2DA4Ff929002875E381d2Aa232b7Ec03,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1.0000042871193444,1671618760,bafkreidsrbcxbuqhjhtifaaswf4nldgjwapf6pefbb54sc7aeyh3bffalu,"" +0xeb4351d692619BA5d00feBefEecdC38C1a26600c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1.0934840637537195,1671618959,bafkreicolpjwxcfcelzdmrr2vdrxkogxssqz5btvinuc6j3ff3iberabfu,"" +0x7C646E2B34Bb50e373088a41acb4eEba679335B3,,1,,2,,,,,,,,,3,,,4,,,,,,,,,,,,,,,,,,,1,,,,,,11117.74974211894,1671619495,bafkreiac4xbszyjycnn36oh34x7vfmaqsdkpbdnbvzdpyvrezqoynyxkcm,"" +0x917549789757E442083fA3b617955bBb78027408,,,,,,1,,,1,,1,,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,0.23123318180820854,1671622536,bafkreif2lrjjlzflmlktlq4pitt23xkpjrlofmpyzdnxs6225p6ebruqzm,"" +0x4254419739cE5Ea3FB4140357b2bAA71357D14D0,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671623647,bafkreibrzhfwub6om2fpfxsbas3xxlenmkmwgh73y4424nn5svavr7s2ay,"" +0xFbABAcd8EF4dEefa572cDC1A685781c2b551490e,1,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1671625366,bafkreigdkbuazjrkzunm47rhgx3fklmreuy2syvg3zlhabljswmqajpn6m,"" +0x52C1493b12758F06d069011dB972E52a6440997E,,,,,,,,,,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,5.5,1671627905,bafkreibmmveq6quwd265ok3e2fhdgbzzii2yyziymvzf5xfkw2bmuj5jje,"" +0xe627fa5b46Edcd0058CA0D39Ef4Ba94448a184da,,,,,,1,1,1,1,,,,,,,,,1,,5,,,,,,,,,,,,,,,,,,,,,0.77,1671629729,bafkreie23j3qerohno5izltemrqodop62w6lituppwb6zpqh7aljdya5mi,"" +0x555a457351906003D7Fd58E9Fa7fb3EEC54F83C9,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.060501443792288695,1671630083,bafkreiblppj5ct65n2k7uglcqeqvhxnk3tb2rrrawt7xgnznvsrzsdy37q,"" +0x64f8e38e19c1B6992969Dcd5769c149951018Af1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,427.08834541004916,1671630433,bafkreidkskmfudx5eqikheu6hapx7ivwglizsnwilghocdsqgtbdzzt3ty,"" +0xf38D1b5288B29406EB7FF548009430c8bF3A7819,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2900,1671631334,bafkreig5wba4xg4omjuwtgeuanehs6e34k5symre3brwlp6svqgyh6cjpu,"" +0xC820817D1c55B7ed99E23E8456Da07bb2b578A45,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,5172.7777278553085,1671631483,bafkreid65v4ufer5thtaeezfqctigfcajmsow4xsb3idc25yiwrvffnrhm,"" +0x550e970E31A45b06dF01a00b1C89A478D4d5e00A,,500000,,,,,,,,,,,,,,500000,,,,,,,,,,,,,,,,,,,,,,,,,178.24235513340705,1671632730,bafkreia3w5byuylqh2hk3zdyilrz3qkvmoksspeyv7qvpkwfn4urgjmb4m,"" +0xbCbb6ebf12Cc1a5e940ECA21dCF6aF617aAd4Ca9,,,,,,,,,,,100,,2000,,,400,200,,,,,,50,,,,,,,,,69,,,,,,,,,3530.104922811242,1671633000,bafkreiezmmkt72ewoyvajctu7cb6e3jpecnted2v6cnckrnjlhhulgmeli,"" +0xD70924a5B41011a6154844CB9dF07C129a0C1624,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1020.7082624269603,1671633028,bafkreibzyibswjf4lnqzbajtl4xujjusaorlpl75zzvpnpqght2pwtydgi,"" +0xa075Da3F8c25018792366e4F4b3029a7083DB718,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,10094,1671634124,bafkreib2kgwclswctbgn6qt6fdozotk2moycw4ff4sah75kbh2wc2o23b4,"" +0x6cfbF06E8b6612B39333eA7c230208D1d178278d,,,,,1,,,,1,,,,,,,2,,,,,,,,,,,,,,,,,,,2,,,,,,421.71384204725416,1671634261,bafkreiatetg5iuiuibza6al2entx33uzl7arynnieaahuuwcm4hjk4vxme,"" +0xaf469C4a0914938e6149CF621c54FB4b1EC0c202,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,3885.0462532386855,1671634771,bafkreibjohkobyhbkwaioe4mv6fieskeqajl2dcg42hiw7tptfvda3h5lq,"" +0x49f8247F494AEBf1Cdb5b431Ee6dD780F89A98EB,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2559.937630407791,1671635878,bafkreig4qmhajlpm66n25exyhvhqibt2okbhnpm7lhhqnin64i3nxyaicm,"Operationalize the DAO!" +0xB88f65Bd2493BA8e4fc15d9D0C3905d16874e9Bc,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,1671636004,bafkreiaa3us2hy5lg5tp66gmdxwlipi6eqhvkkpfrqrtf6crhuccr2qbii,"Operationalize the DAO!" +0x180Dd1a1f2D43e0162B62a2F1d19a8e4543d75b2,,,,30000,,,,,,,,,24000,,,,,,,,,,,,,,,,,,,,,,,,,,,,43906,1671636040,bafkreiap37r2q25xcxeetvg6hnkgkedkmrcd7uplgaqobyhvcbhz4f5cki,"" +0xBeacA3595d0E023Cc726109b5BA38c7164daDdb5,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7381.456060834408,1671636252,bafkreig2orwlrcvpyibxpanrmxkyhthlinqzoisxv2t2ojyo4wuhl42j7y,"" +0xe0c48848828F8fADb6F8F75B64Be8f28e7f90304,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.03020235,1671636318,bafkreigayd6uirxj7mwm7vib6cmtkvfxzcua5od4r35wd6yjm4c3yzhnxy,"" +0x7B4e32D7c0a0BAB8083e3e9767a5af2472b5cCFe,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67139.41261273927,1671636491,bafkreiadbkdzgtih744i3agydlhhsubcvxbd3suamiv2otqtqqslaq4uay,"" +0x0c5db788F9eE468906ddc6CcFb1b1fd3d23a2516,,,,50,,,,,,,,,25,,,,,,,,,,25,,,,,,,,,,,,,,,,,,6154.605178905066,1671636548,bafkreid5tndfzug3oqc7v3wc3hewjngwbd7jsodnpa4j7jzbmgyntwq74e,"" +0xA15aAD03A4F9c46161783398FE6d93BA18FDa366,,,,,,,,,,,,,,,,60000000000,,,,,,,,,,,,,,,,,,,,,,,,,13848,1671636830,bafkreiaspvwkqpw4qi6t6oxtcq2qznpscavbhyqqu2ywpe2zscjp4r5e3u,"" +0xF81C87fB76F3Acf458eBd29df60c92F4b7Ce8Db3,,,,21500,,,,,,,,,21500,,,,,,,,,,,,,,,,,,,,,,,,,,,,43002.403202150956,1671636900,bafkreieplquya2p5atdj2rcvy6xlae5oahbpzmd24sfxh5blc5a3ezz2dy,"" +0xBCDDce8B0e2C231C920977854BE736810f1Da097,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,27763.96431931539,1671637006,bafkreig5utoimemtesf4lgqndhbvnydws5tfdcq2de6dcbq4c2r6kmhr24,"" +0x206d2C788C2D8B0c4d32B36A9DfbD9c6d749C560,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,19338.08685874393,1671638314,bafkreidpanyo65tuymrqu7w67vrxbqydjnn6oymsqp3x2j7fuocc3w53vy,"" +0x768a49D40b674a9EF54f5D1cF3d1054A749e905a,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2050,1671638785,bafkreiejk5wi4u7h7bxkdwwnjyocx5hkq3vpgh2v5ykzjkolxjimte3e5m,"" +0x14210914D6A65Fa2C7747579A7aa287B027fD092,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4150.017325486132,1671639686,bafkreic2lgzjbtn6wittjblipj4dfipgsqv6hzzzter5iyi3g5nrsw5yke,"More Europeans!" +0xAb50Fa55F304bE5089f8C82c1954Fa564cF37785,,,,1,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,32641.012759927053,1671639989,bafkreiar3yfkherkkbzpt4im5vnno7mf5nbnvirjdjea3sevo7p4bc6i4q,"" +0x56511585A5A23dEa48fcC0Aa0a9A13800dEC0531,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22463.68912823165,1671640134,bafkreidjhe26vwedvfexbnlskwfcuppx375kzhrokkx52tet5d5nwpouci,"" +0xa5A0b7c3dD5dddBFbD51e56b9170bb6D1253788b,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,10902.916723846154,1671641071,bafkreic6jxh6ssmh3w47zahf4qgntbwp73xlirzgerzfmadudpez22czm4,"" +0x69eb73fCa2ea111C5E1bc8983Af5F415841dF362,,,,299,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21.61752308,1671641507,bafkreih4rwqsu2matbmbncfmn5ecoucouj5nsrlxvn6lm6mlfn6op2wznq,"" +0xc374B767f4A3073B3b21f31B06498ca7268439b3,,,,,,,,,,,,,,,,12000,,,,,,,,,,,,,,,,,,,,,,,,,12414.075084343052,1671641793,QmZqneDbRDKFQdoQCicXGuc8vNnpBYQvLkJtX4tH8oi5jN,"" +0xA10605CB80c8110EfA6062eAd80C50b4B4230B13,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,2281.909822749817,1671641977,bafkreicjxtztwuqjsceudyakqo5oaqlc3vlvo2lgzu5d5vqt3vdj2la52a,"" +0x02113E8D06A7aB70bEd0cA583Ec441FCF4Cd37f1,,,,,2500,,,,,,,,2500,,,10000,,,,,,,1600,,,,,,,,,,,,,,,,,,15267.339704766784,1671642636,bafkreiaifz6h2kmuioypuxcxf4crtmylkku3t42leht2xaw6a3qoqf4kja,"I'm Bored" +0xeb83E695adCac2e83f290d2d2815FC58e6491d7A,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.4100503852195507,1671642732,bafkreifbarrgwjwl3x4eod2dnmg4a6cgmzsmwvurlw5wrvhztz5l7dkcjy,"" +0xe5DfEdCaAdF4Df48F2FCC56663b89eD0Ad73Da3E,,,,,,,,,,,,,25000,,,,,,,,,,,,,,,,,,,,,,,,,,,,23297.028750235473,1671642973,bafkreiepixc5zi6tli5qejf5j7zew35vpk3diufkjfek4pkelhbkhi6qje,"" +0xef0cFa1DF7acC83aF898e701839Ca7Eb72896eB1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,51986.758035683146,1671643612,bafkreib5wevggzdjhvyctfd6hecngn66jkxzlqocokuatoesfpwkv6fpjy,"" +0xB2DB9f595336Fe490FdBfee03cA3739187343261,,,,,,,,,,,,,10000,,,,,,,,,,,,,,,,,,,,,,,,,,,,13954.758124591523,1671643796,bafkreiedxkx2q7n55rckpra5ueq3mq6s46logulebnao26by67cwjm3byi,"" +0x804a0f3d69365ab0f79aFc079e7Ee3263bC7AD92,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,86628,1671643820,bafkreial4gidln2ptcgkra7myyc4fobnp56qpiq74kyvsltqrlsfgsyade,"" +0xf035Af8a3dFf1f90aeb21F9623589AE1330E9e09,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,2647.846301680576,1671644678,bafkreia7htwcyg7i7ibqu3ml3ebexlhcxqv6kzlrhv3vrpu6yk5da6rfze,"" +0x69bAb6810fa99475854bca0A3DD72aE6a0728ECE,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,866.0981003104682,1671644733,bafkreia3fyd2pkqttcuukbifn56yofcw5i7grljjijtx7w7tnsvbkfptvq,"" +0xDE38de354308Fb26c4814C230000bF9cFfa1e404,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25431.539835969328,1671644964,bafkreicvgm6ximnuqsdkzf2cy6vpznjr4qzxmcjyeolwax4yhfg4pcrjlu,"" +0x4F188CbFA8dB689A6f696CEC3054F42022b800c5,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,350000,1671644985,bafkreib53veqlgg6a7rxhb4sv77uecw32o34pxqwesegp5wx6byigjp6oq,"" +0x3C05E68b43D248042368dDDaea42D0F796D3D183,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11505.676072435926,1671645121,bafkreifd7qkedukax22xwicrehwdwly6xhed5gu7l3uv6jg6luq6al2fe4,"" +0x385826303C4348C39F521653c45C64C60F1eDed3,,,,18000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17747.00171049077,1671645515,bafkreia23aftuyw2tu3ixhyyztlkxbgsqvhtvwijjy5zrdabiui4jifwp4,"" +0xce68b1394ED29ECAA6974536244d1D2Aad4a2745,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,0.1,1671645531,bafkreibypazqyut4llar2fcttq5msrgykuwaqyltnasfsggpjpn2jtqpyu,"" +0x4f830947dD75615ff1Ce58687173c3E142568c34,,,,2000,,,,,,,,,9000,,,,,,,,,,,,,,,,,,,,,,,,,,,,13209.185409170654,1671646024,bafkreiaualsou6vkoryhc3foo4kabdqdutyj2usftcc5ehk6qdn3jphqyq,"" +0xf2e03bB3Bae583D72D750b3EF443372F92CF2C24,,,,7873.36,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7873.368720404538,1671646155,bafkreidlyl5zwasvslddffctxfbldiqy3t6mkcbyabcnujd4mkuid4ymle,"" +0x37b3a715a9507c85C1845168ff1801799DacF808,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2042,1671646665,bafkreihoylg24dedftzejrnypelovsskkmmab3dakb2zudlflehlszp5lq,"" +0x9814fc9368BA5242d558642E0daC716a75757b99,,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671647130,bafkreiaom5isxog33wptuevo4ffy5migifqm3byjnrufxc22c3f3rw4v5u,"" +0xC864B0Ab18B0ED0BeAb72F915Bacb12971FDb73a,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.4437653448455454,1671647438,bafkreiatopohxjauwbmpgfuy7k2xg3qtucx2ov6dvkrgzayvr4zedbuboi,"" +0x54DfEb0F86A367846e42a29Ae6888eE432e87E98,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7000.767644121386,1671647489,bafkreicrggmmept7jq34tcvzcs45prt3hupk3jkw3ngsu6itps26udvxfe,"" +0x9f0a20B351366872600bF5D20d6870af60e2bCBb,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8552.364724743698,1671647504,bafkreih72l7vo2e5ckxo7qnrdvxcv7ikc76vzjj4jh6zfad4hz7on6b3eq,"" +0x750AcAeB9c1d61596694Ea7bfE8458A74147FA45,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,16688.729793849558,1671647678,bafkreign5aqztqpf6a327wo72q5qsczulbtg25iarh4qv5j3rrqdmnvxja,"" +0xe46347662BDa8301bdC0fb4a2987a466ae30Dfbb,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9.1897473720075,1671647682,bafkreidkj5xumnkt6otbithwmqxv6sxt2pguzdw5jlkwtgca4cucwy6qu4,"" +0x0a2a335B7420db3BaDa6a13E354D465a3d6dE2a4,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,109846.9201366272,1671648295,bafkreibtupz55edamjqswiqxq44exdvskg2fxdkywymt3pvftdwwrqyrte,"" +0x1b523DC90A79cF5ee5d095825e586e33780f7188,,,,,,,,,,,,,,,,,,,,,,,228000,,,,,,,,,,,,,,,,,,228649,1671648758,bafkreifwgjm2xr6el6mmzgohzalfb3p3igvyq6lub5myw2p6wevynlmhue,"" +0x6543609d1bc81bF750d597B7E62Ca3AEec4D3FE0,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,856,1671648915,bafkreidkpyd5ftpflo2dtt3l7qh65eoozii5yo7vxxawyqmowa7bkwci4y,"" +0xFeeD2eab7fc2c43D06f55eCD5ef5DB5f2fE77935,,,,47,,,,,,,1,,47,,,,,,,1,,,,,,,,,,,,,,,1,,,,,,15349.364532654472,1671649252,bafkreihwsjwdez5quzcs45bq2pfvmvn5vtugjxzg5542u6dv224t2yzlfy,"" +0x35AC6DB68555D365DCa0b051a058EABAc01851f6,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671649643,bafkreiepcp5n32jb4qsrju3jboo576jmjiygvyn4cocnla3vbhiw4lojxi,"" +0x98E711f31E49C2e50C1A290b6F2b1e493E43EA76,,,,,,,,,,,,,35,,,65,,,,,,,,,,,,,,,,,,,,,,,,,817470,1671649700,bafkreidum2325gue7hnuybcwobzuiung7g2fkftulkrbb5marwyayjonci,"" +0x3bBFEDF29b0168128cb078b6F45c8E0A1bA10749,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16220,1671649783,bafkreif2bhwadw6cpm5u72dr2c2dacyaosrpfgfls67tahwnzbi77cecli,"" +0x37DDC28FEAE0Ac090661c4E7e24989ff4E9AEA43,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,15890,1671649866,bafkreibmb4xu5sygldhgeqm6jzarhyyo7qhsmuvibd2lsrzctbrchsqnki,"" +0x9E03523205Cbe1AAb4bCC0e5B01ba734F17c1CB5,,,,,,,,,,,11000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10836.440621163027,1671650177,bafkreiaq7qujlxynbrcvdmv46ijoozirfev2byercwgwx7ei44f4figk5i,"" +0x0573B2F29aB41d9BdfE769b634EE8cB6cfef92d6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1671650225,bafkreiao7mfv5a6rte6ugmwcdq6pzysz5dy3q33tnkzwjgctlzqcro3rqy,"" +0x5672b5d5f063239A0e124862f264cC9Fd1f513a8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,140.2527281,1671650528,bafkreihz7eai56w2lpingiktlxuekaaygyfnawv2vploegiudylbmcjqye,"" +0x6FdC859bFaD3bc680647C8C58530faA039e1fc03,,,,,,,,,,,1,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,55291.06377429299,1671650788,bafkreic3rvdpewmrlcdjuxcyc5ukc57tbq7kggcsycpu74qyzim6qtvlzy,"" +0x9A9E41788824424Af0dc689778c73ff954Ff659d,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,99294.22756354744,1671650849,bafkreibau7qzfy5iblxg3rfb22sbrnk2mnkym4jdjvasdmowsvsfertmr4,"" +0xE9E0aF4Ed6B6D1aFBfE6CE68cA185d00Fbf55d73,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,103369.20372204084,1671650904,bafkreieoqqiqnqs6ivhelfmfjzr5oxkywtedeunvwvjcvz3gideileuexe,"" +0xdE9B4206B1499e56E4417f8EdB7bE4586FeD30Ba,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,13059.149069305182,1671651035,bafkreihfxfcdgyaymmuagprgs47ntyqu4e5xfcubovraj7ty33hc4ee6aa,"" +0xb3c7BB26ad2Ed197900B72afC9Cd0f7bC2255Bd8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,13000,1671651137,bafkreibqkiimjvzukw3rp53pgvbuwjguj3li75wutgki7nh5s3voclp4oi,"" +0xf532920bb32122D6475aD4Cc7634dC3a69631902,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10950,1671651267,bafkreid66wpfxq5xopntmpjp7uicflom772mrh2k22ojmeklno7j2tcjxy,"" +0x419411643Abc7812221e51A5474e3DD44e083ec3,,,,,,,,,,,48,,,,,,,,,,,,52,,,,,,,,,,,,,,,,,,14356.360236750079,1671651276,bafkreihsyal3sfucka6d6snudj5qz73q64m44hz6aaq323hlpwnrlr77hq,"" +0xeDA4a17d77A9612dAf471309b454E4086D107981,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5449.9302394,1671652184,bafkreien4vj3a7ism7eryxzynlpqockdiuwrjp4kadvxcofm6zazziayfy,"" +0x65fB8f1B19a04B7b189D29ef66E242649B4faF8c,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2000,1671652275,bafkreievptfxtjsuc54iyozc3z2mg6h6loomulzvxoklsrd3pofmfiv2ja,"" +0xf1f1CEb38591944912622aAd84f06C59c0c1428e,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1007,,,,,,98584.5676,1671653005,bafkreiafx6tuxzag6rqnzmrby6w4fibqf4gvld5exvbj7ntzvjmfd2rosa,"" +0x5d8AC519a5a4866784425ccF92F02Df93b1C1F52,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671653489,bafkreibbahj7ayvkqjiiht62di3ck7ltpsx74i56q2ovnrd6bza2byd2fu,"" +0x4A377Ff5146D288523F989771c9E05FA18ceF21e,,,,1,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,515.7149141386503,1671653550,bafkreihpabcul3dtgbbylmbyzqefabahmaa65atz3vc3nmh3ypmpwkm4oi,"" +0x4de0309ed63968A1c249B8ED1a3CB5731676e908,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,6282.228666599737,1671654081,bafkreigjbcxo37yxjp2tx3ypbbtsncyid5s7lmzyvq27ac67rvg74p3vny,"" +0xb8a706bb3eA1AF5002b7a7370d06EC12a54721E5,,,,,,,,,,,,,1,,,,,,,1,,,,1,,1,,,,,,,,,1,,,,,,16490.07217058319,1671654104,bafkreiahpbkxm3wtm4hibg75xqnovll6ee773hvrwmvg4tuurga4m2jthq,"" +0x9222cF504c11DCDC8642192917274b7A9884ea67,,,,,,,,,,,,,32000000,,,,,,,,,,100,,,,,,,,,,,,,,,,,,2964.446538678142,1671654237,bafkreiahmglthjoyplitwgowubodhn5c5safx5emucc3hguy2rit5rwbeu,"" +0x900B4a841fb7948680b0a149B41bF8Bd03702074,,,,6900,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6789.230418983806,1671654372,bafkreie2kgusr2vowkgfffqa3pvotc53hpj7u47d5srootig542b3ds724,"" +0x1aD7C3d3AC2118335D5437e46BBdCcf69D1f1a4f,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84977.45018727353,1671654372,bafkreihbtqrx457ltogzi5qjmi6ygwijko66ew23esw7v2nh7y2lnaxz4e,"" +0x6AF50342Efdeb600CA1D33a24B0f1166c2A2080A,,,,1,,,,,,,1,,1,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,2042,1671654629,bafkreibiizkzdzhin6vsfbl4jul3mrjvzzdqfcifc5z627rfrlflg6fpbm,"" +0xFEFc2850B25FE1AA3e9Aa154DF61C6B9bC7AA374,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,27309.105629333568,1671654662,bafkreiaq3d5yzsw4hchyp733b4vyec5jvjbmxywymg5i3pxbe7zbupbuiy,"" +0x7DE6C147e1926D1cAfBc2d625Fb395e3e1D0C7b5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,13012,1671654954,bafkreihtrbn6ghykaiq3zw2lvi6kzclsofbxsssj73mah4lkopbgaeiteu,"" +0x18a244147F9e7fbaef8F871251C94bfF190556Ed,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45470.24398548903,1671655076,bafkreihnqipccqfkc3rd5bhmham5v4xwyhfs72cnhn2hrxs5rltg6fiyhu,"" +0x6B92686c40747C85809a6772D0eda8e22a77C60c,,,,14,,,,,,,,,4,,,3,,,,,,,,,,,,,,,,,,,,,,,,,1.8224395452187836,1671655116,bafkreigjnskn2qfyusemwefajbrvzzy2zybjavxydiyotp7unwg4skz5eq,"" +0xc93f75b306d164c31112eC659D4C1714d39d69fD,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1000,1671655152,bafkreidawksjhbqgb6y7gi6d72nckfgsdgfndpidtblcqmxp3jczyahuei,"" +0xC9D8c1452f4c7B5f45F4f9F1dD44657682fCee59,,,,2100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042.534648190922,1671655341,bafkreicbodpg43oe4boautjzb7z2lf5cuo57brkqrc7h4o6mirxoaqtiay,"" +0xCD043AE14572cd83F26CEb8442e58C35251eB7f4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1003,,,,,,898.4436984240933,1671655353,bafkreigwsolkkejtumgcz737er45xij756526guv6alpeon2zi5lddqnai,"vera is the best" +0xdC5A3eD3CE12a78c9b4C8CbC370501ff06F5D90d,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,12142.235455293927,1671655391,bafkreif7zeao6b3nraqegsoeqolslrx3xveo335m4yqltedzvborqvp4fa,"" +0xdA83e3AA008994d8ea172fF85Cf4813763158057,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671655516,bafkreignichc4whhgazexvxxc46ruurreng5lu5zscp2365i33cw6lcygm,"" +0xCecdA5fB8cc7F905Cc1ef70c8865E78069cdfb40,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671655555,bafkreibwma4ar5qljjmwaqtrexoc6tppqml54s4icufv5zfnjwjsrx2o2y,"" +0x134E3bef77905e884F0067bC5d0D48F6D30F2752,,1,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1100.5144866263324,1671655988,bafkreicn3knrwsewoklhenpb5v2zlxif4jc3lc4fpzkycqaedoguxvyna4,"" +0xEC095048b48AD1Fce13e684C4116d2ecf60db315,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,5858.467567551301,1671656042,bafkreiffywr3nqx7oev3xn3x7pd4h37anrfiephw5kfl2cqgpyhs2sarhu,"" +0xe2A3800884e7C1058FEa4bCBE4e3A63527b2CCb7,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,2920.0267247167076,1671656416,bafkreiadsjv2gwmer6vwzdw4wff3erj7xf4po65e5uecohisquncgoepyq,"" +0x79989C6dFf3A97B097e7DBb6e38F00b21fDB8c7C,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,80,,,,,,2929.4825643397053,1671656448,bafkreibicnwx3gbessagtcqh5z7gmprafbzjjrew3t5bf7krvfl6dztx3y,"" +0x7eE5eA1f769703B755A2F7A7C76E9C00fd2aB8C7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,11950.50805695091,1671656534,bafkreifsqbyackwojrjbp7lg6l5h7z4mcobpivoyjc3ynwoquaxzczjp4u,"" +0xB9b2c99200d2FCbfaa901ca61346053D200C8446,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10950.0000000407,1671656627,bafkreidbxriih3jcductyfc47flbp2q5lnroulake36gbczopqrzsztr7a,"" +0x36A3294bE4376Df174364f8Ab61322bdD7390B12,,,,6000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5909.207408914739,1671656674,bafkreiambepjozpmdzmbyizazsy6koh2f4xclicpub563n52sraqwhvooy,"" +0x2749b37ABeefA5023c2b046379988F0B6F6fE793,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2898.0000004795097,1671656680,bafkreihoqxjgttjbmok5nxtmkakhq5i4kdwtfbetdhchdzp6xabaqazu3e,"" +0xdEAE56E368F56A1F2E32aF5481E13B4f5aE3fa4E,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6500.00000310253,1671656701,bafkreiavao77oftyyw7cdvfnocvaeglzghraqjjf5mq7aswpqhjufgwfc4,"" +0x6CF0a988dC3ca51236c1BC2a67ffB9F88d927Ee2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,11062.247709522946,1671656780,bafkreiegvshyso7n3yak2wv22foa32dc7mzwtdap6nu4mr2ztpw2c6ihoy,"" +0x20B37032eA53Ba81E78BE3eCFF8Dd2fE33646847,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2042,1671656928,bafkreiepoadlf3zwmncrgiavlxy7bohepjvfw44kbsj5v6ujkzc56oe7j4,"" +0xd3416F461518E418e358b33C41Ff9e1287CD7041,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,12992,1671656967,bafkreih3jwuamlxzlcvcujbnvy6cwj2qjewu2wvxukekbov34hukr42fiq,"" +0xc5e4b43E291C8D44971dD3842EEC1F8CAac77561,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10950,1671657362,bafkreia7wypj7kj3ui6un5i5ll3qw4h4vewqct7tg2l7vab5g6igfw5diq,"" +0x6F32bc68A5A05F8f72F08D2c2Fe088d5c0A8cf55,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,8811.89388045881,1671657396,bafkreidifyvt3pmpzsn5ib25qfrilgtkm7j4exwvokeywzyblztzpjkxkq,"" +0x9244BF7bFD9ED40c6bc31d28f392996eb671aC3d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657415,bafkreicg74b2vogjxa3uibyc6peube6kwe44uzpdbtp7zurjjncfey32pi,"" +0x8Ea5bE2b52CE359BB95CD19d4718B674aA923c88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2902.29,1671657441,bafkreicztmc4yiwaiat34a7ynfurrqsfickrjmuexlzqcplkshcnk5blqy,"" +0x624E5a45c813A1cc8907f1A0257EAE6E29b3d1BD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657452,bafkreigcj4zqyyajy55ru6ds33soagsimgzad4l3ml7kaeu74vaznwyyc4,"" +0xc9700f3dd73fD677ebDD49A9e3d2140513B6f732,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657491,bafkreicflvmqavvcojhsxtbrmgve25d7pq2zxntl2qnty5j7azznt5ofj4,"" +0x6Fda541E1474612fa0529F6a18A7Ce222F441D10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657527,bafkreifprys5mfenw4apcabjdpvljfj7xej4kbwkd26caznti46r7sftcy,"" +0x7730378648cb4dE782bEe0cAbb43140248c9AF97,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,20200.85762256548,1671657545,bafkreid2ggwht2bf7m2mz4cv2sgu6ajwwokrn2fcbtarlom4oihdd34hgy,"" +0x31086e56834D4F2A24044a2cEF6CeB71D6126Fe5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657579,bafkreier6426z452g47e2pua4j7ifihw2iixe4g3ds4jwnpl6fdr4gq6my,"" +0xf821B10a64aB148d8173C69FA9531BaeE36Ab995,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657610,bafkreiadci54kybgttzn3jnd32fmcx4diig7v4kppdy7v23hzcg2hpaf54,"" +0x1578769b8cC98a562D3625A0634D95535BF587Ac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671657649,bafkreifgyhwzxj3afnvbypedatlskmksdnpd6hidli6ckft3dtdwjhnsku,"" +0x945191ab90d5B511F80c297681e5dE54E55c50B8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671658048,bafkreigdf62uvdbp55wqijxkqaijvhyv5btkxrcb2v6tvvpfdppvm5elae,"" +0x62e18F2672AC1437b370CF36b27a69A17aC8EfF4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,5796,1671658085,bafkreifqqgj5b5qfidkx7wizz7bnllhagspxtga6lajbhninwwsxiscs34,"" +0x889f33501aF3a14629f5be4Ee409575Bc35c5cE5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,1776.459651319753,1671658145,bafkreiba43lmovwzz23ee54vkdzbehqqezfqois5rioxcaagjhirsf6kim,"" +0xb2F4A2a0e400547b2b9F6C3c058Befb3F5E1279c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2898,1671658177,bafkreifcmnhuv7bsy3ostq7q5jc6ur4go2gv3htnx6wi3attkdia2fh52y,"" +0xb4FF15b64DD359AC7176C5adc32f1C84D52Ce7Fd,,,,2000,,,,,,,1000,,1394,,,,,,,,,,,,,,,,,,,,,,,,,,,,4412.126969585802,1671658789,bafkreieaxpr37v73a7a42gka6wlb7uwffnxuoa2d52mev5sdekl5ouoa3a,"" +0x9BD91abdf39A167712B9F6c24d1c9805d5FB9242,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,33231.60142394498,1671658869,bafkreidvr3enytsgbo3dqzdci4fqmyaynsl6ng5dkptaxlacgq35a726im,"" +0xFdFfCa1246924dE90f54f867db89476D011e5cE5,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,41175.27455460679,1671658939,bafkreih45htgkeldsdefwrvfzhnnrrvivwcutotz7th4k3omexejzvdlay,"" +0xdbf049b470e7cdb1BFc19D9Ca15B1C8C1128aa20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,2091.3640515461043,1671658985,bafkreidjnywwdhpinhnw4lzksirpzzyhskcrd76beppprwmlhfpei2e2py,"" +0x68E58f6cC75178840B352d011D6E7B333c1de495,,,,,,,,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1.103630279089659,1671659125,bafkreih2vyrkiymq744oeeuihwxawbq4ncxthkfetwic3sqfsqukbp7yuu,"" +0xD35ADd00d45e8a3e0B7C1b67496662e4CADBb0f5,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1851.8165056139796,1671659295,bafkreiftd2dyosy3klfhdqrkw5b5yqouajl4leetrio35ebodcg3nr4mxy,"he is him" +0x051D7129a5579503Ec9554290Ee7b765814aB1D1,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,2042,1671659444,bafkreibbnt3l35gp2kqrs7hmo336wyxq574eyhw5b3bwm4kamrbqtbhxfi,"" +0xedE4a32DdB7353d883399BeF2Bd9Be650CD81bf6,,,,,,,,,,,14693,,14693,,,,,,,,,,,,,,,,,,,,,,,,,,,,28122.003323506586,1671659529,bafkreigekm7wcyv54libv4ulafe4ugfgugripivxbdlefzx63ives6tm6m,"" +0x716415d5AE556D4888356C83e7a46A77eBB72F04,,,,4,,,,,,,2,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,24125.813001727915,1671659605,bafkreigqah7das2efaavi6ezannelxibbnft7c2bom4rgblipgum4rj76m,"" +0xB5DA9A455F931EadA43DE8e30F52dA0d668a1099,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2212.159365720051,1671659716,bafkreidu5kz7l2mvqwpgyu6vnny7i6fxofuzfrmnxu7nunfyhisf5e4q5i,"" +0x23bdEb4396BEB7e179c65A3FcA025EA2ABC156D5,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2224.0100869710814,1671660028,bafkreihhtmbp3ym4z5ezjf33acffnoieyts7lhr4ybox72oecmy4zs5gli,"" +0x7E05083D9D56b306909db26D93c041D7B3b93691,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10119.532995683261,1671660113,bafkreickfxzo7225kgqcjivcedco4i6tuvkt7n2v65ejg5q6k5zp3n6nga,"" +0x9bc40dC6D5753dE0a0EAF02C2B891ae5C95EBbB2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,3400,1671660314,bafkreif4farzu3abr64y3iyflfpllhfnozu6ny45p2lj4cxtj45k6eu63a,"" +0xC6021b536a50F8C3B5Ed7e13A31A8bCf232c1688,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,47310.64232747218,1671660469,bafkreigyb5xpofggaulxycbnoemb7egs6zecsibsy6qsxfnbabrwna5wai,"" +0x7Dcb39fe010A205f16ee3249F04b24d74C4f44F1,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,53295.30601819849,1671660509,bafkreieuwgcprbuo4zenduoznrgokpvorhotbmcky6bf5ivuk4flp5prgy,"" +0xa05DbE7fa2e331B34BB77e7991b902dD2cF9F853,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25016.58521475706,1671660686,bafkreiajkhciap6ruo4gnylmlt37xigmisbn3gvw3vmdhqadve3awccjnm,"" +0xCD02c8b722c8E286fbb353Fd7Bf814Bd38490C27,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,14249.064676033824,1671661583,bafkreigihwsbqkylmtlbbbc5u76drjb7jfky5wq6ub2rpyg6xkzjfqibvm,"" +0xbA9F68fBF20a0316D80287d7ABC9B1377D622121,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,25225.6296274007,1671661709,bafkreibbcya3qzhv7by54ezp66ma7ycvnulnlighkc7jxq66fh37aubqju,"" +0x1F21bC40b2E1f1A210E10b103bB57bfE8d71EEb5,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,81.0085799024186,1671661721,bafkreiccsxxbas2o46kuan24ahaotq7o2drc4u5uex7nrsw7kkptc2sjmu,"" +0xf7225294B6C87790880926821378F39c60C8baFF,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,6802.204701131592,1671661885,bafkreib2ayddk52roeyjcu2sgytkbabj4yoxxck6262dijl4u2pszukptm,"in Herb we Trust" +0xDCA60A4fEeA2337D97380B0aD0eC4ADBEA707855,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,9558.203593726208,1671661920,bafkreiexm76etth6gzmyvs3sl376rypyrbmyunr5iee466i5lxj5ss7utq,"" +0xC4d09e6182ca48cD7F248fed88c5f3a70e2af58a,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1468.0817866285727,1671662344,bafkreidpdpe7sgyt2icg44c3nh3dxk5nc67etpvusmfqxpnkvaslvn7rsi,"" +0x3983b6995AdCC40FD3faaE1fbdbc201c359366f0,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2075.9306179774576,1671662874,bafkreieqcndqzqrfawsukg3cicxo35wdkaolnvz775icgicfmpmybo4o7u,"" +0xb3FD5137AA504Ce9c2636521A74B41daba416837,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,60098.92154042236,1671662909,bafkreict634gltarmef7waecioiacjxyqv4axzyqlvmoob763wzfwp26ny,"" +0x122b19a4Be93d7c2b4522ebF7EB3F1b5B0343b2f,,,,,,,,,,,,,,,,3,,,,,,,1,,,,,,,,,,,,,,,,,,260617.96560277,1671662946,bafkreif662xi5ae63kulfifzb4e5ms4txmkdhbkksiqnpesinaaicqphjq,"" +0xD75CdB32aD74116C300db2C10bFB164648DCdf2E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,10094,1671663058,bafkreia3bjmzyms6bo75tbqgpewpwdycobrffjnvycl4oookqcg5g7nfau,"" +0x47FD47D2B24389c696371284cF8aE38e19F438a0,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,240.62166577091983,1671664047,bafkreif7ny7qdk6g2ucpqc7mrw5q2iaxgrlxe2cjc3fyt2b3nibc2alb2a,"" +0xC2746970b1a4e35106D78A9df7b52732Eb9F42f0,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,1,,1,,,,,,986.1247436795923,1671664069,bafkreidbcl7syszlku4x6jwwbdk5z3jakrzt6ywcwudeyuprjvtbeo2nki,"" +0xDCBA0c55A89cf4705C284cF72a791587f37B78f6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,173039.15399182626,1671664331,bafkreigucwq3i3voykzmvuouo2ojztxilnydw5e4nvuv45fy3iklqczqcu,"" +0x9571990feFaD6184f99247f6AB85E4c1eec8834B,,,,1,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2044.551435719557,1671664580,bafkreibru3nab27zcrye46uo2ayxeg6nnkcvqhe6ffujcgckb4t26drcza,"" +0xD4bd599016DED05e65594c6E6306308e5de00100,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,2552.4107759739068,1671664986,bafkreifo3jhnorrbiy75jg6rchn2jpyfifmyhpbhwsgplytfcxmh2tizsy,"" +0x0F25809d8E83AbC5Ff0f4Ceb8A8C39c79746d0B6,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,1414.446908227287,1671665690,bafkreibfqrjengb5fcdqe6adajvsryxgsjywikis3smvi52vurxmt2pjrm,"" +0x06870BeB1Fd22C3a00c40DA9B659cEB2c1EA4cA4,,,,5,,,,,,,,,36.5,,,48.5,,,,,,,10,,,,,,,,,,,,,,,,,,179357.61491671368,1671665784,bafkreiht5dirdi77mwvayyxbla7yx5e6v7yxvxa4mocrczb5say3xphha4,"" +0xF235cd60Bd5195239B8F5eD11C1442745B1be2bc,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,756.4858539866252,1671665789,bafkreihqzpafgyoqpzuhmhv2wnod6iluap7mvf4qsnq6j7figpmq4553ci,"" +0x2c74fd427E36a5c22f164093147EAcE027ec5706,,,,3,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,131632,1671665801,bafkreidjez3gs5tzeqmz6hnc5a6h3hgjwgovsz7sppp5jt73pwnbkizz6a,"" +0xfb05238fa4B01f9B703685b620d6Aaa9c306c7CA,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3527.5866795496822,1671666048,bafkreibmspwfjdaygk2ovsmkfng3zssypijpp4odhcvipxo42qyblvisfu,"" +0x5eb8FD22fcA64B72f36A0C69b7C15Fa10C7a1214,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,32335.34618280732,1671666066,bafkreicrq2yp26vvztdscu3yuwrag7pnmo5slzeleb2sjtmag47khzgwoi,"" +0xb898e10C074e1dB46F0C8e89A2B79A95EA256f5b,,,,,,,,,,,,,,,,,,,,,,,12000,,,,,,,,,,,,,,,,,,11375.577232800388,1671666140,bafkreidey4kkejzfwwjf5kuxblazkhyp5o7fkpwbsiw4nrjchdmmtvfb2u,"" +0xbF0D0A4F0a1b4457C08389300bD900a8d8085e9e,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8736.519495941582,1671666231,bafkreif7nbfwhcp2i7dccfhsntyhzlwncful5rpuborqewvnufapsaiqym,"" +0x912465725ec780B378f21644F1F90C8D4b06d47E,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,10.3425632033978,1671666433,bafkreibwv6evdmrufk2ii4ch5q5ictaazifmcowg4lwi4y45usu56imoai,"" +0x5a488B762cA0EA05321405b192fAB0B66a93ca28,,,,83000,,,,,,,83000,,83000,,,83000,,,,,,,,,,,,,,,,,,,83000,,,,,,415475.34627449024,1671666599,bafkreiayh35x673yskkrb2gdcjganqdiaoihjrbyzv2okcm7snjdtun7py,"" +0xFb3ef998D84b7e46cfed2Edb4144bd7538eAB858,,,,,,,,,,,,,1600,,,,,,,,,,,,,,,,,,,,,,41,,,,,,2070.9890390709616,1671666774,bafkreig4vnhazemaj5vzln3otrkqxhk3ifm4bdlplqeejlgqw4awyebedy,"" +0xbE6a5992D259990ddF43DBd681568Db292BA47D7,,,,,,,,,,,,,7000,,,7000,,,,,,,7000,,,,,,,,,,,,,,,,,,17599.76052206266,1671667292,bafkreidpui35wnvg3zqrpkojho4apx2v7vyne6fplxcrhjvg4ahyfbqoem,"" +0x631EC40dbAE6ee11590549b5e270628840093A08,,,,,,,,,,,1,,1,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,13094.867416945654,1671667750,bafkreigqqsogf3b7rb7wknukxou6igpgttssfhmopdrn3xmp5mslozrkby,"" +0xa2F0448f346cE50B9029506c88Dfa58d07bAF880,,,,,,,,,,,,,,,,,,,,35,,,,35,,35,,,,,,,,,,,,,,,110.42470009026759,1671668328,bafkreied2mnxofjwzrxlj5gdbzzkcsq2wjbo2udpirnxtogrri223pzuvu,"" +0x656Db6380A7A566fFE8994a20a4C97C00a271Bf9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,11375.0062630805,1671668356,bafkreih4dmjlsfyh3kgz7idpv7blicqorsecvwpaiahumomynboz5hbyae,"" +0x21587b4030e875E9D9B70f38E314e8E2a8b29B9A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,25200,1671668520,bafkreies36nscta3djtfdeyuwzype4y3rsl7amwtrsolwcdv7wc5ifytha,"" +0xCb2fdB77C60bB4AaD4ED71804Fc403f1e650e204,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,0.3,1671669520,bafkreibn2gpzjsypkz5vs2bv2mruav3nqno4dcfijtrwzkphdny4n2nnr4,"" +0x71be99c9b5362aD07f7f231bC7a547f4119C6073,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,31805.253011548793,1671669824,bafkreif2y4m2x4fxx2tsiu4zdwo47f6ktjhqo2u5fvzjrgul46hfzwe6gy,"" +0x584935F602F669AA9296F5ef287b6461E3999E39,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11111,,,,,,15034,1671670235,bafkreiekfqznecnxltp47ru4czorm2fabbxdbtfvjzj2axzfi6waqzzpb4,"" +0x0FF0c7f91C0a15DbB79c6934970d70Ca7fd956bA,,7,,10,7,,,,,,,,6,,,,,,,4,,,,4,5,10,,,,,,,,5,7,,,,,,25984,1671670339,bafkreiezq3b24pqbhu6se236nfp5gi7hqcfmhxbng7lfwhyernnbos73xq,"" +0x713f90407fc49f0BC59A6661C23FB67692a80E6d,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,20320.499023843837,1671671770,bafkreicb3yy6qtcmb4xoi57akld4mupcbvl7jfbcbrwiffz7uiezpcvpwy,"" +0xf9eD4dE3793Bc577C8EB1A269387d28cf11DEf2d,,,,1,,,,,,,,,1,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,3895.469397543145,1671672525,bafkreifdpd7cak2wznyad224g6dq2bm6mos5ymed6fmikxjbo25y6ep6ga,"" +0xC92A13FA4C59f5349B4d45E8667547D8419F0906,,,,7,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,81991.582158161,1671672946,bafkreidi5475i6qtidej6kvyjsw4i6bftzxgjnjyfm3ogjvshna6e2xify,"" +0x4B1e684d5143eb7435E5D78385FA8cbdCcD8f7EC,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,93975.20901704718,1671673207,bafkreiajwlidckph7snkhw72wo44o7mvvzuano73lmccmpnri7cpi2y7ea,"" +0xfaE48b5E9b1f38BB8D41B3A43B632e72Fbb16d27,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,876,1671673279,bafkreia5uk6rps22qkkn2zgndsgxmz6rex7yjezoiqy7zbkocedl6dge6u,"社区需要女性的思考" +0xb01E95F517511E0616263CFC1ce6DA11211FBc5f,,,,1,,,,,,,1,,,,,,,,,,,,1,,,1,,,,,,,,,1,,,,,,10086,1671673353,bafkreidfkq7sadmshfmjujjhh7ot4plnpfhqcncrzavefuejz3gjvod3x4,"" +0x50c8C602Dce643aFab7C1C7b18dD5fa6c1a207e5,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,29686.0035,1671673464,bafkreieufvgbpwutw7vdm7f7hg563c6cxcx2rhxm7veuxwdxolcceyrzmq,"" +0xD946f4983DCe96A0057E34EBD27f807125504d15,,,,13143,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13143.100589331849,1671673480,bafkreifudd576nus3noxswpqi5sptyvc6ovv5jkf3wnzgz3qyq23iojt5y,"" +0x7040e9Df2f2e6EB8DdEC539bE0DFd156902F6B7E,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,10949.6271814,1671673492,bafkreia4wb36u4zpnfehzcx5no3sdyhkzzsjlpvbt2yplmzppleluezvzm,"She is the best, that is it" +0x2404D6857d7E90c3eD9E74E0d372a4d6d7399504,,,,,,,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,,,,,,,40372.023661234765,1671673530,bafkreidscmefuc4eyplywpivqcenhfd5iiohczi2eory3ywdohrrsuzwry,"" +0x96D2f13C453A7d210EA3CFc55f16C86cBC940cda,,,,,,,,,,,,,12354,,,,,,,,,,,,,,,,,,,,,,,,,,,,12019.633873740346,1671673650,bafkreifuzqpqb7gau6hkzldfbnewibe7o6rdvyp3etgmujtgppnxpimsn4,"" +0xaDC72950B98268Df2b19aA5aa7Ce04C077F70804,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,10094.721944617451,1671673856,bafkreibu6fysmaej4ddpm2jeyk2whwenyyahbqnx6utgr4c72zl6lzsdeq,"" +0xa0444EB9b3c49b5F1C2044A996d06c8b8BB6D252,,,,1,,,,,,,,,6,,,1,,,,,,,1,,,,,,,,,,,,1,,,,,,11855.950604989528,1671673875,bafkreidvpx6ova7jdqigfczgi37mhz244zoljxyzd3my4ekn2it45we5pa,"" +0x43b5FcFf3CB6fA36673cFA65a6f71C9AfD182E19,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,164843.58943203607,1671673899,bafkreih47rvz42rakruuh4ubpaaq6jja2wynzlzczt7wr7h3pdpfa5nqde,"love both you bros <3" +0x48FEf92b7e4E8dE8338C87B346A982bCafC81a54,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,20304,1671673905,bafkreigakqhfhmkr2sx32i7zkh7bgj75ereod4jj2pu7j6bkkkuyryykoi,"" +0xfb147870225F9492B8E2B705f92856d43f8D1D70,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746,1671674015,bafkreid4gxjxmqxtl254igkpdjnzykqfjbhfx5zwxf7pqah7x55w3cgima,"" +0xA7B100ecd7DBf8445688297d889394D001563A87,,,,1,,,,,,,1,,1,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,2136.188814264471,1671674077,bafkreih6ngj5ozqiurumdogueeuvcniufgvpc75a7h3iuisvqfomw6tqoi,"" +0x16a9E81cd347F4Ba87B14E64668a715A8f278Bb9,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,16746.365920408094,1671674138,bafkreievs2oc2caufcrdfbn4chnyhy5w7qoveakoz2f7y77b364sx5jsh4,"" +0xa242cA5D7AdaFc84Db05B4944057f0e83Ba9cA2E,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,3059.072133988645,1671674148,bafkreieoo23zcq6z4cektln2ln2nte447thq3iptc6c53jzgufli45ibda,"" +0x40a5168566a8088753Ba94Dd45181d205074Bd81,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,50372,1671674329,bafkreifu7uodqtfb2z77fbi5yy7hnyfed2ltpmnllafysa33qavhh3ixeu,"" +0x020cA66C30beC2c4Fe3861a94E4DB4A498A35872,,,,82,,,,,,,,,5,,,,,,,,,,13,,,,,,,,,,,,,,,,,,1171929.6774583901,1671674367,bafkreic4nxtddgoasutzli2prf2qqnr2pv4fsk2pilrpv4bssfnurjgbne,"" +0x52699374E0447044A62778B35a49d373fDFeB0C3,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1671674380,bafkreihjv26g3u6vye2iikbpqjn6mo2lna467ilpxft5x6thws2qjhagdi,"" \ No newline at end of file From 9c91d29e0de77c5a45f96a0d3ed14976d6859660 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:06:04 +0400 Subject: [PATCH 029/103] chore: fix false positives in linter --- package.json | 3 +- src/lib/votesReport.ts | 2 +- yarn.lock | 535 +++++------------------------------------ 3 files changed, 58 insertions(+), 482 deletions(-) diff --git a/package.json b/package.json index 142a7447..c4c5f6a5 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "winston": "^3.8.2" }, "devDependencies": { - "@snapshot-labs/eslint-config": "^0.1.0-beta.0", + "@snapshot-labs/eslint-config": "^0.1.0-beta.9", "@snapshot-labs/prettier-config": "^0.1.0-beta.7", "@types/compression": "^1.7.2", "@types/cors": "^2.8.13", @@ -41,6 +41,7 @@ "jest": "^29.5.0", "jest-environment-node-single-context": "^29.0.0", "nodemon": "^2.0.22", + "prettier": "^2.8.8", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "typescript": "^5.0.4" diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index 7c11dbf6..4655a911 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -1,7 +1,7 @@ import { fetchProposal, fetchVotes } from '../helpers/snapshot'; import log from '../helpers/log'; import type { Proposal, Vote } from '../helpers/snapshot'; -import type { IStorage, IStorageConstructor } from './storage/types'; +import type { IStorage } from './storage/types'; class VotesReport { id: string; diff --git a/yarn.lock b/yarn.lock index 28b28c77..f8132282 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1634,16 +1634,22 @@ dependencies: "@sinonjs/commons" "^2.0.0" -"@snapshot-labs/eslint-config@^0.1.0-beta.0": - version "0.1.0-beta.0" - resolved "https://registry.yarnpkg.com/@snapshot-labs/eslint-config/-/eslint-config-0.1.0-beta.0.tgz#3a04ebe1edf3b91ffa7b9f903358d5135bd23f2d" - integrity sha512-a9jGg8u4VB5aNAw0e3fY31LimYjAanrPfaVAOAxlB5syFiXHpaCQQZDqT5PIju/DFFpliQi2r8JwbC3CUT6mtg== +"@snapshot-labs/eslint-config-base@^0.1.0-beta.9": + version "0.1.0-beta.9" + resolved "https://registry.yarnpkg.com/@snapshot-labs/eslint-config-base/-/eslint-config-base-0.1.0-beta.9.tgz#88947ad7140ddb9efaa13d8fe7eb0568220e43ed" + integrity sha512-lfbOjFDbFV3Z2vM6fDFqq0YsrOX7LukjQnBUQwR+B0GJnxrdBdYN5iGjlhXibhwNnu77CKlwaa3eRyqZUj+idg== dependencies: - "@typescript-eslint/eslint-plugin" "^2.33.0" - "@typescript-eslint/parser" "^2.33.0" - eslint "^6.7.2" - eslint-plugin-prettier "^3.1.3" - prettier "^2.6.2" + "@typescript-eslint/eslint-plugin" "^5.44.0" + "@typescript-eslint/parser" "^5.44.0" + eslint-config-prettier "^8.5.0" + eslint-plugin-prettier "^4.2.1" + +"@snapshot-labs/eslint-config@^0.1.0-beta.9": + version "0.1.0-beta.9" + resolved "https://registry.yarnpkg.com/@snapshot-labs/eslint-config/-/eslint-config-0.1.0-beta.9.tgz#f3344cdb8cb69af522dcaba5c46180780aca22d5" + integrity sha512-AmxuCI3n6wdYDMrv5fzBnfRsKMmDSzIjdrQGBg38qkZbQoQU/78LsFp016ti0cMyGJIOEeudXZ7iavQqW3uZ/g== + dependencies: + "@snapshot-labs/eslint-config-base" "^0.1.0-beta.9" "@snapshot-labs/prettier-config@^0.1.0-beta.7": version "0.1.0-beta.7" @@ -1732,11 +1738,6 @@ dependencies: "@types/node" "*" -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - "@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" @@ -1790,7 +1791,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -1855,17 +1856,7 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.33.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== - dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - -"@typescript-eslint/eslint-plugin@^5.59.0": +"@typescript-eslint/eslint-plugin@^5.44.0", "@typescript-eslint/eslint-plugin@^5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.0.tgz#c0e10eeb936debe5d1c3433cf36206a95befefd0" integrity sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw== @@ -1881,25 +1872,15 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^2.33.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== +"@typescript-eslint/parser@^5.44.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.0.tgz#0ad7cd019346cc5d150363f64869eca10ca9977c" + integrity sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w== dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" + "@typescript-eslint/scope-manager" "5.59.0" + "@typescript-eslint/types" "5.59.0" + "@typescript-eslint/typescript-estree" "5.59.0" + debug "^4.3.4" "@typescript-eslint/scope-manager@5.59.0": version "5.59.0" @@ -1924,19 +1905,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.0.tgz#3fcdac7dbf923ec5251545acdd9f1d42d7c4fe32" integrity sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA== -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - "@typescript-eslint/typescript-estree@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz#8869156ee1dcfc5a95be3ed0e2809969ea28e965" @@ -2006,7 +1974,7 @@ accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-jsx@^5.2.0, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -2016,17 +1984,12 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - acorn@^8.4.1, acorn@^8.8.0: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2043,17 +2006,12 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -2107,11 +2065,6 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" @@ -2292,7 +2245,7 @@ caniuse-lite@^1.0.30001449: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" integrity sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ== -chalk@^2.0.0, chalk@^2.1.0: +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2301,7 +2254,7 @@ chalk@^2.0.0, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2314,11 +2267,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - chokidar@^3.5.2: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -2344,18 +2292,6 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -2493,17 +2429,6 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2527,7 +2452,7 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -2539,7 +2464,7 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -2608,11 +2533,6 @@ emittery@^0.13.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2660,12 +2580,10 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-plugin-prettier@^3.1.3: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" - integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== - dependencies: - prettier-linter-helpers "^1.0.0" +eslint-config-prettier@^8.5.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" + integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== eslint-plugin-prettier@^4.2.1: version "4.2.1" @@ -2674,7 +2592,7 @@ eslint-plugin-prettier@^4.2.1: dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -2690,73 +2608,11 @@ eslint-scope@^7.1.1: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== -eslint@^6.7.2: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - eslint@^8.38.0: version "8.38.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.38.0.tgz#a62c6f36e548a5574dd35728ac3c6209bd1e2f1a" @@ -2803,15 +2659,6 @@ eslint@^8.38.0: strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - espree@^9.5.1: version "9.5.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" @@ -2826,7 +2673,7 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1, esquery@^1.4.2: +esquery@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -2928,15 +2775,6 @@ express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - fast-deep-equal@^3.1.1, 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" @@ -2963,7 +2801,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-sta resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== @@ -2994,20 +2832,6 @@ fecha@^4.2.0: resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -3051,15 +2875,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -3068,11 +2883,6 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - flatted@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" @@ -3108,11 +2918,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -3142,7 +2947,7 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -3156,7 +2961,7 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -3173,13 +2978,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - globals@^13.19.0: version "13.20.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" @@ -3271,7 +3069,7 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3283,11 +3081,6 @@ ignore-by-default@^1.0.1: resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.2.0: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" @@ -3327,25 +3120,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inquirer@^7.0.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -3380,11 +3154,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -3897,14 +3666,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -3942,11 +3703,6 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - logform@^2.3.2, logform@^2.4.0: version "2.5.1" resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" @@ -4061,18 +3817,6 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -4088,11 +3832,6 @@ ms@2.1.3, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -4108,11 +3847,6 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -4194,7 +3928,7 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -4209,18 +3943,6 @@ optimism@^0.16.2: "@wry/context" "^0.7.0" "@wry/trie" "^0.3.0" -optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -4233,11 +3955,6 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -4303,11 +4020,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -4355,11 +4067,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -4367,10 +4074,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.6.2: - version "2.8.7" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" - integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== +prettier@^2.8.8: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== pretty-format@^29.0.0, pretty-format@^29.5.0: version "29.5.0" @@ -4381,11 +4088,6 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: ansi-styles "^5.0.0" react-is "^18.0.0" -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -4479,16 +4181,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4530,26 +4222,11 @@ response-iterator@^0.2.6: resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -4557,11 +4234,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -4569,13 +4241,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - safe-buffer@5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -4596,19 +4261,19 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver@7.x, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7: +semver@7.x, semver@^7.3.5, semver@^7.3.7: version "7.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== dependencies: lru-cache "^6.0.0" -semver@^5.5.0, semver@^5.7.1: +semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -4652,13 +4317,6 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4666,11 +4324,6 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" @@ -4685,7 +4338,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -4714,15 +4367,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -4766,15 +4410,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -4791,13 +4426,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -4815,7 +4443,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -4856,16 +4484,6 @@ symbol-observable@^4.0.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -4885,18 +4503,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -4971,7 +4577,7 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.11.1, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -4981,7 +4587,7 @@ tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tsutils@^3.17.1, tsutils@^3.21.0: +tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== @@ -4995,13 +4601,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -5017,11 +4616,6 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -5080,11 +4674,6 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - v8-to-istanbul@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" @@ -5106,13 +4695,6 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -5146,7 +4728,7 @@ winston@^3.8.2: triple-beam "^1.3.0" winston-transport "^4.5.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -5173,13 +4755,6 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" From 3a391de23037c9661bfad6e1193e6e553e376e5b Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:07:29 +0400 Subject: [PATCH 030/103] chore: dependencies upgrade --- yarn.lock | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index f8132282..66ac4c25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -122,9 +122,9 @@ tslib "^2.5.0" "@aws-sdk/client-s3@^3.316.0": - version "3.316.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.316.0.tgz#29aba140acc3466b17e1b2dea61afd2aaf10d788" - integrity sha512-nmlvXf7c1Nz9VR/VlplgsZqPqe7eg5RYuuIb70rX/4Joe5x98sJqz72hyLblwQTB47lwPLK+qvHps9aVOY2QhA== + version "3.317.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.317.0.tgz#0e3f9eedefc92f809ba358dfeac8c7de463199a5" + integrity sha512-Y7AZMO/ikKFARsGYv7LKNELTDqJHjEpDTGEBBWnFkVoTmlquBsa9r0tU2nofP3uxSIkySPkkQpR50Zm/Q6zWyw== dependencies: "@aws-crypto/sha1-browser" "3.0.0" "@aws-crypto/sha256-browser" "3.0.0" @@ -1307,10 +1307,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892" - integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g== +"@eslint/js@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b" + integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== "@graphql-typed-document-node/core@^3.1.1": version "3.2.0" @@ -1802,9 +1802,9 @@ integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/node@*", "@types/node@^18.15.11": - version "18.15.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" - integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== + version "18.16.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.0.tgz#4668bc392bb6938637b47e98b1f2ed5426f33316" + integrity sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ== "@types/prettier@^2.1.5": version "2.7.2" @@ -2600,7 +2600,7 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: +eslint-scope@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== @@ -2614,14 +2614,14 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== eslint@^8.38.0: - version "8.38.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.38.0.tgz#a62c6f36e548a5574dd35728ac3c6209bd1e2f1a" - integrity sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg== + version "8.39.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.39.0.tgz#7fd20a295ef92d43809e914b70c39fd5a23cf3f1" + integrity sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.38.0" + "@eslint/js" "8.39.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -2631,7 +2631,7 @@ eslint@^8.38.0: debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" + eslint-scope "^7.2.0" eslint-visitor-keys "^3.4.0" espree "^9.5.1" esquery "^1.4.2" From 7b5404c8a17a634e68a0a9f82938390e5878fb9e Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:10:33 +0400 Subject: [PATCH 031/103] chore: fix CI job name --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4e684e4f..55a85456 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,7 +1,7 @@ name: Run Lint on: [push] jobs: - build-test: + build-lint: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 From 57e44002c4268879081630ddbb69dfe9116340e5 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:25:13 +0400 Subject: [PATCH 032/103] chore: typecheck task should not also build --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c4c5f6a5..0823b835 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "build": "tsc -p tsconfig.json", "dev": "nodemon src/index.ts -e js,ts", "start": "node dist/src/index.js", - "typecheck": "tsc", + "typecheck": "tsc --noEmit", "test": "jest" }, "eslintConfig": { From d2343d0dbbb4cfb6aa8110632558448a68f8200a Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Tue, 25 Apr 2023 13:51:05 +0400 Subject: [PATCH 033/103] refactor: always throw Error objects instead of literal --- package.json | 5 ++++- src/lib/storage/aws.ts | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 0823b835..4813e3ec 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,10 @@ "test": "jest" }, "eslintConfig": { - "extends": "@snapshot-labs" + "extends": "@snapshot-labs", + "rules": { + "no-throw-literal": "error" + } }, "prettier": "@snapshot-labs/prettier-config", "dependencies": { diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 8b007d10..14ce4552 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -12,7 +12,7 @@ class Aws implements IStorage { const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; if (!region || !accessKeyId || !secretAccessKey) { - throw '[storage:aws] AWS credentials missing'; + throw new Error('[storage:aws] AWS credentials missing'); } this.client = new S3Client({}); @@ -34,7 +34,7 @@ class Aws implements IStorage { return true; } catch (e) { log.error('[storage:aws] Store file failed', e); - throw 'Unable to access storage'; + throw new Error('Unable to access storage'); } }; From cf48149c96beca7b9db2b86ca0b13582e784c088 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sun, 30 Apr 2023 23:05:23 +0400 Subject: [PATCH 034/103] feat: add open graph image card for proposal --- package.json | 7 +- src/api.ts | 26 + src/assets/fonts/Calibre-Medium-Custom.woff | Bin 0 -> 24980 bytes src/assets/fonts/Calibre-Semibold-Custom.woff | Bin 0 -> 27264 bytes src/helpers/snapshot.ts | 14 + src/lib/ogImage/index.ts | 41 + src/lib/ogImage/proposal.tsx | 88 ++ src/lib/ogImage/space.tsx | 3 + src/lib/ogImage/utils.tsx | 99 +++ test/unit/lib/votesReport.test.ts | 6 +- tsconfig.json | 1 + yarn.lock | 782 +++++++++++++++++- 12 files changed, 1053 insertions(+), 14 deletions(-) create mode 100644 src/assets/fonts/Calibre-Medium-Custom.woff create mode 100644 src/assets/fonts/Calibre-Semibold-Custom.woff create mode 100644 src/lib/ogImage/index.ts create mode 100644 src/lib/ogImage/proposal.tsx create mode 100644 src/lib/ogImage/space.tsx create mode 100644 src/lib/ogImage/utils.tsx diff --git a/package.json b/package.json index 4813e3ec..0b0931a9 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "lint": "eslint src/ --ext .ts", "lint:fix": "eslint src/ --ext .ts --fix", "build": "tsc -p tsconfig.json", - "dev": "nodemon src/index.ts -e js,ts", + "dev": "nodemon src/index.ts -e js,ts,tsx", "start": "node dist/src/index.js", "typecheck": "tsc --noEmit", "test": "jest" @@ -23,10 +23,14 @@ "dependencies": { "@apollo/client": "^3.7.12", "@aws-sdk/client-s3": "^3.316.0", + "@resvg/resvg-js": "^2.4.1", "compression": "^1.7.4", "cors": "^2.8.5", "express": "^4.18.2", "graphql": "^16.6.0", + "react-jsx": "^1.0.0", + "satori": "^0.7.2", + "sharp": "^0.32.1", "winston": "^3.8.2" }, "devDependencies": { @@ -37,6 +41,7 @@ "@types/express": "^4.17.17", "@types/jest": "^29.5.1", "@types/node": "^18.15.11", + "@types/react": "^18.2.0", "@typescript-eslint/eslint-plugin": "^5.59.0", "dotenv": "^16.0.3", "eslint": "^8.38.0", diff --git a/src/api.ts b/src/api.ts index 564118d9..36d2ddb6 100644 --- a/src/api.ts +++ b/src/api.ts @@ -2,6 +2,7 @@ import express from 'express'; import { voteReportWithStorage, rpcError, rpcSuccess } from './helpers/utils'; import log from './helpers/log'; import { queues } from './lib/queue'; +import ogImage, { ImageType } from './lib/ogImage'; const router = express.Router(); @@ -65,4 +66,29 @@ router.post('/votes/:id', async (req, res) => { } }); +router.get('/og/:type/:id.:ext?', async (req, res) => { + const { type, id, ext = 'png' } = req.params; + + if (!['png', 'ext'].includes(ext)) { + throw new Error('Extension not supported'); + } + + try { + const og = new ogImage(type as ImageType, id); + + if (ext === 'svg') { + res.setHeader('Content-Type', 'image/svg+xml'); + res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); + res.send(await og.getSvg()); + } else if (ext === 'png') { + res.setHeader('Content-Type', 'image/png'); + res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); + res.end(await og.getImage()); + } + } catch (e) { + log.error(e); + return rpcError(res, 'INTERNAL_ERROR', id); + } +}); + export default router; diff --git a/src/assets/fonts/Calibre-Medium-Custom.woff b/src/assets/fonts/Calibre-Medium-Custom.woff new file mode 100644 index 0000000000000000000000000000000000000000..20ee812b82e0ec53beb53503fe847bb2d6cc01e0 GIT binary patch literal 24980 zcmZ5`V~{9I6XocRZO z0004gn|=}i{D1Za`j-R!*ZcpQ0KcN}ua524&+`kpNZ2Gy5fLTnU!U7A$Nmoia&#o3 zLc$^d08)OxobMMBU`XI2qH?l|001&|004-g004q9rxl%(qKe7_zq&pE0KjVi0HF6y z!&)F&MOubme)=1y{0lw(P7fPHYkfNafInrw8g&2wU=3|i!w6G-$6ue+e|5qC!_N-@ zu&I^12><|;7XSdOHvm8gKv^(=l9{o-(QiJhUk%HDfRtYsF#C1>`ig!z{x68Y@Im;^ ztet*y0rCCjHw6FyJ!Y$sn6s=-~7ggVvIIN+u1rg0RRYJ{_=?5a|&N%@F@A;eFg*wv`TsP(S_rB0)PVk z?>Yg-Zz(4Jv)j;?mOo)Xq`)=6KED+F|2+k_EJHmbJw26I+kU%%x2d0)ADpQRbU%VI zKYJ*EVg@j?U-AFdY|icu_RRnQN%2jA2SG!_>hS;r;D!RK|L?fI*YsdzCZsSD^lZtFH{K9lruCd3OYJT z;34`8T`?f}A5aqjaZ~8`|J997)(%TjMj!n-!Qf?SblJc`8eE>A&(h*W16FsQQ;QNv z2xrBOJ_pCVOR8~;#&P&@i zw(iz3v{hZ7VB}@2N^g;)EmB=dtf{+6$Z1N?$hD!%G5Ct=SPV*`qxtw|^VHD1GVVUh z@{y~jlZ3L)jcCydY>_m^3Xl#oN8}mvk_xP#{}Ie?f%%P+r2`Ui??L}YzYa8g$dO)U zF9P%ob)8*iY*BY?t6fYnS6&};w+e|oOFJ%-Z>zCg_(RQ7o-t#A&_xy9M?QCWXueN4KSeJ@`T3HcUc|u zoH`%xIbXg);gRxXvnc-|eDp6g+E62|$Edqzc0s4Q0kDaZUN_)))kZr5tG?`_?b^Ym zFz1%h1yXv(pYk<&CjU-Q&JE9HtGe71b_o;dw5NDH+V>Lt`6#0mf9Wv-htOB+MWyW; zH&@*(a0D(;J8;${qm{1}^F_<@Raefj+Hrbg&prLx-28Mq;sRmNg05%8`zq=N;pJ@g zA^tVwXC^1}AhtiJ(*q<{I7amfq?v(S@PKpAQX1#=3;BUuZEB@&a@T*XJ28v1+NTz5 zcDxMYo`KK$H7Dvr^W^NWsb`y|2xE->i_;~&v-U>YZNfxwX}Y3i&J9NGv|IB^?n+;i zl(mO9S6?U7tmE*(QyaFkw6(jBu+_tR$;djp_r@!Atn(qq+j0B(TfzoPv-S!YhDg8c zuH`K^8#K?7@qaMCnTSAX7us!5B z8W1ghX#8kuke_QUM;$FFyysFX54a!9YEe3f4Sq*~4kHwp+AS%e?TSzaDf{C=W^C}1JfAF5Tu{#8Uz z!6Y>VV*UdO)$1*Eyf)W-PVqKeTv`%L=LGhXsj07 z+@6r0^Bg#CtUS&J&Z-S3=MDz#@S1v>-dW*XL3>@k51{X*k{@T56p-lRBzc)&mE;6U zcVNi`TFYX-2M+Qig6Uxef(vd-nYF!g7m4V95;)rhDr1d8}6+~`;ki+qTvOeX7qy?1JkDr zSRBLtCbUlxM!ZcZHBn#}LJ!r44O8ipPpZjqQ6?n{C5Vv(D=mnT1}0Y#BvPp~hFCd_ z5yyHhEA(+dk{6^QE*}Uz>GOiI4e86+$4qJ+P^`3<%d`#ST$iV6w9Nu*EGb%_N0V|L zlh3-3NOHIdmm)WARf{AyXiuWFG>BJ}=@&Zq#65HfI`dvAeUEIJxL9^gLp@hyd>M_1 zHeeg2Ty=dBL&7d5U2P^Y@VhAnhkm1FGBwTm`Vj2QSFu zCxcVYqn&d-1r*W4#Pu89#c%`sM$!qiyyfwt5Iv-KSLq?!N$^$9gA}1JOH)EdAs+78 z2a5meV}v|TsC)?DF0?KoHBKgcRMt>NMedq3ovTR^YN5tl$f2-RX8zRn9_=C6U1(Er zBTvZ@Wiqesgg{-W{0P#$te0_;0hdv7%pYm#ewFl`*izHI63?N-T9Ub9eGcm+y_KCa z2lc-4Zu}MVy}*Yq0=*dGJXpU67Ge;n2CLcUQa>uw)3~b6`X1#tLU_;}&Jdj;QDR%7 zsTG0r3ZT>1dQ0+cRx)LHZ2ZvDE{qNlGlozp6x~**hq|25TBSBq9pt?HKJQ`R-9+DF zuQ}dgY8em0E_FOk;V#DG6t7LF?Wmopo$3!%>=Ln@u@GeG)u*ZlGO2c|y_YqGf6`G~JQg?s%>4I^2E5|wJ30DF;(gJB$E`FwnG?%> z;xmT#68n1cW&Bg~L!t)zl?WF^m)xsWIHafY3h4 z?NAGQHrj4cD}Lh`wjI>9e~Y+SoC-sxB#|}&X?*zbcgT0Q z^_BZOi1*+|(QG0Ivb3Sxwfuo8eWoOJVdJb3Is?KOlz}n5mmxGgg%7IhR;3I=bfEqA z-_7fr@{j$`%QqGRqPKyD7tQfdfEp_6@S-l!58%!+7R~?0-LN-=m(tSGE2nLO)R+K6 zx)jL=%eWM3!_03-MpY>+YLw_nT=c#1HS@9p1QfqKE75lPu5ccGLC~t(X%9(%wUv z`@*aosG~MSQE_`IC%F!3)0N`&3G0^oyf(^%g^9+7iN=|JZvoy=U9QwW8+xcM^ZJxC zr%jocui4G3&FC%O5xS4*W?t!`vqW~}*s0~Mr_?m>R}G7{ojE=SJJzpAczE?A9sgQZ zmJM;Duw}5K)vOD9*Fp$VOS#iqSg(3DV-Hj>@b6%H*KE-+S_dzEarTF^)!7$FA2$zUNSaK>fAu4~@Si zz9EbF$xMZ)sIg7KIB)0ahlyb=IYO112$B+zdzbRF=1p!i_ZHc^?;PI`e4;>Y zc+O5w^JZnqL-a~d%+#Y-*Oz?UUu<5jq%7B-xlo1ER$A*csEuVh5_BsMwK{3ls{QDEct7El4;BVPiBHKeqkeAAyMjh#+%c!Ag95x#(UR3wYrmv8ttnojZtRvlAW+RsdW1`S-g!h@P$jBqVinS`GIAd|%n4m2tFC&@Y~_zn{eGm)_gA>k^gIU7`)(_@MSUy}5E;}b%hiG*WEMPU9~ z4(Di%Ca2}WzP~ace*b(UqQC+WEMHmOxwyB0o0OT+Efo%zB_-A5g*s;!85PTR8hSit z27;TU@8IP7VOU#OnpmO#0CI#Icf^6QJZ{0HD!W-+4vpraX(l(u&}{Db7;WPTYSO8Q zAdAaO&BXK+x$weRp;xRDqp7SH)K7$Jp9yYN~2i zwu>TnZ>&4GBZfG`0z)H2BaJajM6sZ{qK#FDp7Le=+VXl%%RHB<^oRni;vttgFaWop$TJ_spDXyHDg{5NK`q9Cr>*1w}@M#m!@f=Jp&P z2T^VPmWPM~RklW`3k|KeKg7g;-tf>&j*wB0jUc`Tvr%yL z(fa82pUzCFuSc~v-9_A-e%4H7oK6bgiQFx#!;Z-@H*arlPOi3HSixOJO9RTL$wYbv zr~M72YkH0`&SZg`^LD?NY>SQLa|3?&~B!#S<|SB{_+@wLjx$ z3Cw3>tyOEaSw?Al79Plw9&;5TJ~1(3XLwSdPZ!bDH~&s>9yID28khez>wW5g zX}0CHyNDe{Yc2`tM5IKkvZ;-Nn&{V=Zm)Sv;#z%31$of>SdCExs|=~MiVv3lvxc*C z`SyK-yV~jODsFYZzdqc_h_t?(~y%;Oi_kLz9 zgljKR`eMbFW0#EDnQ!Uxd0_bK^E6>*;0+?OGiVg5^Gqk$GQf2=EB(|bf;*$!>MxW1 z8bmXdXf5^@9&<)>jiFtgq4u)bzwdcUS-wlS6}Xz6uf{E`kY&a$c#)on{ov2*g1p0k z7(a9jBlczkv!#lB6vJBIhu1q>nhh_T$suE($DrGJh!IVY-qt$mHQMk?q#x!!=>bi6 ze60X2eL`LiyRM&jJU_JN$5xN7xZ zqq4TngMtGFmz+>Ofn(f6&EzJIejnUx_g8wmk(@!Pn}l(~;kQWnup3nVV8UyYFY;^f z{LJ(f#zNs4lsm4Mk%gkYcGYYw3=YsaDBtg^hVWl$b)Tl5F1<|~gSs5pv_WQ=>21Xk zn>PerCIpRYPFJftDYom#3g=zNn4)XB-$St-sW5H1v}9k#OZej{ISkjI+b5Cnl-EH&L{yV{JYzF+J7Ozb0wl=JU6gx9cEyE~C7|vkg1Wjb8}| z%n;uC4Q@=u(;r+A18c0lj&#bjIQ^S1*PB)63;Y*yUAeso6!^8ub1dIi@@xR5&MUd54_YdYzsuh z*cp?123~l(T%Zw01!~s*WCn5K`Jjsg+v*PQj{0Dw!}@s%rGba2cr|@Lo-vPsnco7s zgEBLIGaNAgl|7}(9~*HYd~~(lI^|*La^9GWm)E)yApV4QKNS^Vd`rJ02O8NJZY~uZ zFK^9{a*6ih{fG{zrNV8?Z(OVk!1Tw?d8Kb?Eav!M8j`^8qt+|5q6d`1)IEs z!K?D{MRM|&f1NSS?I(G*!tL?uf8{_zQQ#9E0l5v{4FcUOy;a;>GoH-YD+QJoh;DO{ zt8K~Gkv0nt@B>HM0)^@9cnuwNC{^wTHyiS$*tk=&nj*Hne#!Iuxs0G#2ytzl7r*SqVEVj$`I5Q4 z)0D;G-2=ERhXky$pm`sVOLU`*#${8CDOG*&3pQv6;_Qp5Xu12U80o8V8B zOxJUS@u%vG1z|GOaw{%&ry|(oDClC1EDGOiWup2k}00xI*ay-{K z=yq;p%k!W$T>fdNQGaQ9Xhl2&CMj9lII9rxDfl|54IfWAniNH)(NeNJ=xujuA+GL_ zY{OA;oz7e#8CZs-{cB~fMKVy*uihjGe?%dtubWKoHjEO8p&Wlr9k^8)m?}!86RSj4 zT}dfzPb7+k1k2_4w?7TPN~g7_vi%5;bb7p+Q!|l#YU%Z!u*e>HD>1D-5T5aCPVQ<( zb8g{iW?bA6&ju)P#s&r$M!~n7I+NruNiYcpu#%VnK0!Jz;y+2(@V3X@tI{ zlrd}kj^A{k(X^g>qg7Zz{DUP6hnJDZXGE^2q{|D2sjI{Hr}87%_1V?s`o_r88zO78 zg;DDwC|Sw!OZAhCrr5UY7G_CjD!O9?Pf*Tl+zwp)_ANWg7GZBRVvR@5B2&3d0~i%q>I&l zUr7G(a!*}+*n3gdXaDr1=7!2OwRBi4!_TjZeBUqxc;3~jEknD$bc^v+DYHEG8fv&8kv%^)&wBhS(tbWcbbT3ja z{zr$YrYr!ut!9H)ZfEya_iT3&OfD}JN*i7F0Oh6WLP`^Rr1f}DP3cGGWXJ~xm-oq6 zCX1Dp=MGM0O6T5GCLRvY=jhI+9dMyA@;!h*#EW#}u(1F8;C+UoWvh+O(=GxVDHlxi zBm4ev*PmRZ7stXstfDxZ1YS3>H~c%nH8q%HXB7zB$3(jNz%|oG1J&~=dIA|Lfa@wU z1h3e{kF?_O)v@fEOblAfNlIE-|CCs`5|rfZu6v4lO70KDfyGBBGv5=gDa9oco`A1) z=5InkY|&A>ZPxFyU{kqJZNTOi)c7B1Tal5=M4RFeB$NUpd=#&#w4fx{a`;}Ot3VTj z8weWe8wZuqb&Vp&F3HFxF2bgQh96Liijr8V$_jWQ4L8MkvfeHVg+8=Ro3PS*35acc zu(^b)9q_~5FClJn{gAqX_xnEg$Md#4W;J29&j-Km$Srj%UY1!8$oomx)}Q)g@A0T%2unHraBi9BDw`m?51j(9f}o zJ_`xACbu~KM%KVsRmL< z@hMFwXgJj&;ZLF^2_X&AU~|n!MDOzf%0h8mrmk&mbWypm*RzZwWz|o}Z0ElD+nl^v zV)%64_Z2EK(3V$*hDAuxPfDjLFYD45nS9q6;2B5>*cr0A@vAc3ai8xt>|Nv)={&j! zR8mjPBwKA{Vk4zxW1}T|8N25U$fZtxzql0h&b#i%{%zURpHG=ATGpb#R4iYpiOc6( zJ`ml7w4ZwrS<+%e9;=yn7 zbz0HJ+j@E=#L}#QstCR7{Idt=FF|*gDJP0=01=#aIXQ1u*ETl)e7{Rjgv*Sb!48F^~~fCkKUiE@@8R>fxC8-+k_NZ4g;s!|%vW=MKYC(=*8wkB^dL?#ksC>cUXIB0LQ7ZMD`dh1VgnuyVrUu`Xz zc?k9UKh6ut06RZM>r~E6$ENp1=hK&VbA}Y#jMpwt+YK44sBXv)1L&<;i)xReSr?BW zjN;rWnad(7jEUb>&)Z&{Sw?z#yVrW^=q-%Q(MaCeoZqQsO^bQ9nLKqE@h{}#sxIck zhGJ{oW^oQZ#a%=qvB{dr40CbjTTGsXr+71Ssf(aDADV4T#!25@Mby}-njn8OW$zfW zwvwEVIqOJ90mB(OWapTf{aWv(Hd%(SSZLk&N4c-Ks7nbSuzfK6y|N!*&3RXw(av_x z4A1vlxQ5!=$L>P7#=0)W3y>?KMzx!ooHun#}Kj$GhCC|##1;nO%>8wRKzmY(_wuLK3sx%Z8`G6o}@1d%56PbCOE4J zYk-SGIoyrRDldyeI!8*aZxmW*an(<2y@6VCr9XunJWCKUlV$Fg`*k|IUFl@+lP?fm zlvS<~b-H)YNKrn*3F(>J@hafvqXm>gohE2lm5)t^SINR1_9c zf}LU{Vy45JHV^^yUdpStMA2PKmMDbELu!cBbZxIwv# zi&oPc@pcn106fHf;i?9M#l+;I0)yySYd`ZDZ#Won@8R!67q=L}MJb39Mnyp>^N0J= z(;!0(xXDGWbOnF%KUOjMW~3nI24cp%^8MMeWzw1_9pHFVE&4ZzEX(~slb2(_%iN-& zmHBD5##T%m9^?Pcj>f}ER>ObBzJLev_gVK`+6IcuS}L{y{y0}+raF0(qq6gNi>zWI(?RC*7pL`H-J4=i%UY7^PcCE+1-15 zNUvT>g33Ayk(8MTXia=4qRc?&zf3d7^fiCH?yKNREl!sXm;E0cnz3zupY{4er;`~4 zfz+z;pS{r6>IIBy%s7HclWugIWvs$!5dsKc92T6ln#xGb*z0rKsp_U#-j+&VofdX; zg3=B{5ET-cLnW6gv9hx@-&1-~bC<1!N;qzn!=Mgf;<>aI&*1=vz4RpRu|*~tLHFUl zHW~?>Z1r$1*EnIbIN|TFd=80&rETMrrK^v)S%XsR+`iz%Y(X3hM0ZI@_-sR~;uxg6 zQDKbncl`&eJJv~yP29PuyFBm`7Z*~ArhM|C%n?8M8@+SugaSSxc!~HtRd`2PrmzSh z;Z6Fe)hViLvwH-0?9OE*kFIkHAE#*2XK<~jL)BZfZxux2_yE^`FH&3}|GEjYHU7q^ zhj3ceuUM;T#AT#uE6gjUCNr0ok#&}t8C?-hHtKcjm$mpRo7tKvhgW)xXK7jLS8Ln# zQGQ{iFr%^jwKmrRv&KSP8P9e%3Z-yg6m}i({7`+1zU`Y2-25@|T6sJe&Ch3PysH(| zr1)J%XGFdqNC9iv2W}M?Zw1~+0Ymt1!CYOjN?m4AY!ml8_$?Gz9XHW=jIWxLBSkbU zYoX;#9e7%4t2OAhy(UeFh$8qPxlisI^5hfLOzcQxk>9CUET6iT5*94?GTn8SpOW`` zCM`7jIZkI4$YbhGJ!XkGo8c(ueJwhmE|srDzB8rYOnx@rB2J_O)dU@A4bzYY`vrd# zEjFU$`7K`J0Ddk7v;kHY!u#+6`4b*3O&-J5nmM1CsA7O3Ow4E9!%7>~wRdoob5z&l z8`^9QoWC!RMX`gMcy}`>i0zX+8ALJl`z9rso%awHQpwBV!h!vn;Y^^2=06nST5=R>ryr&> zmr~NYu_dA)2m;X6*E}?4!PWF!)5_mzKEd;Q$~aoSgoD3gKoapD7?S;N#jaIaMIPO< z$-+XF&mNtDjcYsp8Jpd+ic?#=5_^JWU3g)>C%U>}=<$&(6n_+XP%QzK>AJ<${0e}_=hGe1{ROV!%FwB+J=^B)U4D1I`LXGU8%EiJ?j}g zHig8(+NE-O3^s2BIdxO7hLUW{R{Siwe4Uf0&1&O#c;?Y>%>96AK^+!PInAoYZ#C!; za?ur6+jDw5`TDCo{b>Np`RdBK`5)Zm{s!1w#MCW@`xENzgxV!UG}X$8$(wfrINIAY z6}KQF|0S4pQp)wkgjjWqR0)L!lq|N=V_}nE6M}BTj|;^+LF5^R@~-N6=+v9ldAU*J zH42xEaU>Yu8jdFYY`NgLLoOIujQKX(`zmcR`l$I?`9O}V#6M{G(KVjzFN8u2-)a+l zp4uVt$yDFDxys;7D7*)e@asb)F;=xMh@C|FN~ved?JBxWU+wVou7pjEw&I zFLPpys47*0m*Ju)5*6wvLAO~d#~fGH^r)xr%d_bFt;uy*X9M3TysGcEeoH?} zrc1kA)4zBE65J%S1{+S?p&kVrEJfkSdpbP?ou-vQ=eMNFX~X)2f5p()J_Cc z8wjX`?4DHoiD!whh+YHwFyDxEp4|oE4ZSHpwz@usrCUY!**$JLd(0+xq~fF3KkLt+ zXI>oCxAPC*)zM(&013ToQMaP=jA{v?sQh(=yt|ShWZ2W)8<-iATGJmyKMcOA+QC~o zcWZy(Xg0`bgc(PJOAX`mONPm;90ecL8hxvJmee#=RVNMLpS)<-docbvG-H{9dCp|8 z;Vkjf9PK^zt?@Sk1-Ri#HBO6kVsu>IwtOK2s7YrZfPAb8B@?|%nyG_sabv9L2z z`$v_?qe7bFLTZY5u}61amOpeqqoik+6MzUxZL|yC!sv8mZoj7-g^kik{HMcn4z6iK zh#+bxSTyo5Kf_73^48P0j*%CTTeLPZX9CRT@c`IY&uC9287|9LPm9OXIbmW5ganD5 zmxFVtkPjaBvAnr3E9*7$1w$0n7HA;z6itVO+uPqONi zP5Jc08+g|0Qu2G3buUBm-V8WPmTQ;7qd@kx7*6O_^3iH%X!<+~6e6_J9!>ntmQs8@ z-q!OB97n~P{*LmfF(`)}yg;79;c&d>B~So_u$^UO|n0#p<Y76Y}$e z{{x9{ijkUUXWeM(9og{A6cfb+xeKrIt2N-p7l`v~jJ5wp)2&S*PjD2uHzaXR^=z(b zKVK`C?aqLWePyCPt30=83TZ`}A(r-xuY&({(I^~IopD=jiCw8IOew8>D#xhu&7*Q1OBCPY%y?x~bcn6@K&6(b~a755{12?KAJ^T)&na z{JWG{E+$l!oY&x3C#DEZ$}T>8$)jU8k<2x~Z-+E~%-Zn5_+lYfth8d$PO=U}8 zi7r=q^|&)6TX_=jejfPL+ij5t6iAbd`n(iv?%j)om*Q1n!1qY&13tcV96MS|{B znu`nX1F8zbT3P>xB{mgI_D-T$md0_L{DTx}?v*dA&q75hmi{%72a3UPF7Tv>L}{~Q zsqnX|thA!2AU8>affsLsADdztb`lzDZhCT3sGRJGo!tF_xY>wtjS@iShA2zDkf5|o zOPPigBO>Bw8R^K<3TN`;S0_mY37hAkGTn$ebp1vr6QOhz3Spt6!?~v%M`VK-GOmdx z6PbIAbI7_>wjCb9XM=zi0bGvu~)^2qNmU_@$-7UqOf8>5EzB<1#_k zQ)kHe$U6Q=k}3x)i1{zFz5z%V%k_*AU1^O-wQ~+lbQ;iJ#hynJa6vXDi*3rc{l@!P zJz~eQsS%A9h~CpWI$er}J9F5?dZeO0L^=3z-cxvYU~Irwqm^(#|IQpLhYz8{!R~b! zD0%)#Yn2JVy?S>ZR+7B=ZwgoFhWFTF?Ymi2-FLZ3guG$7{cd3C=65C^b{yRjrlp5- z4}IM{OnrU-Ga-a?XYpGjR*Q?dB_4uzxixWuLqPxY9eAQy-6)AnT?YaC8l&1m>z~?H zNU!2qqhb(NTfn%-HAL2d5<^65ybasYEQ@UB0?8<@I}OqYiMwKXQ$$GZ_R%M~Zy}L8 zV#8+)v8e^Zd&H~2b zI6R{4O1VMu>$999ySDUdk3W60;TPG*?e%Vv@(8x_e&m02hOAi0KM4ed%uNd2kN1RN z)0OYFOUF2Ws;OpHJQ(JZ8MIV?=hmb?5?Ir@5A&^(@v<*Xn=cmR^)hP@oe@-=^rW#z zaN+FkB(+&wY!5_|<4DdEtfv@h>QpYph3a>3u~eHLF-9YJI6p7C>K8f&MZtSzU`@+9PwyIF^UxZDD5>^#ZaJs7mv%!ba4(U&P)}ywGerMrjVu%brT$b1$r4oV8&yi31QxNj5i8Z zKuZNjMJj`rSCh*E8}I~Sc$t%%2QCaZcHCX!2lx()P(7m}UZNjT%iTgQWS@Lpe+yLt5pXH^neLK{Ms__W}W5QwOqJX zw%-K!?|NaVd|hR@relbj9o<*hLCU_yhu>H&aKG@*PanH zDHX0-gV@7BhVL>we0Fb-`h-Q&hxl9ZP7OPJkDl>=Xt zqIpS%K)%j`GG~*4=7vAHpf~lZHe>4IflM|Kd3;6eMm70t1%xK4P~i(DlDEx?g1s!b zP8&5qgN+msIU#O*MIfn`SgD7^{b~{Obn?*0x1x`qT%nE)%FcKE0*xLxj_3)zUwqv4^Ezbq-Pma}6YUxCO>MijJrGrTr?P7nakoqQd zY2Q1svDMYz>|U$2jnYh9XK+N>3Tc0?hlejqj?ar>Oku_>+XJSDuluvrCtM@?YCLk(MjJxntkP2UEW~y}( zY{@=B7Fqx(Q$xifE2}iaf7c{TO|2wTjSw8E`GcR9?q_{wpmr1t{nS9?HumPn_M+@X zK7rvmBtcd{nURt2`IE|wu|O1S2C3;z9+r;?o?BV3(zWOVmp4Cs6%Xw6*FAm|MMI3v z3ceF9tk*=`Dbp$OJD~i@FBJvZKe^Hd38;Ang%q^z%qrx+cUJH+xhP}gshMY6RZ!Ci z&MIL<$mkh?n!`50vAf_#+XALzRT!a?wnc@w3*}HxSh3N z+rD?7@l)9d?kQrLK~?Y^%?N&xR|aN>N@7zwd)M=2XIg<{=zdryiR_8Vbh``agM0;k zse?{3OjqoxGvzza9{YET%KS~<${TlfRxa{PS9`{~V}TA$Kdl%3`7`EjwNT?q`3%X( zJ6ATD%SrwNiTvP;y~N!vf6Vf5WvTOBLKtjKkTlY#6aO9wWMQLI`YD`qMcyTP;}Uy1 z+P@Y~1z1%eG^q!VBWxN37W(K5 zXZlR}nM1@y;I#EshSi41OXUHLvu(fqEn~wiblZm=Yffcc-1VZ34Qx z^(G+6#tMDl@W{Jly^ z{`-3Of#WJ{0US1vTh3ZcqM;dLP47W5B=>Z^3HCa&Qf@b1k_uiT4lZ%!w#|%P<~`Ij zJcQ&bH-2;1+|kwgMXTG-Hha@4CZF`oz+zwVe0Ni)xb(HWA@@nHCcO4$AnwL5H$??Y z%iaw3L+#G?RPn|8;tRYh$45)Y5VktIi>cpSYkFcVarLX|3opXG;(+B!Maeru7P8I2W>OeRp|8-%^4!$ z2+T{yX+l=aW-I|F3G?2x6#Md~iT+|UNwWZo!(}iO?hXbPY#A4_n6R+}R)_OW_kD7l z*r&WQ6ewEx`Sv?2;Yx7Q8P!wATs5wnrVRyMq-7c1$8$AeeZy{;Yia!RD-Wm>|CUfWKJ~M&*PaQ zA-dqbfDVs~j0j%@1t3li88t@=dR}NMd@lIZ@6jD&&aZ!*B&T9|4hg>tz|FZks1QIB z-Ci)&x!+FB)yHEDi!D#0i_9!`j;3<1OmvJ)zRV!6%;V!_WM-LG@qRadx48WjOYD6P zKf`?{S}r!c&mgkrI6&i(zUdV>kV(hl0c zQDhLN3IoLZ#>XN%ESY7c%mZHz{07Jc`j!>5bsqO;#n%ri{af2q`7;}Bb>~2j(=}u1 zh-KoXfX!m}k?XDm0*$vrro*TpbB$7Dbu_!kAw!YVHp+o;m6T;-Z0f4Sn#8u)b;<0e z>yAmi6g`C0t{)OoH4BuX)0U3*14M0!bO2_uNaNOG?8@hM^&E?k*nz7bCPjX8pJ{c? zyRc&kZ9#$}u`{dyUpLB@lRJ4dLA9w$Z63(i1{2-v{i$|b8|+mJVyh8l);&U9W0RWl zu5$P)WD*7k2jF$$$b#%COE z(KCc#h+~6^RsLhk+dBNl1V3_z>5ia0cv%~6mM<~?H&;k`#r>lrc z8c=NOz58iNwC0r*8ff|qL9`U5W?GF7do%sAHFSazrDBa7`=R}Lm4~MA`O?$Bl+u__5(sqvDb z^&5H9FxmulhGBv`zyA7RTcm%o`jQssYdQP%;R>tD$L*t%G@fLzVi+(}4>s=aH|!%W z8X7E2s}o0)*E^nvUOZ?;56Gk^A=!=^rAc9Q77)VB&xefha-I+wgJoj7!;0o`lT!Xu~7@aVWPphaS6t$-m*_=`M zHf@{!&}hq-I8TDxps@YpsOEn1PYoxEdFtaR{}kENSX=x|Ylv(a-I!$-x_C62H&+)^ zNBgp@yh(I;#CVud>mDIh5K;@W7na5&I~W@=)K?nfdBafqI+Jz=dV*okaE>+J^Mwx# zPY|s#Jk!L&-;hW;=S(iLZP5+_SAbl!n?tJCGzFOAGh+uWxt(f*su%^O_zGkgx?#>X5~|*r`rXTBadR&-oA;-o zr`+dOgw%-z4vw{z1umbMET`U5M3X?IDzV?@f}p+MU65K){nXe% z{$2Af2WB^$x1}NT0Qryoj~tOPRM|aXS~cgI=qUdMEuZy;OPG$d3R2~O>tMv;QcfvRxDmAj- zMPg;DUpEUCBXbkqmskf>-rtm-)@+sjnXWY5={{)8hiz^>azQ_cvJH2aH(!E+Et%eT z%ZLtnW@D1%o?N4B%zNTlaKG>rIp8^x>QknVlO<1s$lq^8mv729P3AlprXEpVGB~Kx z@L@xXS^m91cqtjBwp}I`?C_LQ?VA4dsY=O>(>9E&aj^xSohIx_~LWJ>5?0& z^xXBIz3(wZI|F91D(q&hij3OwoBafHb@`mx$;O%B={@eo zrrCLMi0h=#-Q_*D{rPcKJ@V9jsgZC1dp3TRvP?x}V{$PMU!bcFcy)M4#;K-+nKWIq zmR$5<`(Wz(LI@?OaIk(>pM;^*+-S|Dgd*-_Vmy%;rum?ASDVdi|>LR9rHxoGAz@uCI63)z9iEFYhQ@KCrXCFuP>aqOMIP z*@g8xrK_f0kfyn8y19s4HeJ+AFPk1_GT(-9yz}+$n_l;y-8W5gRlek2Qr`hzt-S+2 zfATx{jQ4%>`9ANP=UJcr?y#<&`VMP4)|7Wx=g;5{>p*%2_n(x8q#g{d@1@khOGN*# z<~9_nQ3rw@q8p3tjg9u=#`@I!w6uKKqyAmEnfi_4GW%m=bABrRU8q<6T1tFb#9xj3 zp)OGLSChIxxtxou5&hLuzyS()eSMxoVMy`~;C|_M{uA{l)WH_+3to6m{8c!m`a9(T z2R8t3!dKLiR^0IOyN;75@jrZZvg5>w4)Pr6@HyF+;_&!Vfa~I}gvY&WrN1^+t#k)B z7v7w@#-U^S8izdga|Yhf-dFDMzOQ_g>xbj2yU#~8cb@~d(({buK{>9y)4Y^xhS&Yw ziS#>vcOvoFcQYLK;m=v=$DgBmUg^&{?$4h?=5iU*!mrQCF`duJ!JWqTGxUi$zNSy? z{{g{RXz2g|0C=3elU+*`Q5eVnvpc?#Eg5uCNF4Mg1kb*JSZ)Ln2x5w4cp(vtJICE= zXJ?i(qpM!^1^Nbk0qGlb)m_nLpCh6V;6?vA`)Fxac+(EE&+nY){hVh2-1QQ882&U~ z3VW#Fop1?b_$*w;ZEsZAN5y+2Jc5VbN8wRaN;AS^I4I8wk7KI*L3je!%in~r;g)|- zc#`}|xPn>#lkg3U`6t3t7#+FEN<4pps~4`Sf;~**jc|$H?}f`~;ES-2X-^4{;J{lG z9>sLY7aqg+QeAi)Gv&9!6Sz}8jdKliywR#-K%0}%@o+)cGWA{x+`zHuo0Xr_3!kP;dF@2B9AdYsdQEMiQ z_PBmVWt*y)PL@m4-irf5otbNV8fdbgr&wW_=7rGn=R?36G62FKz!9FG&wi&f}DKXNz`16Ykgtif6g;Uo-W1SjJZjA9Jqn82x+ z#A#TE^*9}8;7pu_4LBP*n{YQS#bvk^m*YBIgWGT)uEw`<32wrl@Mmnsm3Rf;#~*P! z?#Ey87yJ!(;X%BGH}DYhDBuPZ@eTyu#M}4)@8UhYk6)sMui#7gG9E@5f546SI=+gp zp@LuIx3~%$VPFbXn6PjMY-~ae4qW)~FpU}f3bUBU9L~XcI2X_0PF#TVaUm|kZ}2-j z%VxH)l^PRl!+-E!CYfTI8GJ}E%XTgz*}=tJ!fm)Mx8wHQfje?1?#x~Acl?99ayRbI zJ-8?L;@;ec`*J_-&jWZM58}Z*1pmZ0cqk8JCl6;Am$I8ZT*l>G!IeCMNAf8A7(e0B zJch^eI3CXv*vnPyV?T2|kpow#FIG85uVIbIEsJa-}oth#xag_f~Rtl zr*R$E^K_oUGkF#_@NDYLv%n$+ODwa3=V)*vr)c8m_yz7^l@@K*xQPy3di3#4{0QH{ zckw;^5Z}TNIL#T(a*p#nhv)Jv#cM@I24w1-O^A_I9kMd*u zI6uKp@>9HxxAW7ygLm>S-p$YOv%H7*@^ie8_wxaMo)7XNKFmk>C?DhFe1cE%DL&0- z_ys=8=lDFo$QQVUFY+b6%vbm-U*qe1gKzRJzRh>|F5lz({2<|5MpsvFSE9G77aZG4 z=nA#oyd$QCrb|fl+GX1kQwd#Ry02h31;1J{#caCJ;Hkc%?dgSru)I{EPPP7m9=a?l z=nwqsULqF-6j8vO3MeF`at%kKP7}E(4WUrWDUU)zdLWimIhNEw!&kXZGXn*?TGb<= z923&3V}2?P-m*HcJ1v#qrww|BSrnQfAu$+LVnme;s!9yiy1^)CLt)e4nkHjodQB|G z#s<%cD8jtJ5 zsPXw~d=pVMepJnb zs>YYlI^h^rxz!K<*@>+x^W#!tA{w(F-H^#xmNPNFF2?5?TwAYdoR^SV-#D`K4cZ%K zp%nBwP4wmz>O%Er#5HxdqPX4QnX!1c-IyTXfbO1^+GN?$gUV+VOsb4#BqS$`hH!*y zxXGCXrma(oa}ru|zGH{3x|c3psc?Bugv%ma6=7e5{SoF`jn1IVtXtCyVnditPxp$& zTS=X|=`B$!fo5Kq_DoPhzPYral#%o895d}{eJULdKh#gk#5xOlEh&o#S$m`BazojM zOrD02rPM)?i}DbJEL$H#C}kFU5DIPKEJD%|KM^vRm@SxkwP?>sZylR_;d+K`Ei5c9 z`-bTT)}|>+(qc({#WBhiudZZ@s_kv1Bvmr8!m{t zwUp|cnl2#`9-q!&W<@)go)fTyY_{p8-5_N%Y_aKSb3vAYQpvP~riV)NLYis8r3=BE z38gl#5_g!N)+;@YihURTTrV%JuhIEiped_e|d{SPKh?&882w2t? zRiiE?<#`NQXcnd09#F4h`)=@3hmLEe?}m}8h9yb5>YJWXGv{Qn#jeK&7JFUMK^cK!}PYD zeEDWGHV%5Yb;lc1^FhRvif?`aX>H{%i ztwoU1D%M2QclRCl9dX57+?V*^U*JE4^WA=KJbZIz?l*JJ%-ky^)u^oR3Zy!^GO8_P z%S9y>vU5#NIz$15HBX^6-RqKSTAR+8O>f$mRBI-^!Tc$iUKIAD;FLIIUL=>@m)DZs zp=?ggh5lVxwG>LZf>t=&Rxa)zRLbQC{VLB^_~opJo>D~BiYl%})1;v-6eBikW|k0e%nByk|NDICb*!nm9wm8yg)2qF9+90mg9 zAjuDh3IUUZGKc@TiYQR~Bcec1r9b;e6l{Uln5AG$YB?4dzW2Ikwr6)FOSU$lyPl?} zr~CEmclGO@S&%ZEl&23xIwykYf+e2-6-0rsbwQp_T-F~?JVf3lxe3;w6l{(t~TKlQ?w>$bfcIl_;V8;Ws7V0360(@_D zJdk=r*I}%eI}SN7tAiNvXzFOk*|u#caXy;vNY4?-q}MYg>08q8Pd}diR{G8K&oSek zpbWma;K6*#&_y&aC{iXEM}2`7;8`{(Q7_611D_TJ6EqZz(w<<9_TiZ$t+II1i@qCx zWe;jy;Hcm}1B~3_1X`4(#X?*+0QR7~4{cg$J9%`LJhd6uPMRA$hQ2;^<5>@Akg+L? zeie*ep*t}ykFXDPypEAQ>O$>Y)Nl_TtrxxfgDMSxio>XXgj}_sGU`B3QipGf(~o+B1L(y)Tp7PhTF%AT^JOgNTS&2QDE5Hc zH@wqS=U^Qkr9e>{GU|jZyKp}ja-L_T&;z+?t#GyMgo6d}r9ex;$pOgmKFIJOa2-OM z2T^_mnQb5oo9JfRao>v41kFdQUTA$Mq~i)6=4}r~%nB9b!e^#r2=m*3 zetXbkpWu5Mm^v`NFBA@;eh;{)CFVyQ%^01_qUAXC1N#85-HAGlsSGZ8bPUg51-u4a zr@*b#s5^tcXDJJgWq_>+-FCq(4|8}Gw7mvs2Ms0k&EPIWCxG)5o}b2(Gk}XRas~2p zG4hBRxePk1moM-0UkxqPvQPC zz^4I^13m+I0`OUI>nFI50DcPa!I5jAXX^mql-h{<_XP!Y54dzMMtcU==K#-RtT}Wv z$Xgs)0e>(~Z^DA=InxcUWT8ikgAuhJQk;(&7eVVNW?BG`C&1&Pcof!|7cqP0)vLm< z0r4`YFv4lvpTYGk_zazZmW~;ok3d5U(9Qznd<1fFx!}E|or%xr*p?+^Qib!4DLW$}`&;- zm>d5A1ORUBqP2_GE?T>2?V`1d)-GDRXzil4i`IIbsjvrEAHZmPWkjC$>oiD9p$)sh z`$4*aHUeu7SaWn6WU(Ev1Ld87d+>~9{=G;uGZ-;vG$kXNQU?50YYZsKfs!03$$^p_ zD9M4699G$k`Tz~8y8(Lv`v3=kn>~t{81C8%-?%8*6GwytP84mtsrc^@Ue5 znQJ$2_khMMFfGIiwuJg1tpQp_%jrFIIbA`kX)RqzSJBn9j)rJG;-8IlGu;Y_?M8&N zkM5=W=>d9>K1rXV$LQ1aIDLkmpwH76=!^6v`Z9fko~IY+MM(8E=)zBEgnmjtqhHYP z=nqt)KhmEd(?8SSAjyA1ih&~4qS{nW^{J(*U#(GV)u6gsZBQH4cC}O8uI^NKt37I; z`k>mc?pF`1PpHqSC)E-4lzJK(-?DBcN40C;yy|Vb0~$tw4_P}wIVgd%tfhdU0=~S< zDVPY3Tel9t4aPy)DCqPc83&a6LbE5O3gr7v&@~PZL_Athh1PgX8)6;`PJ$NQqAUO! znJTHNNR;d}m98RehW{2ZvhW9V6%94M(8J@$Xb|p^%%IvV>L9OYHD`hXcvJ}TknBm& znTM@vy2ntX%i}1Oh3ZkEy2QPjLzkfr@&P5FMvo+8R}8fkkz5Jjiv+oLjH%M)W>OU# zhtIQXMztiRT+$%rGB{S%wU|X2evg_%9c1<(k zr(mRxU$*~pDMoiFORjC6Bq5g(*j0(Ci`AE==u@MsY5o^FQV^Zb$7*fgDZbWz7SWt( zo{xnbM})4ix_W<#KA~^$-WlIN(=?T=n~-L#HO*P)#fO&I6V;Cvm8!FINN9G8T<1ldI zq^aUFjF3~VZI89+!|Xjg()OH*^LbWMxF2(-!GU^z#yw`$LtvlwYNMSaT096k-6{FL%s-1(L2ZgoRSyrN;8q#9M zcWYExJH~VSE4{9HGm|hlHOeQK;F>EZnaF0wj>Q@Ke4<*52Pfl~@JCj9EqQ(3$!pi7 zUb`NPpRl9#FD!bQY-G?iBRR@xbOoAU;!|ij4;u?lDPavI(Q|VSY*y_PXs=Jss`X<@ z#8^eVG%6S;?5Jp_XBx1Xei10On&gJM6*oU zi^%M!-AO#oWE7QnHke&OG*jMqXzFBV;alhATEiVVmC!rjL|qa7R^-gxlbMx7f)#U8 zJQMAA?6YQry%y1HdyLuBl&53inxJjA7QfCY(qKI?I#H?h6dz%aWW6&Idvxlx+uEy_ zjs1Dy93t;h4c|jdZj;d{`QWprSDs^35%YwK|;RvU=xbrS~DnLNr#MaZfkGHTpHCy_3wgW{nft9>p#qFADmqCT>hP zjn!ut?0e*`tL;m@`nEGmjnZk11*X!n*gKrD^Ig;8UO{R^&&-V*`YRJrhjhl@+)i0F^K1=B(gr7?)Hr6u)rk7=97firbI?Iy z8`w#`T}?|v6TQTAcayxnmUQfyfTak_t@8Why85_IXzIh&B#br^-w!42m26t=J{*lE zpSgf8y{?>$)!NqQQOLb8S`SA~eE-_qqvE_>SRNWAM*_%kNG>KQ9d1zJ8;eRFcK$M>*bj29cz6;iWB8H zT|eO(|HVFEualGQhoiH46N%~=vud8WwG*(Zcc;e7lnkzdy)T-T6ZI#o@_qDZ?Ac)5 z8+fZR2LCl`S)llSy@GPoZff~$(nR=WU94}TJtpi;#Innx!;XBdNAgYM zyZ*hUneVuK)u`{Qp`6~`Bwu#v?<_+uc^1F)lOw^`VtqyvZJEzk%yFM8UPea+a zSkI=%FGY@emToq8DU`Z#ZKtiYg{}oGq<+jeM~mqax>$bw(M9v)&_iw1ha4+f3Kss(!j3a)n03^*PCk(D6Zw@^4k-g!?aQ$%v@e=@>)b! zb3t(}uLtexO%Bs$L%Ggd0Xt0Ih4L81|YB7^p`DOhbvGRZ1&vA`<7gMSgIz-8vc z0JM8Pp02^&AgpC6tmY^I*FFK{R9>Mr^aEbm_AE%Z_3t@JVEo9Qs} zE%Y$*t=R8B3ORj}o<#2>$am9M=ZcQGnOaZ3RvXnODyi-2 zgY*}*U)@82`iQz0T^>MgRfmz=)F+S~^*MD!rPNo|)2d57i#$(#6FH+^K<@q@cye3H z0C=2ZU}Rum-~eJ420jL+%#_spqWs)E1|}CbpAZJVoWznm1{DT21`uFmU;?V-VPO1k s&j8YeRTKcEJqbbp000000RR910NPWT@Bjb+0Lkzw$^ZZW0NxC1Yc#e}B>(^b literal 0 HcmV?d00001 diff --git a/src/assets/fonts/Calibre-Semibold-Custom.woff b/src/assets/fonts/Calibre-Semibold-Custom.woff new file mode 100644 index 0000000000000000000000000000000000000000..0c6fbe6addf3a663899529d0f85fc915ccd818a7 GIT binary patch literal 27264 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 +
+
+
{proposal.space?.name}
+
+ {proposal.title} +
+
+ {votesIcon} + {proposal.votes.toLocaleString('en-US')} votes +
+
+ + {await image(`https://cdn.stamp.fyi/space/${proposal.space?.id}?s=160`, { + borderRadius: '100%', + width: '160px', + height: '160px' + })} +
+
+
{proposalStatus(proposal.state)}
+
+ {logo} +
+
+ , + { + width: WIDTH, + height: HEIGHT, + fonts: fontsData as SatoriOptions['fonts'], + debug: false + } + ); + + return svg; +} diff --git a/src/lib/ogImage/space.tsx b/src/lib/ogImage/space.tsx new file mode 100644 index 00000000..e2fcbb66 --- /dev/null +++ b/src/lib/ogImage/space.tsx @@ -0,0 +1,3 @@ +export default async function getSpaceSvg(proposalId: string) { + return Promise.resolve(); +} diff --git a/src/lib/ogImage/utils.tsx b/src/lib/ogImage/utils.tsx new file mode 100644 index 00000000..3d7368fd --- /dev/null +++ b/src/lib/ogImage/utils.tsx @@ -0,0 +1,99 @@ +import sharp from 'sharp'; +import { readFileSync } from 'fs'; +import { join } from 'path'; + +export const logo = ( + + + +); + +export const votesIcon = ( + + + +); + +export const proposalStatus = (status: string) => { + const statusesColor: Record = { + pending: 'rgb(107, 114, 128)', + active: 'rgb(33, 182, 111)', + closed: 'rgb(124, 58, 237)' + }; + + return ( + + {status} + + ); +}; + +export const fontsData = [ + { + name: 'Calibre', + data: readFileSync(join(process.cwd(), 'src', 'assets', 'fonts', 'Calibre-Medium-Custom.woff')), + weight: 400, + style: 'normal' + }, + { + name: 'Calibre', + data: readFileSync( + join(process.cwd(), 'src', 'assets', 'fonts', 'Calibre-Semibold-Custom.woff') + ), + weight: 700, + style: 'bold' + } +]; + +/** + * Return an image JSX node with the given src encoded as Base64 PNG + * + * Image conversion is done to always ensure the output is of type PNG, + * as Satori library does not support some image type, such as WEBP + */ +export const image = async (src: string, style: Record) => { + const imageUrlData = await fetch(src); + const buffer = await imageUrlData.arrayBuffer(); + const stringifiedBuffer = Buffer.from(await sharp(buffer).png().toBuffer()).toString('base64'); + + return ; +}; diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index 87a9d589..88fb686b 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -45,6 +45,8 @@ describe('VotesReport', () => { }); describe('canBeCached()', () => { + const baseMockedProposal = { id: '', title: '', votes: 0, choices: [] }; + it('raises an error when the proposal does not exist', () => { const report = new VotesReport('test', storageEngine); const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce(null); @@ -57,7 +59,7 @@ describe('VotesReport', () => { const report = new VotesReport(id, storageEngine); const votesReportSpy = jest .spyOn(report, 'fetchProposal') - .mockResolvedValueOnce({ state: 'pending', id: '', choices: [] }); + .mockResolvedValueOnce({ state: 'pending', ...baseMockedProposal }); expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_CLOSED'); expect(votesReportSpy).toHaveBeenCalled(); @@ -67,7 +69,7 @@ describe('VotesReport', () => { const report = new VotesReport(id, storageEngine); const votesReportSpy = jest .spyOn(report, 'fetchProposal') - .mockResolvedValueOnce({ state: 'closed', id: '', choices: [] }); + .mockResolvedValueOnce({ state: 'closed', ...baseMockedProposal }); expect(await report.canBeCached()).toBe(true); expect(votesReportSpy).toHaveBeenCalled(); diff --git a/tsconfig.json b/tsconfig.json index b43177a6..069223ac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "jsx": "react-jsx", "target": "esnext", "module": "commonjs", "rootDir": "./", diff --git a/yarn.lock b/yarn.lock index 66ac4c25..92830650 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1615,6 +1615,92 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@resvg/resvg-js-android-arm-eabi@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.4.1.tgz#49dc9722f95096f8aff70186deae8e148d60dce5" + integrity sha512-AA6f7hS0FAPpvQMhBCf6f1oD1LdlqNXKCxAAPpKh6tR11kqV0YIB9zOlIYgITM14mq2YooLFl6XIbbvmY+jwUw== + +"@resvg/resvg-js-android-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-2.4.1.tgz#fdb7c9362ea27a228831d047cfd1ea240daed780" + integrity sha512-/QleoRdPfsEuH9jUjilYcDtKK/BkmWcK+1LXM8L2nsnf/CI8EnFyv7ZzCj4xAIvZGAy9dTYr/5NZBcTwxG2HQg== + +"@resvg/resvg-js-darwin-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-2.4.1.tgz#5ef093f1276149340b9f5a5c487717c4de87bee7" + integrity sha512-U1oMNhea+kAXgiEXgzo7EbFGCD1Edq5aSlQoe6LMly6UjHzgx2W3N5kEXCwU/CgN5FiQhZr7PlSJSlcr7mdhfg== + +"@resvg/resvg-js-darwin-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-2.4.1.tgz#18dd758184f4877be1f6ac80d2f37999581c998c" + integrity sha512-avyVh6DpebBfHHtTQTZYSr6NG1Ur6TEilk1+H0n7V+g4F7x7WPOo8zL00ZhQCeRQ5H4f8WXNWIEKL8fwqcOkYw== + +"@resvg/resvg-js-linux-arm-gnueabihf@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-2.4.1.tgz#eee8f8166763aacc935a53e223e7b9c31b10c94a" + integrity sha512-isY/mdKoBWH4VB5v621co+8l101jxxYjuTkwOLsbW+5RK9EbLciPlCB02M99ThAHzI2MYxIUjXNmNgOW8btXvw== + +"@resvg/resvg-js-linux-arm64-gnu@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-2.4.1.tgz#826569e1ee08f07879ce32850822ede2ee1192ef" + integrity sha512-uY5voSCrFI8TH95vIYBm5blpkOtltLxLRODyhKJhGfskOI7XkRw5/t1u0sWAGYD8rRSNX+CA+np86otKjubrNg== + +"@resvg/resvg-js-linux-arm64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-2.4.1.tgz#faf63d873666078ca74604454d40e4fecc22beb4" + integrity sha512-6mT0+JBCsermKMdi/O2mMk3m7SqOjwi9TKAwSngRZ/nQoL3Z0Z5zV+572ztgbWr0GODB422uD8e9R9zzz38dRQ== + +"@resvg/resvg-js-linux-x64-gnu@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.4.1.tgz#37b4c16c488aac3834a069c3725f017285d94b1e" + integrity sha512-60KnrscLj6VGhkYOJEmmzPlqqfcw1keDh6U+vMcNDjPhV3B5vRSkpP/D/a8sfokyeh4VEacPSYkWGezvzS2/mg== + +"@resvg/resvg-js-linux-x64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.4.1.tgz#6099cf57c958832549b0671991246e06bb44df27" + integrity sha512-0AMyZSICC1D7ge115cOZQW8Pcad6PjWuZkBFF3FJuSxC6Dgok0MQnLTs2MfMdKBlAcwO9dXsf3bv9tJZj8pATA== + +"@resvg/resvg-js-win32-arm64-msvc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-2.4.1.tgz#10c9472a20198a218d8c3b6d8fbb3fcba213b670" + integrity sha512-76XDFOFSa3d0QotmcNyChh2xHwk+JTFiEQBVxMlHpHMeq7hNrQJ1IpE1zcHSQvrckvkdfLboKRrlGB86B10Qjw== + +"@resvg/resvg-js-win32-ia32-msvc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-2.4.1.tgz#bfc1d37ed485d72ca5717138b99ba40788fa2720" + integrity sha512-odyVFGrEWZIzzJ89KdaFtiYWaIJh9hJRW/frcEcG3agJ464VXkN/2oEVF5ulD+5mpGlug9qJg7htzHcKxDN8sg== + +"@resvg/resvg-js-win32-x64-msvc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-2.4.1.tgz#83cae82dfe27121f85492eb4dc03f6fe33d8a703" + integrity sha512-vY4kTLH2S3bP+puU5x7hlAxHv+ulFgcK6Zn3efKSr0M0KnZ9A3qeAjZteIpkowEFfUeMPNg2dvvoFRJA9zqxSw== + +"@resvg/resvg-js@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@resvg/resvg-js/-/resvg-js-2.4.1.tgz#07e9cd57f3c925a5fb075a313a0640fc74cba4a2" + integrity sha512-wTOf1zerZX8qYcMmLZw3czR4paI4hXqPjShNwJRh5DeHxvgffUS5KM7XwxtbIheUW6LVYT5fhT2AJiP6mU7U4A== + optionalDependencies: + "@resvg/resvg-js-android-arm-eabi" "2.4.1" + "@resvg/resvg-js-android-arm64" "2.4.1" + "@resvg/resvg-js-darwin-arm64" "2.4.1" + "@resvg/resvg-js-darwin-x64" "2.4.1" + "@resvg/resvg-js-linux-arm-gnueabihf" "2.4.1" + "@resvg/resvg-js-linux-arm64-gnu" "2.4.1" + "@resvg/resvg-js-linux-arm64-musl" "2.4.1" + "@resvg/resvg-js-linux-x64-gnu" "2.4.1" + "@resvg/resvg-js-linux-x64-musl" "2.4.1" + "@resvg/resvg-js-win32-arm64-msvc" "2.4.1" + "@resvg/resvg-js-win32-ia32-msvc" "2.4.1" + "@resvg/resvg-js-win32-x64-msvc" "2.4.1" + +"@shuding/opentype.js@1.4.0-beta.0": + version "1.4.0-beta.0" + resolved "https://registry.yarnpkg.com/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz#5d1e7e9e056f546aad41df1c5043f8f85d39e24b" + integrity sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA== + dependencies: + fflate "^0.7.3" + string.prototype.codepointat "^0.2.1" + "@sinclair/typebox@^0.25.16": version "0.25.24" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" @@ -1811,6 +1897,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + "@types/qs@*": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -1821,6 +1912,20 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== +"@types/react@^18.2.0": + version "18.2.0" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.0.tgz#15cda145354accfc09a18d2f2305f9fc099ada21" + integrity sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + "@types/semver@^7.3.12": version "7.3.13" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" @@ -1984,6 +2089,11 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== +acorn@^5.2.1: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + acorn@^8.4.1, acorn@^8.8.0: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" @@ -1999,6 +2109,11 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -2065,11 +2180,30 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + integrity sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ== + async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + integrity sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg== + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" + babel-jest@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" @@ -2104,6 +2238,56 @@ babel-plugin-jest-hoist@^29.5.0: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + integrity sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA== + +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== + +babel-plugin-transform-flow-strip-types@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + integrity sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg== + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-display-name@^6.23.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" + integrity sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-self@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" + integrity sha512-Y3ZHP1nunv0U1+ysTNwLK39pabHj6cPVsfN4TRC7BDBfbgbyF4RifP5kd6LnbuMV9wcfedQMe7hn1fyKc7IzTQ== + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-source@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" + integrity sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw== + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + integrity sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w== + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -2122,6 +2306,13 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" +babel-preset-flow@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" + integrity sha512-PQZFJXnM3d80Vq4O67OE6EMVKIw2Vmzy8UXovqulNogCtblWU8rzP7Sm5YgHiCg4uejUxzCkHfNXQ4Z6GI+Dhw== + dependencies: + babel-plugin-transform-flow-strip-types "^6.22.0" + babel-preset-jest@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" @@ -2130,16 +2321,75 @@ babel-preset-jest@^29.5.0: babel-plugin-jest-hoist "^29.5.0" babel-preset-current-node-syntax "^1.0.0" +babel-preset-react@^6.5.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" + integrity sha512-phQe3bElbgF887UM0Dhz55d22ob8czTL1kbhZFwpCE6+R/X9kHktfwmx9JZb+bBSVRGphP5tZ9oWhVhlgjrX3Q== + dependencies: + babel-plugin-syntax-jsx "^6.3.13" + babel-plugin-transform-react-display-name "^6.23.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-plugin-transform-react-jsx-self "^6.22.0" + babel-plugin-transform-react-jsx-source "^6.22.0" + babel-preset-flow "^6.23.0" + +babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-standalone@^6.4.4: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-standalone/-/babel-standalone-6.26.0.tgz#15fb3d35f2c456695815ebf1ed96fe7f015b6886" + integrity sha512-zT4CJM9TK6uEaPf7+nKVO/yPYNlk5G9Aa4+iYwmn7J4D9eezb62eQ3bSUybK/AcPHU2VkfFuIDKbvwQOOj+Zyw== + +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base62@^1.1.0: + version "1.2.8" + resolved "https://registry.yarnpkg.com/base62/-/base62-1.2.8.tgz#1264cb0fb848d875792877479dbe8bae6bae3428" + integrity sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA== + +base64-js@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + integrity sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -2207,6 +2457,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2240,6 +2498,11 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + caniuse-lite@^1.0.30001449: version "1.0.30001481" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" @@ -2282,6 +2545,11 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^3.2.0: version "3.8.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" @@ -2330,12 +2598,12 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@^1.0.0, color-name@~1.1.4: +color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.6.0: +color-string@^1.6.0, color-string@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== @@ -2351,6 +2619,14 @@ color@^3.1.3: color-convert "^1.9.3" color-string "^1.6.0" +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colorspace@1.1.x: version "1.1.4" resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" @@ -2359,6 +2635,26 @@ colorspace@1.1.x: color "^3.1.3" text-hex "1.0.x" +commander@^2.5.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commoner@^0.10.1: + version "0.10.8" + resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" + integrity sha512-3/qHkNMM6o/KGXHITA14y78PcfmXh4+AOCJpSoF73h4VY1JpdGv3CHMS5+JW6SwLhfJt4RhNmLAa7+RRX/62EQ== + dependencies: + commander "^2.5.0" + detective "^4.3.1" + glob "^5.0.15" + graceful-fs "^4.1.2" + iconv-lite "^0.4.5" + mkdirp "^0.5.0" + private "^0.1.6" + q "^1.1.2" + recast "^0.11.17" + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -2416,6 +2712,16 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA== + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + cors@^2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -2438,6 +2744,35 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +css-background-parser@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/css-background-parser/-/css-background-parser-0.1.0.tgz#48a17f7fe6d4d4f1bca3177ddf16c5617950741b" + integrity sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA== + +css-box-shadow@1.0.0-3: + version "1.0.0-3" + resolved "https://registry.yarnpkg.com/css-box-shadow/-/css-box-shadow-1.0.0-3.tgz#9eaeb7140947bf5d649fc49a19e4bbaa5f602713" + integrity sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg== + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2459,11 +2794,23 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -2474,6 +2821,11 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +defined@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -2484,11 +2836,24 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-libc@^2.0.0, detect-libc@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +detective@^4.3.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + integrity sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig== + dependencies: + acorn "^5.2.1" + defined "^1.0.0" + diff-sequences@^29.4.3: version "29.4.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" @@ -2533,6 +2898,11 @@ emittery@^0.13.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== +emoji-regex@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f" + integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2548,6 +2918,21 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +envify@^3.0.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/envify/-/envify-3.4.1.tgz#d7122329e8df1688ba771b12501917c9ce5cbce8" + integrity sha512-XLiBFsLtNF0MOZl+vWU59yPb3C2JtrQY2CNJn22KH75zPlHWY5ChcAQuf4knJeWT/lLkrx3sqvhP/J349bt4Bw== + dependencies: + jstransform "^11.0.3" + through "~2.3.4" + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2668,11 +3053,21 @@ espree@^9.5.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.0" +esprima-fb@^15001.1.0-dev-harmony-fb: + version "15001.1.0-dev-harmony-fb" + resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901" + integrity sha512-59dDGQo2b3M/JfKIws0/z8dcXH2mnVHkfSPRhCYS91JNGfGNwr7GsSF6qzWZuOGvw5Ii0w9TtylrX07MGmlOoQ== + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg== + esquery@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" @@ -2727,6 +3122,11 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + expect@^29.0.0, expect@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" @@ -2827,11 +3227,27 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fbjs@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.6.1.tgz#9636b7705f5ba9684d44b72f78321254afc860f7" + integrity sha512-4KW7tT33ytfazK3Ekvesbsa4A5J79hUrdXONQGZ0wM6i3PFc70YknF9kj1eyx3mDupgJ7Z+ifFhcMJ+ps2eZIw== + dependencies: + core-js "^1.0.0" + loose-envify "^1.0.0" + promise "^7.0.3" + ua-parser-js "^0.7.9" + whatwg-fetch "^0.9.0" + fecha@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== +fflate@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" + integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -2903,6 +3319,11 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2947,6 +3368,11 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -2961,6 +3387,17 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -2997,7 +3434,7 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -3041,6 +3478,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hex-rgb@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/hex-rgb/-/hex-rgb-4.3.0.tgz#af5e974e83bb2fefe44d55182b004ec818c07776" + integrity sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw== + hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -3069,13 +3511,18 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.5: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + 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" @@ -3115,11 +3562,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3: +inherits@2, 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" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -3651,6 +4103,17 @@ json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jstransform@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223" + integrity sha512-LGm87w0A8E92RrcXt94PnNHkFqHmgDy3mKHvNZOG7QepKCTCH/VB6S+IEN+bT4uLN3gVpOT0vvOOVd96osG71g== + dependencies: + base62 "^1.1.0" + commoner "^0.10.1" + esprima-fb "^15001.1.0-dev-harmony-fb" + object-assign "^2.0.0" + source-map "^0.4.2" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -3674,6 +4137,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +linebreak@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/linebreak/-/linebreak-1.1.0.tgz#831cf378d98bced381d8ab118f852bd50d81e46b" + integrity sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ== + dependencies: + base64-js "0.0.8" + unicode-trie "^2.0.0" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -3703,6 +4174,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash@^4.17.4: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + logform@^2.3.2, logform@^2.4.0: version "2.5.1" resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" @@ -3715,7 +4191,7 @@ logform@^2.3.2, logform@^2.4.0: safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" -loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -3810,13 +4286,35 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3832,6 +4330,11 @@ ms@2.1.3, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -3847,6 +4350,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-abi@^3.3.0: + version "3.40.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.40.0.tgz#51d8ed44534f70ff1357dfbc3a89717b1ceac1b4" + integrity sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA== + dependencies: + semver "^7.3.5" + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -3892,6 +4407,11 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + integrity sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g== + object-assign@^4, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -3914,7 +4434,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -3988,6 +4508,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -3995,6 +4520,14 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-css-color@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/parse-css-color/-/parse-css-color-0.2.1.tgz#b687a583f2e42e66ffdfce80a570706966e807c9" + integrity sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg== + dependencies: + color-name "^1.1.4" + hex-rgb "^4.1.0" + parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -4062,6 +4595,29 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +prebuild-install@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4088,6 +4644,18 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: ansi-styles "^5.0.0" react-is "^18.0.0" +private@^0.1.6, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +promise@^7.0.3: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -4118,6 +4686,14 @@ pstree.remy@^1.1.8: resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" @@ -4128,6 +4704,11 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.1.tgz#31207dddd15d43f299fdcdb2f572df65030c19af" integrity sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg== +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -4155,6 +4736,21 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dom@^0.14.7: + version "0.14.10" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.14.10.tgz#da883daef7fa86838e9e2fcfcc084c590c350e21" + integrity sha512-kDs8SWFb8Sry4NAplhpJbZEeAnTPir/m+s9s+lkdqA2a89BzmWGnEgGG/CfmhULjv1ogc4oHrjMfAvFNruT3jQ== + react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -4165,7 +4761,25 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -readable-stream@^3.4.0, readable-stream@^3.6.0: +react-jsx@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/react-jsx/-/react-jsx-1.0.0.tgz#3a64bf686bc8e6105d0307fb3a160ea54f5f0802" + integrity sha512-aCAOWb6ecKn3vfSqMgMMyBZ2LgP6Mht0KN2CF3wGYT3xEuyTLfUoGVIHZgFCiv6YmeJACG7WiNkAwO6+GFnnrQ== + dependencies: + babel-preset-react "^6.5.0" + babel-standalone "^6.4.4" + react "0.14.x" + react-dom "^0.14.7" + +react@0.14.x: + version "0.14.10" + resolved "https://registry.yarnpkg.com/react/-/react-0.14.10.tgz#c10d7750f1c5b34eee2a123915ac4c14c01c1081" + integrity sha512-yxMw5aorZG4qsLVBfjae4wGFvd5708DhcxaXLJ3IOTgr1TCs8k9+ZheGgLGr5OfwWMhSahNbGvvoEDzrxVWouA== + dependencies: + envify "^3.0.0" + fbjs "^0.6.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -4181,6 +4795,21 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +recast@^0.11.17: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + integrity sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA== + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4246,7 +4875,7 @@ safe-buffer@5.1.2: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4261,7 +4890,22 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver@7.x, semver@^7.3.5, semver@^7.3.7: +satori@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/satori/-/satori-0.7.2.tgz#1d935f3520ad22009b7b19e4c2e73c55660d6534" + integrity sha512-Eltg0/i3OEbBLaveCnYi2j+p0J9Bb5rmDMXddq4Zy0/NYHbpTkPIlPYGgb+DKamhmvXhiGvWGiFdqHVjJCaCpA== + dependencies: + "@shuding/opentype.js" "1.4.0-beta.0" + css-background-parser "^0.1.0" + css-box-shadow "1.0.0-3" + css-to-react-native "^3.0.0" + emoji-regex "^10.2.1" + linebreak "^1.1.0" + parse-css-color "^0.2.1" + postcss-value-parser "^4.2.0" + yoga-wasm-web "^0.3.3" + +semver@7.x, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0: version "7.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== @@ -4317,6 +4961,20 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sharp@^0.32.1: + version "0.32.1" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.1.tgz#41aa0d0b2048b2e0ee453d9fcb14ec1f408390fe" + integrity sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg== + dependencies: + color "^4.2.3" + detect-libc "^2.0.1" + node-addon-api "^6.1.0" + prebuild-install "^7.1.1" + semver "^7.5.0" + simple-get "^4.0.1" + tar-fs "^2.1.1" + tunnel-agent "^0.6.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4343,6 +5001,20 @@ signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0, simple-get@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -4375,11 +5047,23 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A== + dependencies: + amdefine ">=0.0.4" + source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@~0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -4419,6 +5103,11 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.codepointat@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc" + integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg== + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -4448,6 +5137,11 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + strnum@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" @@ -4484,6 +5178,27 @@ symbol-observable@^4.0.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== +tar-fs@^2.0.0, tar-fs@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -4503,11 +5218,26 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tiny-inflate@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" + integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -4594,6 +5324,13 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -4629,11 +5366,24 @@ typescript@^5.0.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== +ua-parser-js@^0.7.9: + version "0.7.35" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.35.tgz#8bda4827be4f0b1dda91699a29499575a1f1d307" + integrity sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g== + undefsafe@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== +unicode-trie@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8" + integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ== + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -4695,6 +5445,11 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +whatwg-fetch@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz#0e3684c6cb9995b43efc9df03e4c365d95fd9cc0" + integrity sha512-DIuh7/cloHxHYwS/oRXGgkALYAntijL63nsgMQsNSnBj825AysosAqA2ZbYXGRqpPRiNH7335dTqV364euRpZw== + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -4798,6 +5553,11 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +yoga-wasm-web@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz#eb8e9fcb18e5e651994732f19a220cb885d932ba" + integrity sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA== + zen-observable-ts@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" From 6e2a0439afdea3da9a9b1b54a2117c052780d6fd Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 00:48:42 +0400 Subject: [PATCH 035/103] feat: add image card for space --- src/api.ts | 2 +- src/helpers/snapshot.ts | 28 ++++++++++++ src/lib/ogImage/index.ts | 10 ++--- src/lib/ogImage/space.tsx | 89 ++++++++++++++++++++++++++++++++++++++- src/lib/ogImage/utils.tsx | 19 +++++++++ 5 files changed, 140 insertions(+), 8 deletions(-) diff --git a/src/api.ts b/src/api.ts index 36d2ddb6..9d24eb77 100644 --- a/src/api.ts +++ b/src/api.ts @@ -69,7 +69,7 @@ router.post('/votes/:id', async (req, res) => { router.get('/og/:type/:id.:ext?', async (req, res) => { const { type, id, ext = 'png' } = req.params; - if (!['png', 'ext'].includes(ext)) { + if (!['png', 'svg'].includes(ext)) { throw new Error('Extension not supported'); } diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts index ca5778ad..70855582 100644 --- a/src/helpers/snapshot.ts +++ b/src/helpers/snapshot.ts @@ -3,6 +3,8 @@ import { gql, ApolloClient, InMemoryCache, HttpLink } from '@apollo/client/core' export type Space = { id: string; name: string; + about?: string; + members?: string[]; }; export type Proposal = { @@ -50,6 +52,17 @@ const PROPOSAL_QUERY = gql` } `; +const SPACE_QUERY = gql` + query Space($id: String) { + space(id: $id) { + id + name + about + members + } + } +`; + const VOTES_QUERY = gql` query Votes( $id: String! @@ -109,3 +122,18 @@ export async function fetchVotes( return votes; } + +export async function fetchSpace(id: string) { + const { + data: { space } + }: { data: { space: Space | null } } = await client.query({ + query: SPACE_QUERY, + variables: { + id + } + }); + + console.log(space); + + return space; +} diff --git a/src/lib/ogImage/index.ts b/src/lib/ogImage/index.ts index 17fc9183..f99e97b9 100644 --- a/src/lib/ogImage/index.ts +++ b/src/lib/ogImage/index.ts @@ -6,19 +6,19 @@ export type ImageType = 'space' | 'proposal'; class ogImage { type: ImageType; - proposalId: string; + id: string; - constructor(type: ImageType, proposalId: string) { + constructor(type: ImageType, id: string) { this.type = type; - this.proposalId = proposalId; + this.id = id; } async getSvg() { switch (this.type) { case 'proposal': - return getProposalSvg(this.proposalId); + return getProposalSvg(this.id); case 'space': - return getSpaceSvg(this.proposalId); + return getSpaceSvg(this.id); default: throw new Error('Invalid image type'); } diff --git a/src/lib/ogImage/space.tsx b/src/lib/ogImage/space.tsx index e2fcbb66..637f4e31 100644 --- a/src/lib/ogImage/space.tsx +++ b/src/lib/ogImage/space.tsx @@ -1,3 +1,88 @@ -export default async function getSpaceSvg(proposalId: string) { - return Promise.resolve(); +import satori, { SatoriOptions } from 'satori'; +import { fetchSpace } from '../../helpers/snapshot'; +import { logo, fontsData, image, membersIcon } from './utils'; + +export default async function getSpaceSvg(spaceId: string) { + const space = await fetchSpace(spaceId); + + if (!space) { + throw new Error('Space not found'); + } + + const WIDTH = 1200; + const HEIGHT = 600; + + const svg = await satori( +
+
+
+
{space.id}
+
+ {space.name} +
+
{space.about}
+
+ + {await image(`https://cdn.stamp.fyi/space/${space.id}?s=160`, { + borderRadius: '100%', + width: '160px', + height: '160px' + })} +
+
+
+ {membersIcon} + {space.members?.length.toLocaleString('en-US')} members +
+
+ {logo} +
+
+
, + { + width: WIDTH, + height: HEIGHT, + fonts: fontsData as SatoriOptions['fonts'], + debug: false + } + ); + + return svg; } diff --git a/src/lib/ogImage/utils.tsx b/src/lib/ogImage/utils.tsx index 3d7368fd..8f7801b8 100644 --- a/src/lib/ogImage/utils.tsx +++ b/src/lib/ogImage/utils.tsx @@ -42,6 +42,25 @@ export const votesIcon = ( ); +export const membersIcon = ( + + + +); + export const proposalStatus = (status: string) => { const statusesColor: Record = { pending: 'rgb(107, 114, 128)', From 3e32277b4c590023c064514d5617e60daa0561c4 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 16:49:03 +0400 Subject: [PATCH 036/103] fix: show space followers number instead of members count --- src/helpers/snapshot.ts | 4 ++-- src/lib/ogImage/space.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts index 70855582..3aee5c81 100644 --- a/src/helpers/snapshot.ts +++ b/src/helpers/snapshot.ts @@ -4,7 +4,7 @@ export type Space = { id: string; name: string; about?: string; - members?: string[]; + followersCount?: number; }; export type Proposal = { @@ -58,7 +58,7 @@ const SPACE_QUERY = gql` id name about - members + followersCount } } `; diff --git a/src/lib/ogImage/space.tsx b/src/lib/ogImage/space.tsx index 637f4e31..7a30cc1c 100644 --- a/src/lib/ogImage/space.tsx +++ b/src/lib/ogImage/space.tsx @@ -64,7 +64,6 @@ export default async function getSpaceSvg(spaceId: string) {
{membersIcon} - {space.members?.length.toLocaleString('en-US')} members
{logo} + {space.followersCount?.toLocaleString('en-US')} members
, From 0f9e33d6839efb8b9975fd014f1e766bb6520178 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 16:51:32 +0400 Subject: [PATCH 037/103] fix: improve logo UI --- src/lib/ogImage/proposal.tsx | 2 +- src/lib/ogImage/space.tsx | 4 ++-- src/lib/ogImage/utils.tsx | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/ogImage/proposal.tsx b/src/lib/ogImage/proposal.tsx index 721a0f2c..ffb2cc2d 100644 --- a/src/lib/ogImage/proposal.tsx +++ b/src/lib/ogImage/proposal.tsx @@ -69,7 +69,7 @@ export default async function getProposalSvg(proposalId: string) {
{logo} diff --git a/src/lib/ogImage/space.tsx b/src/lib/ogImage/space.tsx index 7a30cc1c..09862f47 100644 --- a/src/lib/ogImage/space.tsx +++ b/src/lib/ogImage/space.tsx @@ -64,15 +64,15 @@ export default async function getSpaceSvg(spaceId: string) {
{membersIcon} + {space.followersCount?.toLocaleString('en-US')} members
{logo} - {space.followersCount?.toLocaleString('en-US')} members
, diff --git a/src/lib/ogImage/utils.tsx b/src/lib/ogImage/utils.tsx index 8f7801b8..769f85a2 100644 --- a/src/lib/ogImage/utils.tsx +++ b/src/lib/ogImage/utils.tsx @@ -4,8 +4,8 @@ import { join } from 'path'; export const logo = ( From c40d53368c4ebbdb78502b33fd21985cbc3d43fd Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 17:26:01 +0400 Subject: [PATCH 038/103] refactor: use `--fix` for default lint, for consistency with other repos --- .github/workflows/lint.yml | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 55a85456..2f072870 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,5 +11,5 @@ jobs: cache: 'yarn' - run: yarn install - run: yarn build - - run: yarn lint + - run: yarn lint:nofix - run: yarn typecheck diff --git a/package.json b/package.json index 0b0931a9..86305785 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "repository": "snapshot-labs/snapshot-sidekick", "license": "MIT", "scripts": { - "lint": "eslint src/ --ext .ts", - "lint:fix": "eslint src/ --ext .ts --fix", + "lint:nofix": "eslint src/ --ext .ts", + "lint": "yarn lint:nofix --fix", "build": "tsc -p tsconfig.json", "dev": "nodemon src/index.ts -e js,ts,tsx", "start": "node dist/src/index.js", From 32aefbabef88dfc3f97e96b9c66f6abd48be5807 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 18:32:54 +0400 Subject: [PATCH 039/103] refactor: allow customisation of logo color and dimension --- src/lib/ogImage/proposal.tsx | 9 +---- src/lib/ogImage/space.tsx | 9 +---- src/lib/ogImage/utils.tsx | 68 ++++++++++++++++++++++-------------- 3 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/lib/ogImage/proposal.tsx b/src/lib/ogImage/proposal.tsx index ffb2cc2d..58b443c5 100644 --- a/src/lib/ogImage/proposal.tsx +++ b/src/lib/ogImage/proposal.tsx @@ -66,14 +66,7 @@ export default async function getProposalSvg(proposalId: string) {
{proposalStatus(proposal.state)}
-
- {logo} -
+ {logo({ textColor: '#57606a', height: 42 })}
, { diff --git a/src/lib/ogImage/space.tsx b/src/lib/ogImage/space.tsx index 09862f47..b1b3127a 100644 --- a/src/lib/ogImage/space.tsx +++ b/src/lib/ogImage/space.tsx @@ -66,14 +66,7 @@ export default async function getSpaceSvg(spaceId: string) { {membersIcon} {space.followersCount?.toLocaleString('en-US')} members -
- {logo} -
+ {logo({ textColor: '#57606a', height: 42 })} , { diff --git a/src/lib/ogImage/utils.tsx b/src/lib/ogImage/utils.tsx index 769f85a2..e4342e65 100644 --- a/src/lib/ogImage/utils.tsx +++ b/src/lib/ogImage/utils.tsx @@ -2,30 +2,44 @@ import sharp from 'sharp'; import { readFileSync } from 'fs'; import { join } from 'path'; -export const logo = ( - - -); + + ); +} export const votesIcon = ( ); -export const proposalStatus = (status: string) => { +export function proposalStatus(status: string) { const statusesColor: Record = { pending: 'rgb(107, 114, 128)', active: 'rgb(33, 182, 111)', @@ -84,7 +98,7 @@ export const proposalStatus = (status: string) => { {status} ); -}; +} export const fontsData = [ { @@ -109,10 +123,10 @@ export const fontsData = [ * Image conversion is done to always ensure the output is of type PNG, * as Satori library does not support some image type, such as WEBP */ -export const image = async (src: string, style: Record) => { +export async function image(src: string, style: Record) { const imageUrlData = await fetch(src); const buffer = await imageUrlData.arrayBuffer(); const stringifiedBuffer = Buffer.from(await sharp(buffer).png().toBuffer()).toString('base64'); return ; -}; +} From d52259285e8e23cab75243299e5a856375b26158 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 18:33:27 +0400 Subject: [PATCH 040/103] feat: add new generic image card --- src/api.ts | 5 +++-- src/lib/ogImage/home.tsx | 37 +++++++++++++++++++++++++++++++++++++ src/lib/ogImage/index.ts | 5 ++++- 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 src/lib/ogImage/home.tsx diff --git a/src/api.ts b/src/api.ts index 9d24eb77..77ae95fb 100644 --- a/src/api.ts +++ b/src/api.ts @@ -66,8 +66,9 @@ router.post('/votes/:id', async (req, res) => { } }); -router.get('/og/:type/:id.:ext?', async (req, res) => { +router.get('/og/(:type.:ext?|:type/:id.:ext?)', async (req, res) => { const { type, id, ext = 'png' } = req.params; + console.log(type); if (!['png', 'svg'].includes(ext)) { throw new Error('Extension not supported'); @@ -87,7 +88,7 @@ router.get('/og/:type/:id.:ext?', async (req, res) => { } } catch (e) { log.error(e); - return rpcError(res, 'INTERNAL_ERROR', id); + return rpcError(res, 'INTERNAL_ERROR', id || type); } }); diff --git a/src/lib/ogImage/home.tsx b/src/lib/ogImage/home.tsx new file mode 100644 index 00000000..27fe76f4 --- /dev/null +++ b/src/lib/ogImage/home.tsx @@ -0,0 +1,37 @@ +import satori, { SatoriOptions } from 'satori'; +import { logo, fontsData } from './utils'; + +export default async function getHomeSvg() { + const WIDTH = 1200; + const HEIGHT = 600; + + const svg = await satori( +
+ {logo({ width: 700 })} +
+ Where decisions get made +
+
, + { + width: WIDTH, + height: HEIGHT, + fonts: fontsData as SatoriOptions['fonts'], + debug: false + } + ); + + return svg; +} diff --git a/src/lib/ogImage/index.ts b/src/lib/ogImage/index.ts index f99e97b9..6e6686e0 100644 --- a/src/lib/ogImage/index.ts +++ b/src/lib/ogImage/index.ts @@ -1,8 +1,9 @@ import { Resvg } from '@resvg/resvg-js'; import getProposalSvg from './proposal'; import getSpaceSvg from './space'; +import getHomeSvg from './home'; -export type ImageType = 'space' | 'proposal'; +export type ImageType = 'space' | 'proposal' | 'home'; class ogImage { type: ImageType; @@ -19,6 +20,8 @@ class ogImage { return getProposalSvg(this.id); case 'space': return getSpaceSvg(this.id); + case 'home': + return getHomeSvg(); default: throw new Error('Invalid image type'); } From 45fc926d9b2b0b201d5532f56b863d3e89dc2af9 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 19:24:03 +0400 Subject: [PATCH 041/103] fix: handle errors for invalid file type --- src/api.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/api.ts b/src/api.ts index 77ae95fb..5d223236 100644 --- a/src/api.ts +++ b/src/api.ts @@ -68,13 +68,11 @@ router.post('/votes/:id', async (req, res) => { router.get('/og/(:type.:ext?|:type/:id.:ext?)', async (req, res) => { const { type, id, ext = 'png' } = req.params; - console.log(type); - - if (!['png', 'svg'].includes(ext)) { - throw new Error('Extension not supported'); - } try { + if (!['png', 'svg'].includes(ext)) { + throw new Error('Extension not supported'); + } const og = new ogImage(type as ImageType, id); if (ext === 'svg') { From dc5718a860b0d8414ba93bd20fe1bec060ff73da Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 20:24:19 +0400 Subject: [PATCH 042/103] refactor: DRY --- src/lib/ogImage/home.tsx | 37 ---------------- src/lib/ogImage/index.ts | 15 +------ src/lib/ogImage/templates/home.tsx | 22 ++++++++++ src/lib/ogImage/templates/index.tsx | 46 ++++++++++++++++++++ src/lib/ogImage/{ => templates}/proposal.tsx | 37 ++++------------ src/lib/ogImage/{ => templates}/space.tsx | 42 ++++-------------- 6 files changed, 88 insertions(+), 111 deletions(-) delete mode 100644 src/lib/ogImage/home.tsx create mode 100644 src/lib/ogImage/templates/home.tsx create mode 100644 src/lib/ogImage/templates/index.tsx rename src/lib/ogImage/{ => templates}/proposal.tsx (61%) rename src/lib/ogImage/{ => templates}/space.tsx (58%) diff --git a/src/lib/ogImage/home.tsx b/src/lib/ogImage/home.tsx deleted file mode 100644 index 27fe76f4..00000000 --- a/src/lib/ogImage/home.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import satori, { SatoriOptions } from 'satori'; -import { logo, fontsData } from './utils'; - -export default async function getHomeSvg() { - const WIDTH = 1200; - const HEIGHT = 600; - - const svg = await satori( -
- {logo({ width: 700 })} -
- Where decisions get made -
-
, - { - width: WIDTH, - height: HEIGHT, - fonts: fontsData as SatoriOptions['fonts'], - debug: false - } - ); - - return svg; -} diff --git a/src/lib/ogImage/index.ts b/src/lib/ogImage/index.ts index 6e6686e0..b798d004 100644 --- a/src/lib/ogImage/index.ts +++ b/src/lib/ogImage/index.ts @@ -1,7 +1,5 @@ import { Resvg } from '@resvg/resvg-js'; -import getProposalSvg from './proposal'; -import getSpaceSvg from './space'; -import getHomeSvg from './home'; +import render from './templates'; export type ImageType = 'space' | 'proposal' | 'home'; @@ -15,16 +13,7 @@ class ogImage { } async getSvg() { - switch (this.type) { - case 'proposal': - return getProposalSvg(this.id); - case 'space': - return getSpaceSvg(this.id); - case 'home': - return getHomeSvg(); - default: - throw new Error('Invalid image type'); - } + return render(this.type, this.id); } async getImage() { diff --git a/src/lib/ogImage/templates/home.tsx b/src/lib/ogImage/templates/home.tsx new file mode 100644 index 00000000..db551550 --- /dev/null +++ b/src/lib/ogImage/templates/home.tsx @@ -0,0 +1,22 @@ +import { logo } from '../utils'; + +export default async function svg() { + return ( +
+ {logo({ width: 700 })} +
+ Where decisions get made +
+
+ ); +} diff --git a/src/lib/ogImage/templates/index.tsx b/src/lib/ogImage/templates/index.tsx new file mode 100644 index 00000000..f7d91da3 --- /dev/null +++ b/src/lib/ogImage/templates/index.tsx @@ -0,0 +1,46 @@ +import satori, { SatoriOptions } from 'satori'; +import getProposalSvg from './proposal'; +import getSpaceSvg from './space'; +import getHomeSvg from './home'; +import { fontsData } from '../utils'; +import type { ImageType } from '../index'; + +export default async function render(type: ImageType, id: string) { + let content: JSX.Element; + + switch (type) { + case 'proposal': + content = await getProposalSvg(id); + break; + case 'space': + content = await getSpaceSvg(id); + break; + case 'home': + content = await getHomeSvg(); + break; + default: + throw new Error('Invalid image type'); + } + + return await satori( +
+ {content} +
, + { + width: 1200, + height: 600, + fonts: fontsData as SatoriOptions['fonts'], + debug: false + } + ); +} diff --git a/src/lib/ogImage/proposal.tsx b/src/lib/ogImage/templates/proposal.tsx similarity index 61% rename from src/lib/ogImage/proposal.tsx rename to src/lib/ogImage/templates/proposal.tsx index 58b443c5..e92630fa 100644 --- a/src/lib/ogImage/proposal.tsx +++ b/src/lib/ogImage/templates/proposal.tsx @@ -1,36 +1,25 @@ -import satori, { SatoriOptions } from 'satori'; -import { fetchProposal } from '../../helpers/snapshot'; -import { logo, votesIcon, proposalStatus, fontsData, image } from './utils'; +import { fetchProposal } from '../../../helpers/snapshot'; +import { logo, votesIcon, proposalStatus, image } from '../utils'; -export default async function getProposalSvg(proposalId: string) { +export default async function svg(proposalId: string) { const proposal = await fetchProposal(proposalId); if (!proposal) { throw new Error('Proposal not found'); } - const WIDTH = 1200; - const HEIGHT = 600; - - const svg = await satori( + return (
{proposal.space?.name}
-
+
{proposalStatus(proposal.state)}
{logo({ textColor: '#57606a', height: 42 })}
-
, - { - width: WIDTH, - height: HEIGHT, - fonts: fontsData as SatoriOptions['fonts'], - debug: false - } +
); - - return svg; } diff --git a/src/lib/ogImage/space.tsx b/src/lib/ogImage/templates/space.tsx similarity index 58% rename from src/lib/ogImage/space.tsx rename to src/lib/ogImage/templates/space.tsx index b1b3127a..af9d9e69 100644 --- a/src/lib/ogImage/space.tsx +++ b/src/lib/ogImage/templates/space.tsx @@ -1,36 +1,20 @@ -import satori, { SatoriOptions } from 'satori'; -import { fetchSpace } from '../../helpers/snapshot'; -import { logo, fontsData, image, membersIcon } from './utils'; +import { fetchSpace } from '../../../helpers/snapshot'; +import { logo, image, membersIcon } from '../utils'; -export default async function getSpaceSvg(spaceId: string) { +export default async function svg(spaceId: string) { const space = await fetchSpace(spaceId); if (!space) { throw new Error('Space not found'); } - const WIDTH = 1200; - const HEIGHT = 600; - - const svg = await satori( -
+ return ( +
{space.id}
-
+
{membersIcon} {space.followersCount?.toLocaleString('en-US')} members
{logo({ textColor: '#57606a', height: 42 })}
-
, - { - width: WIDTH, - height: HEIGHT, - fonts: fontsData as SatoriOptions['fonts'], - debug: false - } +
); - - return svg; } From f00304f38dbb255c74b3d466ac3e7a51e19736c4 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 20:58:22 +0400 Subject: [PATCH 043/103] feat: cache and serve cached ogImage when available --- src/api.ts | 10 +++++----- src/helpers/utils.ts | 5 +++++ src/lib/ogImage/index.ts | 20 +++++++++++++++++--- src/lib/storage/aws.ts | 4 ++-- src/lib/storage/file.ts | 4 ++-- src/lib/storage/types.ts | 2 +- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/api.ts b/src/api.ts index 5d223236..59a00514 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,8 +1,8 @@ import express from 'express'; -import { voteReportWithStorage, rpcError, rpcSuccess } from './helpers/utils'; +import { voteReportWithStorage, ogImageWithStorage, rpcError, rpcSuccess } from './helpers/utils'; import log from './helpers/log'; import { queues } from './lib/queue'; -import ogImage, { ImageType } from './lib/ogImage'; +import { ImageType } from './lib/ogImage'; const router = express.Router(); @@ -44,10 +44,10 @@ router.post('/votes/:id', async (req, res) => { try { const file = await votesReport.cachedFile(); - if (typeof file === 'string') { + if (file instanceof Buffer) { res.header('Content-Type', 'text/csv'); res.attachment(votesReport.filename); - return res.send(Buffer.from(file)); + return res.end(file); } votesReport @@ -73,7 +73,7 @@ router.get('/og/(:type.:ext?|:type/:id.:ext?)', async (req, res) => { if (!['png', 'svg'].includes(ext)) { throw new Error('Extension not supported'); } - const og = new ogImage(type as ImageType, id); + const og = ogImageWithStorage(type as ImageType, id); if (ext === 'svg') { res.setHeader('Content-Type', 'image/svg+xml'); diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 81e2324a..6330a338 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,4 +1,5 @@ import VotesReport from '../lib/votesReport'; +import ogImage, { ImageType } from '../lib/ogImage'; import StorageEngine from '../lib/storage/file'; // aws | file import type { Response } from 'express'; @@ -41,3 +42,7 @@ export async function sleep(time: number) { export function voteReportWithStorage(id: string) { return new VotesReport(id, new StorageEngine('votes')); } + +export function ogImageWithStorage(type: ImageType, id: string) { + return new ogImage(type, id, new StorageEngine('ogImages')); +} diff --git a/src/lib/ogImage/index.ts b/src/lib/ogImage/index.ts index b798d004..0663bd94 100644 --- a/src/lib/ogImage/index.ts +++ b/src/lib/ogImage/index.ts @@ -1,22 +1,33 @@ import { Resvg } from '@resvg/resvg-js'; import render from './templates'; +import { IStorage } from '../storage/types'; export type ImageType = 'space' | 'proposal' | 'home'; class ogImage { type: ImageType; id: string; + filename: string; + storage: IStorage; - constructor(type: ImageType, id: string) { + constructor(type: ImageType, id: string, storage: IStorage) { this.type = type; this.id = id; + this.filename = `${[type, id].filter(v => v).join('-')}.png`; + this.storage = storage; } async getSvg() { return render(this.type, this.id); } - async getImage() { + async getImage(force = false) { + const cache = await this.storage.get(this.filename); + + if (cache && !force) { + return cache; + } + const opts = { font: { loadSystemFonts: false @@ -25,8 +36,11 @@ class ogImage { const resvg = new Resvg((await this.getSvg()) as string, opts); const imageData = resvg.render(); + const image = imageData.asPng(); + + this.storage.set(this.filename, image); - return imageData.asPng(); + return image; } } diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 14ce4552..19a31865 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -19,7 +19,7 @@ class Aws implements IStorage { this.folder = folder; } - set = async (key: string, value: string) => { + set = async (key: string, value: string | Buffer) => { try { const command = new PutObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, @@ -46,7 +46,7 @@ class Aws implements IStorage { }); const response = await this.client.send(command); - return response.Body?.transformToString() || false; + return response.Body ?? false; } catch (e) { log.error('[storage:aws] Create file failed', e); return false; diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index d8def1c1..185c67c8 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -15,7 +15,7 @@ class File implements IStorage { } } - set = async (key: string, value: string) => { + set = async (key: string, value: string | Buffer) => { try { writeFileSync(this.path(key), value); log.info(`[storage:file] File saved to ${this.path(key)}`); @@ -33,7 +33,7 @@ class File implements IStorage { return false; } - return readFileSync(this.path(key), 'utf8'); + return readFileSync(this.path(key)); } catch (e) { log.error('[storage:file] Fetch file failed', e); return false; diff --git a/src/lib/storage/types.ts b/src/lib/storage/types.ts index 7d196255..238bb6de 100644 --- a/src/lib/storage/types.ts +++ b/src/lib/storage/types.ts @@ -1,7 +1,7 @@ export interface IStorage { folder: string; - set: (key: string, value: string) => Promise; + set: (key: string, value: string | Buffer) => Promise; get: (key: string) => Promise; } From 26d14fdc949e577d3ea322adfc329d3a03eb77e7 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 21:00:56 +0400 Subject: [PATCH 044/103] chore: fix test --- test/unit/lib/votesReport.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index 88fb686b..6459af2d 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -82,7 +82,7 @@ describe('VotesReport', () => { copyFileSync(fixtureFilePath(id), cachedFilePath(id)); const report = new VotesReport(id, storageEngine); - expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(id), 'utf8')); + expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(id))); }); }); From 1a5238c55c771ca4e3baa161095d28521a797829 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 23:00:48 +0400 Subject: [PATCH 045/103] fix: fix AWS storage to handle binary file type --- src/helpers/snapshot.ts | 2 -- src/lib/storage/aws.ts | 19 ++++++++++++++----- src/lib/storage/file.ts | 3 ++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts index 3aee5c81..121c708d 100644 --- a/src/helpers/snapshot.ts +++ b/src/helpers/snapshot.ts @@ -133,7 +133,5 @@ export async function fetchSpace(id: string) { } }); - console.log(space); - return space; } diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 19a31865..81abe9c8 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -1,7 +1,16 @@ +import type { Readable } from 'stream'; import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; import log from '../../helpers/log'; import type { IStorage } from './types'; +const streamToBuffer = (stream: Readable) => + new Promise((resolve, reject) => { + const chunks: Buffer[] = []; + stream.on('data', chunk => chunks.push(chunk)); + stream.once('end', () => resolve(Buffer.concat(chunks))); + stream.once('error', reject); + }); + class Aws implements IStorage { client: S3Client; folder: string; @@ -24,12 +33,11 @@ class Aws implements IStorage { const command = new PutObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, Key: `public/${this.folder}/${key}`, - Body: value, - ContentType: 'text/csv; charset=utf-8' + Body: value }); await this.client.send(command); - log.error(`[storage:aws] File saved to public/${this.folder}/${key}`); + log.info(`[storage:aws] File saved to public/${this.folder}/${key}`); return true; } catch (e) { @@ -45,10 +53,11 @@ class Aws implements IStorage { Key: `public/${this.folder}/${key}` }); const response = await this.client.send(command); + log.info(`[storage:aws] File fetched from public/${this.folder}/${key}`); - return response.Body ?? false; + return streamToBuffer(response.Body as Readable); } catch (e) { - log.error('[storage:aws] Create file failed', e); + log.error('[storage:aws] Fetch file failed', e); return false; } }; diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index 185c67c8..5324c103 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -22,7 +22,7 @@ class File implements IStorage { return true; } catch (e) { - log.error('[storage:file] Create file failed', e); + log.error('[storage:file] Store file failed', e); throw e; } }; @@ -32,6 +32,7 @@ class File implements IStorage { if (!existsSync(this.path(key))) { return false; } + log.info(`[storage:file] File fetched from ${this.path(key)}`); return readFileSync(this.path(key)); } catch (e) { From c02c5e4e2019120dd1e71d92908f9249950741e0 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 1 May 2023 23:50:40 +0400 Subject: [PATCH 046/103] refactor: extract function for easier testing --- src/lib/ogImage/index.ts | 2 +- src/lib/ogImage/templates/proposal.tsx | 13 +++++++------ src/lib/ogImage/templates/space.tsx | 4 ++-- src/lib/ogImage/utils.tsx | 4 ++++ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lib/ogImage/index.ts b/src/lib/ogImage/index.ts index 0663bd94..7659b187 100644 --- a/src/lib/ogImage/index.ts +++ b/src/lib/ogImage/index.ts @@ -1,5 +1,5 @@ import { Resvg } from '@resvg/resvg-js'; -import render from './templates'; +import render from './templates/index'; import { IStorage } from '../storage/types'; export type ImageType = 'space' | 'proposal' | 'home'; diff --git a/src/lib/ogImage/templates/proposal.tsx b/src/lib/ogImage/templates/proposal.tsx index e92630fa..a05c64ce 100644 --- a/src/lib/ogImage/templates/proposal.tsx +++ b/src/lib/ogImage/templates/proposal.tsx @@ -1,5 +1,5 @@ import { fetchProposal } from '../../../helpers/snapshot'; -import { logo, votesIcon, proposalStatus, image } from '../utils'; +import { logo, votesIcon, proposalStatus, image, spaceAvatarUrl } from '../utils'; export default async function svg(proposalId: string) { const proposal = await fetchProposal(proposalId); @@ -47,11 +47,12 @@ export default async function svg(proposalId: string) {
- {await image(`https://cdn.stamp.fyi/space/${proposal.space?.id}?s=160`, { - borderRadius: '100%', - width: '160px', - height: '160px' - })} + {proposal.space && + (await image(spaceAvatarUrl(proposal.space.id), { + borderRadius: '100%', + width: '160px', + height: '160px' + }))}
{proposalStatus(proposal.state)}
diff --git a/src/lib/ogImage/templates/space.tsx b/src/lib/ogImage/templates/space.tsx index af9d9e69..228df3dd 100644 --- a/src/lib/ogImage/templates/space.tsx +++ b/src/lib/ogImage/templates/space.tsx @@ -1,5 +1,5 @@ import { fetchSpace } from '../../../helpers/snapshot'; -import { logo, image, membersIcon } from '../utils'; +import { logo, image, membersIcon, spaceAvatarUrl } from '../utils'; export default async function svg(spaceId: string) { const space = await fetchSpace(spaceId); @@ -39,7 +39,7 @@ export default async function svg(spaceId: string) {
{space.about}
- {await image(`https://cdn.stamp.fyi/space/${space.id}?s=160`, { + {await image(spaceAvatarUrl(space.id), { borderRadius: '100%', width: '160px', height: '160px' diff --git a/src/lib/ogImage/utils.tsx b/src/lib/ogImage/utils.tsx index e4342e65..faa478c3 100644 --- a/src/lib/ogImage/utils.tsx +++ b/src/lib/ogImage/utils.tsx @@ -130,3 +130,7 @@ export async function image(src: string, style: Record) { return ; } + +export function spaceAvatarUrl(spaceId: string, size = 160) { + return `https://cdn.stamp.fyi/space/${spaceId}?s=${size}`; +} From fd8f84c82302f0dc45f76b4c9db914df7b14aad1 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Tue, 2 May 2023 00:00:10 +0400 Subject: [PATCH 047/103] feat: add API endpoint to receive webhook to refresh OG image --- src/api.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/api.ts b/src/api.ts index 59a00514..3022a77b 100644 --- a/src/api.ts +++ b/src/api.ts @@ -66,6 +66,35 @@ router.post('/votes/:id', async (req, res) => { } }); +router.post('/og/refresh', async (req, res) => { + log.info(`[http] POST /og/refresh`); + + const body = req.body || {}; + const event = body.event.toString(); + const { type, id } = body.id.toString().split('/'); + + if (req.headers['authenticate'] !== process.env.WEBHOOK_AUTH_TOKEN?.toString()) { + return rpcError(res, 'UNAUTHORIZE', id); + } + + if (!event || !id) { + return rpcError(res, 'Invalid Request', id); + } + + if (type !== 'proposal') { + return rpcSuccess(res, 'Event skipped', id); + } + + try { + const og = ogImageWithStorage(type as ImageType, id); + await og.getImage(true); + return rpcSuccess(res, `Image card for ${type} refreshed`, id); + } catch (e) { + log.error(e); + return rpcError(res, 'INTERNAL_ERROR', id); + } +}); + router.get('/og/(:type.:ext?|:type/:id.:ext?)', async (req, res) => { const { type, id, ext = 'png' } = req.params; From efe965457e72c49ff355f44c4fdd855ad5d492ab Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Tue, 2 May 2023 01:09:12 +0400 Subject: [PATCH 048/103] chore: update README with new og endpoint --- README.md | 104 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 76 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index a5cfc345..32e6919b 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # Snapshot/Sidekick -Sidekick is the service serving all proposals' votes CSV report +Sidekick is the service serving all proposals' votes CSV report, as well as opengraph image.
-This service is exposing an API endpoint expecting a closed proposal ID, and will -return a CSV file with all the given proposal's votes. +This service is exposing: -NOTE: CSV files are generated only once, then cached, making this service a cache middleware -for snapshot-hub, for proposals' votes. +- an API endpoint expecting a closed proposal ID, and will + return a CSV file with all the given proposal's votes. +- an API endpoint to fetch [OpenGraph](https://ogp.me/) image for proposal and space ## Project Setup @@ -64,9 +64,11 @@ yarn test ## Usage -Retrieving and generating the cache file have their own respective endpoint +### CSV votes report -### Fetch a cache file +#### Fetch a cache file + +##### `POST /votes/[PROPOSAL-ID]` Send a POST request with a proposal ID @@ -76,7 +78,73 @@ curl -X POST localhost:3000/votes/[PROPOSAL-ID] When cached, this request will respond with a stream to a CSV file. -On all other cases, it will respond with a [JSON-RPC 2.0](https://www.jsonrpc.org/specification) error response: +Furthermore, when votes report can be cached, but does not exist yet, a cache generation task will be queued. This enable cache to be generated on-demand. + +#### Generate a cache file + +##### `POST /votes/generate` + +Send a POST request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). + +``` +curl -X POST localhost:3000/votes/generate \ +-H "Authenticate: WEBHOOK_AUTH_TOKEN" \ +-H "Content-Type: application/json" \ +-d '{"id": "proposal/[PROPOSAL-ID]", "event": "proposal/end"}' +``` + +On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message + +> This endpoint has been designed to receive events from snapshot webhook service. + +Do not forget to set `WEBHOOK_AUTH_TOKEN` in the `.env` file + +### OpenGraph images + +#### Fetch an image + +##### `GET /og/[TYPE]/[ID].[EXTENSION]` + +Send a GET request with an image type and ID + +``` +curl -X GET localhost:3000/og/(space|proposal)[PROPOSAL-ID] +``` + +This endpoint will return a .png image designed to be used with [OpenGraph](https://ogp.me/) `og:image` meta tag. + +You can get images for: + +- space, using `/og/space/SPACE_ID.png` +- proposal: using `og/proposal/PROPOSAL_ID.png` +- generic page, using `og/home.png` (will return a static image with just the logo) + +All the images are built-on demand, and will be cached after the first generation. + +Image dimension are 1200px x 600px. + +> For debug purpose, you can also use the `.svg` file extension when polling the endpoint, to preview a high-resolution rendering of the image before conversion to .png + +#### Refresh an image + +##### `POST /og/refresh` + +Send a POST request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). + +``` +curl -X POST localhost:3000/og/refresh \ +-H "Authenticate: WEBHOOK_AUTH_TOKEN" \ +-H "Content-Type: application/json" \ +-d '{"id": "proposal/[PROPOSAL-ID]", "event": "proposal/end"}' +``` + +This endpoint will force the generation of a new image i already cached, or create it if not exist, and is used to receive webhook in order to keep data in images up-to-date. + +On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message + +## Error response + +When not returning the expected result, all API endpoint will respond with a [JSON-RPC 2.0](https://www.jsonrpc.org/specification) error response: ``` { @@ -96,26 +164,6 @@ On all other cases, it will respond with a [JSON-RPC 2.0](https://www.jsonrpc.or | When the file is pending generation | -40010 | PENDING_GENERATION | | Other/Unknown/Server Error | -32603 | INTERNAL_ERROR | -Furthermore, when votes report can be cached, but does not exist yet, a cache generation task will be queued. This enable cache to be generated on-demand. - -### Generate a cache file - -Send a POST request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). - -``` -curl -X POST localhost:3000/votes/generate \ --H "Authenticate: WEBHOOK_AUTH_TOKEN" \ --H "Content-Type: application/json" \ --d '{"id": "proposal/[PROPOSAL-ID]", "event": "proposal/end"}' -``` - -- On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message -- On error, will respond with the same result and codes as the `fetch` endpoint above - -The endpoint has been designed to receive events from snapshot webhook service. - -Do not forget to set `WEBHOOK_AUTH_TOKEN` in the `.env` file - ## Build for production ``` From ff92be46c86ae18653dc85e48d54d6eb7ec15f6e Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Tue, 2 May 2023 20:58:12 +0400 Subject: [PATCH 049/103] fix(UI): improve UI --- src/lib/ogImage/templates/home.tsx | 40 ++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/src/lib/ogImage/templates/home.tsx b/src/lib/ogImage/templates/home.tsx index db551550..69441c65 100644 --- a/src/lib/ogImage/templates/home.tsx +++ b/src/lib/ogImage/templates/home.tsx @@ -1,5 +1,3 @@ -import { logo } from '../utils'; - export default async function svg() { return (
- {logo({ width: 700 })} -
- Where decisions get made +
+ + + +
+ + + +
Where decisions get made
+
); From 9f70118a8dbeffd3b2f99e51a1d16d45104fdb2d Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Tue, 2 May 2023 21:39:14 +0400 Subject: [PATCH 050/103] refactor: refactor API endpoint --- src/api.ts | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/api.ts b/src/api.ts index 3022a77b..2a317e97 100644 --- a/src/api.ts +++ b/src/api.ts @@ -95,26 +95,18 @@ router.post('/og/refresh', async (req, res) => { } }); -router.get('/og/(:type.:ext?|:type/:id.:ext?)', async (req, res) => { - const { type, id, ext = 'png' } = req.params; +router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)', async (req, res) => { + const { type, id = '', ext = 'png' } = req.params; try { - if (!['png', 'svg'].includes(ext)) { - throw new Error('Extension not supported'); - } const og = ogImageWithStorage(type as ImageType, id); - if (ext === 'svg') { - res.setHeader('Content-Type', 'image/svg+xml'); - res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); - res.send(await og.getSvg()); - } else if (ext === 'png') { - res.setHeader('Content-Type', 'image/png'); - res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); - res.end(await og.getImage()); - } + res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); + res.setHeader('Content-Type', `image/${ext === 'svg' ? 'svg+xml' : 'png'}`); + return res.end(await (ext === 'svg' ? og.getSvg() : og.getImage())); } catch (e) { log.error(e); + res.setHeader('Content-Type', 'application/json'); return rpcError(res, 'INTERNAL_ERROR', id || type); } }); From 7576ba6cd5112dbd9278bb84dc4865668500956e Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Tue, 2 May 2023 21:42:12 +0400 Subject: [PATCH 051/103] fix: remove members count in space image Allow caching without refresh need --- src/lib/ogImage/templates/space.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/ogImage/templates/space.tsx b/src/lib/ogImage/templates/space.tsx index 228df3dd..e9e29246 100644 --- a/src/lib/ogImage/templates/space.tsx +++ b/src/lib/ogImage/templates/space.tsx @@ -47,8 +47,8 @@ export default async function svg(spaceId: string) {
- {membersIcon} - {space.followersCount?.toLocaleString('en-US')} members + {/*{membersIcon} + {space.followersCount?.toLocaleString('en-US')} members*/}
{logo({ textColor: '#57606a', height: 42 })}
From abb7536575af3ad5892c11a0d3db3fa5526fd94c Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 3 May 2023 01:10:00 +0400 Subject: [PATCH 052/103] fix: fix missing emoji support --- src/api.ts | 2 +- src/lib/ogImage/templates/index.tsx | 12 ++++++ src/lib/ogImage/templates/space.tsx | 2 +- src/lib/ogImage/twemoji.ts | 64 +++++++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 src/lib/ogImage/twemoji.ts diff --git a/src/api.ts b/src/api.ts index 2a317e97..ef924da6 100644 --- a/src/api.ts +++ b/src/api.ts @@ -95,7 +95,7 @@ router.post('/og/refresh', async (req, res) => { } }); -router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)', async (req, res) => { +router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res) => { const { type, id = '', ext = 'png' } = req.params; try { diff --git a/src/lib/ogImage/templates/index.tsx b/src/lib/ogImage/templates/index.tsx index f7d91da3..883f9d4f 100644 --- a/src/lib/ogImage/templates/index.tsx +++ b/src/lib/ogImage/templates/index.tsx @@ -3,8 +3,17 @@ import getProposalSvg from './proposal'; import getSpaceSvg from './space'; import getHomeSvg from './home'; import { fontsData } from '../utils'; +import { loadEmoji, getIconCode, apis } from '../twemoji'; import type { ImageType } from '../index'; +async function loadDynamicAsset(emojiType: keyof typeof apis, _code: string, text: string) { + if (_code === 'emoji') { + return `data:image/svg+xml;base64,${btoa(await loadEmoji(emojiType, getIconCode(text)))}`; + } + + return fontsData as any[]; +} + export default async function render(type: ImageType, id: string) { let content: JSX.Element; @@ -40,6 +49,9 @@ export default async function render(type: ImageType, id: string) { width: 1200, height: 600, fonts: fontsData as SatoriOptions['fonts'], + loadAdditionalAsset: async (code, text) => { + return loadDynamicAsset('twemoji', code, text); + }, debug: false } ); diff --git a/src/lib/ogImage/templates/space.tsx b/src/lib/ogImage/templates/space.tsx index e9e29246..de49eab9 100644 --- a/src/lib/ogImage/templates/space.tsx +++ b/src/lib/ogImage/templates/space.tsx @@ -1,5 +1,5 @@ import { fetchSpace } from '../../../helpers/snapshot'; -import { logo, image, membersIcon, spaceAvatarUrl } from '../utils'; +import { logo, image, spaceAvatarUrl } from '../utils'; export default async function svg(spaceId: string) { const space = await fetchSpace(spaceId); diff --git a/src/lib/ogImage/twemoji.ts b/src/lib/ogImage/twemoji.ts new file mode 100644 index 00000000..2f7f7c84 --- /dev/null +++ b/src/lib/ogImage/twemoji.ts @@ -0,0 +1,64 @@ +/** + * Modified version of https://unpkg.com/twemoji@13.1.0/dist/twemoji.esm.js. + * + * Copy/Paste from https://github.com/vercel/satori/blob/fd2c81989720bf1bf2940d20c35d8d0e353fb1e9/playground/utils/twemoji.ts#L2 + * for a lighter and compatible emoji library with Satori + */ + +/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */ + +const U200D = String.fromCharCode(8205); +const UFE0Fg = /\uFE0F/g; + +export function getIconCode(char: string) { + return toCodePoint(char.indexOf(U200D) < 0 ? char.replace(UFE0Fg, '') : char); +} + +function toCodePoint(unicodeSurrogates: string) { + const r = []; + let c = 0, + p = 0, + i = 0; + + while (i < unicodeSurrogates.length) { + c = unicodeSurrogates.charCodeAt(i++); + if (p) { + r.push((65536 + ((p - 55296) << 10) + (c - 56320)).toString(16)); + p = 0; + } else if (55296 <= c && c <= 56319) { + p = c; + } else { + r.push(c.toString(16)); + } + } + return r.join('-'); +} + +export const apis = { + twemoji: (code: string) => + `https://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/svg/${code.toLowerCase()}.svg`, + openmoji: 'https://cdn.jsdelivr.net/npm/@svgmoji/openmoji@2.0.0/svg/', + blobmoji: 'https://cdn.jsdelivr.net/npm/@svgmoji/blob@2.0.0/svg/', + noto: 'https://cdn.jsdelivr.net/gh/svgmoji/svgmoji/packages/svgmoji__noto/svg/', + fluent: (code: string) => + `https://cdn.jsdelivr.net/gh/shuding/fluentui-emoji-unicode/assets/${code.toLowerCase()}_color.svg`, + fluentFlat: (code: string) => + `https://cdn.jsdelivr.net/gh/shuding/fluentui-emoji-unicode/assets/${code.toLowerCase()}_flat.svg` +}; + +const emojiCache: Record> = {}; + +export function loadEmoji(type: keyof typeof apis, code: string) { + const key = `${type}:${code}`; + if (key in emojiCache) return emojiCache[key]; + + if (!type || !apis[type]) { + type = 'twemoji'; + } + + const api = apis[type]; + if (typeof api === 'function') { + return (emojiCache[key] = fetch(api(code)).then(r => r.text())); + } + return (emojiCache[key] = fetch(`${api}${code.toUpperCase()}.svg`).then(r => r.text())); +} From 800dd1bc91a0822a23c8b381949b2bfd8a35b03c Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 3 May 2023 01:22:15 +0400 Subject: [PATCH 053/103] chore: update README --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 32e6919b..ff4bad02 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ Do not forget to set `WEBHOOK_AUTH_TOKEN` in the `.env` file #### Fetch an image -##### `GET /og/[TYPE]/[ID].[EXTENSION]` +##### `GET /og/[TYPE]/[ID]` Send a GET request with an image type and ID @@ -113,15 +113,17 @@ curl -X GET localhost:3000/og/(space|proposal)[PROPOSAL-ID] This endpoint will return a .png image designed to be used with [OpenGraph](https://ogp.me/) `og:image` meta tag. -You can get images for: +The different image types are -- space, using `/og/space/SPACE_ID.png` -- proposal: using `og/proposal/PROPOSAL_ID.png` -- generic page, using `og/home.png` (will return a static image with just the logo) +| TYPE | Description | Url format | +| ---------- | ------------------------------------------------- | ------------------------- | +| `space` | A space image | `/og/space/SPACE_ID` | +| `proposal` | A proposal image | `og/proposal/PROPOSAL_ID` | +| `home` | A generic image (static image with just the logo) | `og/home` | All the images are built-on demand, and will be cached after the first generation. -Image dimension are 1200px x 600px. +Image dimension are 1200px x 600px, and default returned image format will be PNG. > For debug purpose, you can also use the `.svg` file extension when polling the endpoint, to preview a high-resolution rendering of the image before conversion to .png From 40430fb6512d3796910ada99ebf92417b8343bcc Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 3 May 2023 15:45:43 +0400 Subject: [PATCH 054/103] fix: fix logo ratio --- src/lib/ogImage/templates/home.tsx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/lib/ogImage/templates/home.tsx b/src/lib/ogImage/templates/home.tsx index 69441c65..954e5f53 100644 --- a/src/lib/ogImage/templates/home.tsx +++ b/src/lib/ogImage/templates/home.tsx @@ -16,7 +16,7 @@ export default async function svg() { version="1.1" xmlns="http://www.w3.org/2000/svg" width="116px" - height="153px" + height="139px" viewBox="0 0 106 126" style={{ marginTop: '7px' }} > @@ -28,19 +28,22 @@ export default async function svg() {
- + -
Where decisions get made
+
Where decisions get made
From b9d9f9a21cfaaa3fbf8094f9434ba4f168e2c12b Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 4 May 2023 01:29:20 +0400 Subject: [PATCH 055/103] chore: set minimum required node version --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 4813e3ec..ab0fe191 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,9 @@ "no-throw-literal": "error" } }, + "engines": { + "node": ">= 18" + }, "prettier": "@snapshot-labs/prettier-config", "dependencies": { "@apollo/client": "^3.7.12", From 07cef1ff74df8dcc184596c6bc83bbfaf28342ca Mon Sep 17 00:00:00 2001 From: ChaituVR Date: Thu, 4 May 2023 03:32:30 +0530 Subject: [PATCH 056/103] Update readme --- README.md | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index a5cfc345..d9d59d25 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,25 @@ # Snapshot/Sidekick -Sidekick is the service serving all proposals' votes CSV report +Sidekick is the service serving all proposal's votes CSV report -
+------------------- This service is exposing an API endpoint expecting a closed proposal ID, and will return a CSV file with all the given proposal's votes. -NOTE: CSV files are generated only once, then cached, making this service a cache middleware -for snapshot-hub, for proposals' votes. +> NOTE: CSV files are generated only once, then cached, making this service a cache middleware between snapshot-hub and UI ## Project Setup +### Requirements + +node >= 18.0.0 + ### Dependencies Install the dependencies -``` +```bash yarn ``` @@ -26,13 +29,13 @@ _This project does not require a database, but requires a [storage engine](#stor Edit the hub API url in the `.env` file if needed -``` +```bash HUB_URL=https://hub.snapshot.org ``` If you are using AWS as storage engine, set all the required `AWS_` config keys. -#### Storage engine +### Storage engine This script is shipped with 2 storage engine: @@ -41,22 +44,23 @@ This script is shipped with 2 storage engine: You can toggle the cache engine in `helpers/utils.ts`, when importing the storage engine -``` -// For AWS (default) -import StorageEngine from '../lib/storage/aws'; -// For File +```typescript +// For File (default) storage engine import StorageEngine from '../lib/storage/file'; + +// For AWS storage engine +import StorageEngine from '../lib/storage/aws'; ``` -## Compiles and hot-reloads for development +### Compiles and hot-reloads for development -``` +```bash yarn dev ``` ## Linting, typecheck and test -``` +```bash yarn lint yarn typecheck yarn test @@ -70,7 +74,7 @@ Retrieving and generating the cache file have their own respective endpoint Send a POST request with a proposal ID -``` +```bash curl -X POST localhost:3000/votes/[PROPOSAL-ID] ``` @@ -78,7 +82,7 @@ When cached, this request will respond with a stream to a CSV file. On all other cases, it will respond with a [JSON-RPC 2.0](https://www.jsonrpc.org/specification) error response: -``` +```bash { "jsonrpc":"2.0", "error":{ @@ -102,7 +106,7 @@ Furthermore, when votes report can be cached, but does not exist yet, a cache ge Send a POST request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). -``` +```bash curl -X POST localhost:3000/votes/generate \ -H "Authenticate: WEBHOOK_AUTH_TOKEN" \ -H "Content-Type: application/json" \ @@ -118,7 +122,7 @@ Do not forget to set `WEBHOOK_AUTH_TOKEN` in the `.env` file ## Build for production -``` +```bash yarn build yarn start ``` From 4e5acda7c2df583d936790f1a3f18f60c415686d Mon Sep 17 00:00:00 2001 From: ChaituVR Date: Thu, 4 May 2023 04:01:50 +0530 Subject: [PATCH 057/103] Minor updates --- README.md | 2 +- src/api.ts | 2 +- src/helpers/utils.ts | 2 +- src/lib/votesReport.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d9d59d25..336c8a15 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ _This project does not require a database, but requires a [storage engine](#stor ### Configuration -Edit the hub API url in the `.env` file if needed +Copy `.env.example`, rename it to `.env` and edit the hub API url in the `.env` file if needed ```bash HUB_URL=https://hub.snapshot.org diff --git a/src/api.ts b/src/api.ts index 564118d9..454ad588 100644 --- a/src/api.ts +++ b/src/api.ts @@ -13,7 +13,7 @@ router.post('/votes/generate', async (req, res) => { const id = body.id.toString().replace('proposal/', ''); if (req.headers['authenticate'] !== process.env.WEBHOOK_AUTH_TOKEN?.toString()) { - return rpcError(res, 'UNAUTHORIZE', id); + return rpcError(res, 'UNAUTHORIZED', id); } if (!event || !id) { diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 81e2324a..8111e82a 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -7,7 +7,7 @@ const ERROR_CODES: Record = { PROPOSAL_NOT_FOUND: -40001, PROPOSAL_NOT_CLOSED: -40004, PENDING_GENERATION: -40010, - UNAUTHORIZE: 401 + UNAUTHORIZED: 401 }; export function rpcSuccess(res: Response, result: string, id: string | number) { diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index 4655a911..773d6df9 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -97,7 +97,7 @@ class VotesReport { totalResults += newVotes.length; } while (resultsSize === pageSize); - log.info(`[votereport] File cache ready to be saved with ${totalResults} items`); + log.info(`[vote report] File cache ready to be saved with ${totalResults} items`); return this.storage.set(this.filename, content); }; From f9e18ce717c6bba2931b2c1faa384abd1f4d2f31 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 4 May 2023 12:16:04 +0400 Subject: [PATCH 058/103] fix: add default route --- src/api.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/api.ts b/src/api.ts index 454ad588..11e3f3ef 100644 --- a/src/api.ts +++ b/src/api.ts @@ -2,9 +2,19 @@ import express from 'express'; import { voteReportWithStorage, rpcError, rpcSuccess } from './helpers/utils'; import log from './helpers/log'; import { queues } from './lib/queue'; +import { name, version } from '../package.json'; const router = express.Router(); +router.get('/', (req, res) => { + const commit = process.env.COMMIT_HASH || ''; + const v = commit ? `${version}#${commit.substr(0, 7)}` : version; + return res.json({ + name, + version: v + }); +}); + router.post('/votes/generate', async (req, res) => { log.info(`[http] POST /votes/generate`); From 447cb91a3cd46377dbc4fe7c34c150b817929eee Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 4 May 2023 12:21:13 +0400 Subject: [PATCH 059/103] fix: use await syntax --- src/api.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/api.ts b/src/api.ts index 11e3f3ef..18b9ffe5 100644 --- a/src/api.ts +++ b/src/api.ts @@ -59,16 +59,14 @@ router.post('/votes/:id', async (req, res) => { return res.send(Buffer.from(file)); } - votesReport - .canBeCached() - .then(() => { - queues.add(id); - return rpcError(res, 'PENDING_GENERATION', id); - }) - .catch((e: any) => { - log.error(e); - rpcError(res, e, id); - }); + try { + await votesReport.canBeCached(); + queues.add(id); + return rpcError(res, 'PENDING_GENERATION', id); + } catch (e: any) { + log.error(e); + rpcError(res, e, id); + } } catch (e) { log.error(e); return rpcError(res, 'INTERNAL_ERROR', id); From 4d026bc4e93bea339cbccec1175974ecb92dbea2 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 4 May 2023 15:35:55 +0400 Subject: [PATCH 060/103] chore: remove unecessary rule --- package.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index ab0fe191..62963afc 100644 --- a/package.json +++ b/package.json @@ -14,10 +14,7 @@ "test": "jest" }, "eslintConfig": { - "extends": "@snapshot-labs", - "rules": { - "no-throw-literal": "error" - } + "extends": "@snapshot-labs" }, "engines": { "node": ">= 18" From 2b0fb49169a5927f43beec9e3bfde84eed894e9b Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 4 May 2023 15:50:05 +0400 Subject: [PATCH 061/103] refactor: set the storage engine via an env variable --- .env.example | 1 + README.md | 14 +++----------- src/helpers/utils.ts | 14 ++++++++++++-- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.env.example b/.env.example index 7b9227e0..297c11ce 100644 --- a/.env.example +++ b/.env.example @@ -4,3 +4,4 @@ AWS_REGION= AWS_SECRET_ACCESS_KEY= AWS_BUCKET_NAME= WEBHOOK_AUTH_TOKEN= +STORAGE_ENGINE=file diff --git a/README.md b/README.md index 336c8a15..d028b575 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Sidekick is the service serving all proposal's votes CSV report -------------------- +--- This service is exposing an API endpoint expecting a closed proposal ID, and will return a CSV file with all the given proposal's votes. @@ -33,7 +33,7 @@ Copy `.env.example`, rename it to `.env` and edit the hub API url in the `.env` HUB_URL=https://hub.snapshot.org ``` -If you are using AWS as storage engine, set all the required `AWS_` config keys. +If you are using AWS as storage engine, set all the required `AWS_` config keys, and set `STORAGE_ENGINE` to `aws`. ### Storage engine @@ -42,15 +42,7 @@ This script is shipped with 2 storage engine: - `AWS`: All cached files will be stored on Amazon S3 storage - `File`: All cached files will be stored locally, in the `tmp` folder (used for dev environment and testing) -You can toggle the cache engine in `helpers/utils.ts`, when importing the storage engine - -```typescript -// For File (default) storage engine -import StorageEngine from '../lib/storage/file'; - -// For AWS storage engine -import StorageEngine from '../lib/storage/aws'; -``` +You can toggle the cache engine by toggling the `STORAGE_ENGINE` environment variable. Valid values are `file` (default) and `aws`. ### Compiles and hot-reloads for development diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 8111e82a..aa1fd1c3 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,6 +1,8 @@ import VotesReport from '../lib/votesReport'; -import StorageEngine from '../lib/storage/file'; // aws | file +import FileStorageEngine from '../lib/storage/file'; +import AwsStorageEngine from '../lib/storage/aws'; import type { Response } from 'express'; +import type { IStorage } from '../lib/storage/types'; const ERROR_CODES: Record = { 'Invalid Request': -32600, @@ -39,5 +41,13 @@ export async function sleep(time: number) { } export function voteReportWithStorage(id: string) { - return new VotesReport(id, new StorageEngine('votes')); + let storage: IStorage; + + if (process.env.STORAGE_ENGINE === 'aws') { + storage = new AwsStorageEngine('votes'); + } else { + storage = new FileStorageEngine('votes'); + } + + return new VotesReport(id, storage); } From 6d76940df76abc5bcba72d4bc0846db6286b1898 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 4 May 2023 15:58:37 +0400 Subject: [PATCH 062/103] refactor: keep private method to bottom of files --- src/lib/votesReport.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index 773d6df9..096a3b2c 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -102,6 +102,10 @@ class VotesReport { return this.storage.set(this.filename, content); }; + fetchProposal = async () => { + return await fetchProposal(this.id); + }; + #formatCsvLine = (vote: Vote) => { let choices: Vote['choice'][] = []; @@ -118,10 +122,6 @@ class VotesReport { .flat() .join(','); }; - - fetchProposal = async () => { - return await fetchProposal(this.id); - }; } export default VotesReport; From 5469f06b7570567116fc5a1f7aaa2e6015287bd2 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 4 May 2023 16:44:40 +0400 Subject: [PATCH 063/103] refactor: set the StorageEngine and its related setting to environment variables --- .env.example | 1 + README.md | 13 +++++++++---- src/api.ts | 7 ++++--- src/helpers/utils.ts | 12 +++--------- src/lib/queue.ts | 9 +++++---- src/lib/storage/aws.ts | 26 ++++++++++++++++---------- src/lib/storage/file.ts | 32 ++++++++++++++++---------------- src/lib/storage/types.ts | 8 ++++---- 8 files changed, 58 insertions(+), 50 deletions(-) diff --git a/.env.example b/.env.example index 297c11ce..40a278da 100644 --- a/.env.example +++ b/.env.example @@ -5,3 +5,4 @@ AWS_SECRET_ACCESS_KEY= AWS_BUCKET_NAME= WEBHOOK_AUTH_TOKEN= STORAGE_ENGINE=file +VOTE_REPORT_SUBDIR=votes diff --git a/README.md b/README.md index d028b575..27baf493 100644 --- a/README.md +++ b/README.md @@ -37,12 +37,17 @@ If you are using AWS as storage engine, set all the required `AWS_` config keys, ### Storage engine -This script is shipped with 2 storage engine: +This script is shipped with 2 storage engine. -- `AWS`: All cached files will be stored on Amazon S3 storage -- `File`: All cached files will be stored locally, in the `tmp` folder (used for dev environment and testing) +You can set the cache engine by toggling the `STORAGE_ENGINE` environment variable. -You can toggle the cache engine by toggling the `STORAGE_ENGINE` environment variable. Valid values are `file` (default) and `aws`. +| `STORAGE_ENGINE` | Description | Cache save path | +| ---------------- | ----------- | --------------------------------- | +| `aws` | Amazon S3 | `public/` | +| `file` (default) | Local file | `tmp/` (relative to project root) | + +You can additionally specify a sub directory by setting `VOTE_REPORT_SUBDIR` +(By default, all votes report will be nested in the `votes` directory). ### Compiles and hot-reloads for development diff --git a/src/api.ts b/src/api.ts index 18b9ffe5..074f5941 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,8 +1,9 @@ import express from 'express'; -import { voteReportWithStorage, rpcError, rpcSuccess } from './helpers/utils'; +import { rpcError, rpcSuccess, storageEngine } from './helpers/utils'; import log from './helpers/log'; import { queues } from './lib/queue'; import { name, version } from '../package.json'; +import VotesReport from './lib/votesReport'; const router = express.Router(); @@ -35,7 +36,7 @@ router.post('/votes/generate', async (req, res) => { } try { - await voteReportWithStorage(id).canBeCached(); + await new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)).canBeCached(); queues.add(id); return rpcSuccess(res, 'Cache file generation queued', id); } catch (e) { @@ -48,7 +49,7 @@ router.post('/votes/:id', async (req, res) => { const { id } = req.params; log.info(`[http] POST /votes/${id}`); - const votesReport = voteReportWithStorage(id); + const votesReport = new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)); try { const file = await votesReport.cachedFile(); diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index aa1fd1c3..9238d2f9 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,8 +1,6 @@ -import VotesReport from '../lib/votesReport'; import FileStorageEngine from '../lib/storage/file'; import AwsStorageEngine from '../lib/storage/aws'; import type { Response } from 'express'; -import type { IStorage } from '../lib/storage/types'; const ERROR_CODES: Record = { 'Invalid Request': -32600, @@ -40,14 +38,10 @@ export async function sleep(time: number) { }); } -export function voteReportWithStorage(id: string) { - let storage: IStorage; - +export function storageEngine(subDir?: string) { if (process.env.STORAGE_ENGINE === 'aws') { - storage = new AwsStorageEngine('votes'); + return new AwsStorageEngine(subDir); } else { - storage = new FileStorageEngine('votes'); + return new FileStorageEngine(subDir); } - - return new VotesReport(id, storage); } diff --git a/src/lib/queue.ts b/src/lib/queue.ts index 45be72ff..867e8612 100644 --- a/src/lib/queue.ts +++ b/src/lib/queue.ts @@ -1,12 +1,13 @@ import log from '../helpers/log'; -import { sleep, voteReportWithStorage } from '../helpers/utils'; +import { sleep, storageEngine } from '../helpers/utils'; +import VotesReport from './votesReport'; export const queues = new Set(); -async function process(id: string) { +async function processItem(id: string) { log.info(`[queue] Processing queue item: ${id}`); try { - await voteReportWithStorage(id).generateCacheFile(); + await new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)).generateCacheFile(); } catch (e) { log.error(`[queue] Error while processing item`, e); } finally { @@ -17,7 +18,7 @@ async function process(id: string) { async function run() { try { log.info(`[queue] Poll queue (found ${queues.size} items)`); - queues.forEach(async item => process(item)); + queues.forEach(async item => processItem(item)); } catch (e) { log.error(e); } finally { diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 14ce4552..e193ef0f 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -2,11 +2,13 @@ import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3 import log from '../../helpers/log'; import type { IStorage } from './types'; +const CACHE_PATH = 'public'; + class Aws implements IStorage { client: S3Client; - folder: string; + subDir?: string; - constructor(folder: string) { + constructor(subDir?: string) { const region = process.env.AWS_REGION; const accessKeyId = process.env.AWS_ACCESS_KEY_ID; const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; @@ -16,33 +18,33 @@ class Aws implements IStorage { } this.client = new S3Client({}); - this.folder = folder; + this.subDir = subDir; } - set = async (key: string, value: string) => { + async set(key: string, value: string) { try { const command = new PutObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, - Key: `public/${this.folder}/${key}`, + Key: this.#path(key), Body: value, ContentType: 'text/csv; charset=utf-8' }); await this.client.send(command); - log.error(`[storage:aws] File saved to public/${this.folder}/${key}`); + log.error(`[storage:aws] File saved to public/${this.subDir}/${key}`); return true; } catch (e) { log.error('[storage:aws] Store file failed', e); throw new Error('Unable to access storage'); } - }; + } - get = async (key: string) => { + async get(key: string) { try { const command = new GetObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, - Key: `public/${this.folder}/${key}` + Key: this.#path(key) }); const response = await this.client.send(command); @@ -51,7 +53,11 @@ class Aws implements IStorage { log.error('[storage:aws] Create file failed', e); return false; } - }; + } + + #path(key?: string) { + return [CACHE_PATH, this.subDir?.replace(/^\/+|\/+$/, ''), key].filter(p => p).join('/'); + } } export default Aws; diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index d8def1c1..e15995ab 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -5,44 +5,44 @@ import type { IStorage } from './types'; const CACHE_PATH = `${__dirname}/../../../tmp`; class File implements IStorage { - folder: string; + subDir?: string; - constructor(folder: string) { - this.folder = folder; + constructor(subDir?: string) { + this.subDir = subDir; - if (!existsSync(`${CACHE_PATH}/${this.folder}`)) { - mkdirSync(`${CACHE_PATH}/${this.folder}`, { recursive: true }); + if (!existsSync(this.#path())) { + mkdirSync(this.#path(), { recursive: true }); } } - set = async (key: string, value: string) => { + async set(key: string, value: string) { try { - writeFileSync(this.path(key), value); - log.info(`[storage:file] File saved to ${this.path(key)}`); + writeFileSync(this.#path(key), value); + log.info(`[storage:file] File saved to ${this.#path(key)}`); return true; } catch (e) { log.error('[storage:file] Create file failed', e); throw e; } - }; + } - get = async (key: string) => { + async get(key: string) { try { - if (!existsSync(this.path(key))) { + if (!existsSync(this.#path(key))) { return false; } - return readFileSync(this.path(key), 'utf8'); + return readFileSync(this.#path(key), 'utf8'); } catch (e) { log.error('[storage:file] Fetch file failed', e); return false; } - }; + } - path = (key: string) => { - return `${CACHE_PATH}/${this.folder}/${key}`; - }; + #path(key?: string) { + return [CACHE_PATH, this.subDir?.replace(/^\/+|\/+$/, ''), key].filter(p => p).join('/'); + } } export default File; diff --git a/src/lib/storage/types.ts b/src/lib/storage/types.ts index 7d196255..5778395f 100644 --- a/src/lib/storage/types.ts +++ b/src/lib/storage/types.ts @@ -1,10 +1,10 @@ export interface IStorage { - folder: string; + subDir?: string; - set: (key: string, value: string) => Promise; - get: (key: string) => Promise; + set(key: string, value: string): Promise; + get(key: string): Promise; } export interface IStorageConstructor { - new (folder: string): IStorage; + new (subDir?: string): IStorage; } From 71864d365b46ac6e58471f15852fd6d8e0fffed7 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 4 May 2023 16:46:12 +0400 Subject: [PATCH 064/103] chore: lint task should fix by default For consistency with other projects --- .github/workflows/lint.yml | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 55a85456..2f072870 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,5 +11,5 @@ jobs: cache: 'yarn' - run: yarn install - run: yarn build - - run: yarn lint + - run: yarn lint:nofix - run: yarn typecheck diff --git a/package.json b/package.json index 62963afc..111d9ebe 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "repository": "snapshot-labs/snapshot-sidekick", "license": "MIT", "scripts": { - "lint": "eslint src/ --ext .ts", - "lint:fix": "eslint src/ --ext .ts --fix", + "lint:nofix": "eslint src/ --ext .ts", + "lint": "yarn lint:nofix --fix", "build": "tsc -p tsconfig.json", "dev": "nodemon src/index.ts -e js,ts", "start": "node dist/src/index.js", From 3331b5dd7526ec8e7c320945b9105fc12ed41868 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 6 May 2023 01:14:30 +0400 Subject: [PATCH 065/103] chore: fix yarn.lock after merge conflict --- yarn.lock | 157 +++--------------------------------------------------- 1 file changed, 6 insertions(+), 151 deletions(-) diff --git a/yarn.lock b/yarn.lock index ca24105f..2cd5119a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1713,7 +1713,6 @@ dependencies: type-detect "4.0.8" - "@sinonjs/fake-timers@^10.0.2": version "10.0.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" @@ -1898,13 +1897,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== - "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - "@types/qs@*": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -2092,13 +2089,11 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - acorn@^5.2.1: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - acorn@^8.4.1, acorn@^8.8.0: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" @@ -2185,7 +2180,6 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -2196,13 +2190,11 @@ ast-types@0.9.6: resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" integrity sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ== - async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - babel-helper-builder-react-jsx@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" @@ -2212,7 +2204,6 @@ babel-helper-builder-react-jsx@^6.24.1: babel-types "^6.26.0" esutils "^2.0.2" - babel-jest@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" @@ -2247,7 +2238,6 @@ babel-plugin-jest-hoist@^29.5.0: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" - babel-plugin-syntax-flow@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" @@ -2316,7 +2306,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" - babel-preset-flow@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" @@ -2324,7 +2313,6 @@ babel-preset-flow@^6.23.0: dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" - babel-preset-jest@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" @@ -2333,7 +2321,6 @@ babel-preset-jest@^29.5.0: babel-plugin-jest-hoist "^29.5.0" babel-preset-current-node-syntax "^1.0.0" - babel-preset-react@^6.5.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" @@ -2369,7 +2356,6 @@ babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -2512,13 +2498,11 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - camelize@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - caniuse-lite@^1.0.30001449: version "1.0.30001481" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" @@ -2561,7 +2545,6 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" - chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -2615,15 +2598,12 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-string@^1.6.0, color-string@^1.9.0: - version "1.9.1" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== @@ -2639,7 +2619,6 @@ color@^3.1.3: color-convert "^1.9.3" color-string "^1.6.0" - color@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" @@ -2648,7 +2627,6 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" - colorspace@1.1.x: version "1.1.4" resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" @@ -2657,7 +2635,6 @@ colorspace@1.1.x: color "^3.1.3" text-hex "1.0.x" - commander@^2.5.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2678,7 +2655,6 @@ commoner@^0.10.1: q "^1.1.2" recast "^0.11.17" - compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -2818,7 +2794,6 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" - decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" @@ -2831,13 +2806,11 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -2848,13 +2821,11 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - defined@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== - depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -2865,19 +2836,16 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - detect-libc@^2.0.0, detect-libc@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - detective@^4.3.1: version "4.7.1" resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" @@ -2886,7 +2854,6 @@ detective@^4.3.1: acorn "^5.2.1" defined "^1.0.0" - diff-sequences@^29.4.3: version "29.4.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" @@ -2931,13 +2898,11 @@ emittery@^0.13.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - emoji-regex@^10.2.1: version "10.2.1" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f" integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2953,7 +2918,6 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -2969,7 +2933,6 @@ envify@^3.0.0: jstransform "^11.0.3" through "~2.3.4" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3100,13 +3063,11 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg== - esquery@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" @@ -3161,13 +3122,11 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - expect@^29.0.0, expect@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" @@ -3268,7 +3227,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" - fbjs@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.6.1.tgz#9636b7705f5ba9684d44b72f78321254afc860f7" @@ -3280,19 +3238,16 @@ fbjs@^0.6.1: ua-parser-js "^0.7.9" whatwg-fetch "^0.9.0" - fecha@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - fflate@^0.7.3: version "0.7.4" resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw== - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -3413,13 +3368,11 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3434,7 +3387,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" - glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -3446,7 +3398,6 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" - glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -3483,9 +3434,7 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" - graceful-fs@^4.1.2, graceful-fs@^4.2.9: - version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -3529,13 +3478,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" - hex-rgb@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/hex-rgb/-/hex-rgb-4.3.0.tgz#af5e974e83bb2fefe44d55182b004ec818c07776" integrity sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw== - hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -3564,9 +3511,7 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - iconv-lite@0.4.24, iconv-lite@^0.4.5: - version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3617,20 +3562,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" - inherits@2, 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" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -4162,7 +4103,6 @@ json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - jstransform@^11.0.3: version "11.0.3" resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223" @@ -4197,7 +4137,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" - linebreak@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/linebreak/-/linebreak-1.1.0.tgz#831cf378d98bced381d8ab118f852bd50d81e46b" @@ -4235,39 +4174,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -logform@^2.3.2, logform@^2.4.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" - integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg== - dependencies: - "@colors/colors" "1.5.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - - logform@^2.3.2, logform@^2.4.0: version "2.5.1" resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" @@ -4387,7 +4298,6 @@ mimic-response@^3.1.0: dependencies: brace-expansion "^1.1.7" - minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -4405,7 +4315,6 @@ mkdirp@^0.5.0: dependencies: minimist "^1.2.6" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -4421,13 +4330,11 @@ ms@2.1.3, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -4443,7 +4350,6 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - node-abi@^3.3.0: version "3.40.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.40.0.tgz#51d8ed44534f70ff1357dfbc3a89717b1ceac1b4" @@ -4456,7 +4362,6 @@ node-addon-api@^6.1.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -4502,13 +4407,11 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" - object-assign@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" integrity sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g== - object-assign@^4, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -4531,7 +4434,6 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -4606,13 +4508,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - pako@^0.2.5: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4620,7 +4520,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" - parse-css-color@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/parse-css-color/-/parse-css-color-0.2.1.tgz#b687a583f2e42e66ffdfce80a570706966e807c9" @@ -4629,7 +4528,6 @@ parse-css-color@^0.2.1: color-name "^1.1.4" hex-rgb "^4.1.0" - parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -4697,7 +4595,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" - postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" @@ -4721,7 +4618,6 @@ prebuild-install@^7.1.1: tar-fs "^2.0.0" tunnel-agent "^0.6.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4748,7 +4644,6 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: ansi-styles "^5.0.0" react-is "^18.0.0" - private@^0.1.6, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -4761,7 +4656,6 @@ promise@^7.0.3: dependencies: asap "~2.0.3" - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -4810,13 +4704,11 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.1.tgz#31207dddd15d43f299fdcdb2f572df65030c19af" integrity sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg== - q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== - qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -4844,7 +4736,6 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" - rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -4860,7 +4751,6 @@ react-dom@^0.14.7: resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.14.10.tgz#da883daef7fa86838e9e2fcfcc084c590c350e21" integrity sha512-kDs8SWFb8Sry4NAplhpJbZEeAnTPir/m+s9s+lkdqA2a89BzmWGnEgGG/CfmhULjv1ogc4oHrjMfAvFNruT3jQ== - react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -4871,7 +4761,6 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - react-jsx@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/react-jsx/-/react-jsx-1.0.0.tgz#3a64bf686bc8e6105d0307fb3a160ea54f5f0802" @@ -4891,8 +4780,6 @@ react@0.14.x: fbjs "^0.6.1" readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - - version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -4908,7 +4795,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" - recast@^0.11.17: version "0.11.23" resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" @@ -4989,9 +4875,7 @@ safe-buffer@5.1.2: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: - version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5006,11 +4890,10 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - satori@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/satori/-/satori-0.7.2.tgz#1d935f3520ad22009b7b19e4c2e73c55660d6534" - integrity sha512-Eltg0/i3OEbBLaveCnYi2j+p0J9Bb5rmDMXddq4Zy0/NYHbpTkPIlPYGgb+DKamhmvXhiGvWGiFdqHVjJCaCpA== + version "0.7.4" + resolved "https://registry.yarnpkg.com/satori/-/satori-0.7.4.tgz#3435104bbc66f2b30534d45f7daeab4fcd14b7ec" + integrity sha512-LG/s98vpB7JGREfK1HNrAoUezRg/dyKyn8AuRG190j3Puq3xzt9S8Q6eUeA/1IpBgguNR0xvnucEOVB6+a2yGg== dependencies: "@shuding/opentype.js" "1.4.0-beta.0" css-background-parser "^0.1.0" @@ -5023,7 +4906,6 @@ satori@^0.7.2: yoga-wasm-web "^0.3.3" semver@7.x, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0: - version "7.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== @@ -5079,7 +4961,6 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - sharp@^0.32.1: version "0.32.1" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.1.tgz#41aa0d0b2048b2e0ee453d9fcb14ec1f408390fe" @@ -5094,7 +4975,6 @@ sharp@^0.32.1: tar-fs "^2.1.1" tunnel-agent "^0.6.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -5121,7 +5001,6 @@ signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -5136,7 +5015,6 @@ simple-get@^4.0.0, simple-get@^4.0.1: once "^1.3.1" simple-concat "^1.0.0" - simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -5169,7 +5047,6 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" - source-map@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -5177,19 +5054,16 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" - source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - source-map@~0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -5229,13 +5103,11 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" - string.prototype.codepointat@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc" integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg== - string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -5265,13 +5137,11 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - strnum@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" @@ -5308,7 +5178,6 @@ symbol-observable@^4.0.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - tar-fs@^2.0.0, tar-fs@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -5330,7 +5199,6 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -5350,7 +5218,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -5371,13 +5238,6 @@ to-fast-properties@^1.0.3: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -5585,14 +5445,11 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" - whatwg-fetch@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz#0e3684c6cb9995b43efc9df03e4c365d95fd9cc0" integrity sha512-DIuh7/cloHxHYwS/oRXGgkALYAntijL63nsgMQsNSnBj825AysosAqA2ZbYXGRqpPRiNH7335dTqV364euRpZw== - - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -5674,9 +5531,9 @@ yargs-parser@^21.0.1, yargs-parser@^21.1.1: integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.3.1: - version "17.7.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" - integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" escalade "^3.1.1" @@ -5696,13 +5553,11 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - yoga-wasm-web@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz#eb8e9fcb18e5e651994732f19a220cb885d932ba" integrity sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA== - zen-observable-ts@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" From 100b7f75f86504c5d3c286233f8074c0e3434dc6 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 6 May 2023 01:49:29 +0400 Subject: [PATCH 066/103] refactor: refactor code to use main branch feature --- .env.example | 1 + README.md | 31 +++++++++++++++++++++----- scripts/og-image-refresh.ts | 24 ++++++++++++++++++++ src/api.ts | 11 ++++----- src/helpers/utils.ts | 8 +------ src/lib/ogImage/templates/proposal.tsx | 2 +- src/lib/ogImage/templates/space.tsx | 2 +- test/unit/lib/votesReport.test.ts | 2 +- 8 files changed, 60 insertions(+), 21 deletions(-) create mode 100644 scripts/og-image-refresh.ts diff --git a/.env.example b/.env.example index 40a278da..763d15aa 100644 --- a/.env.example +++ b/.env.example @@ -6,3 +6,4 @@ AWS_BUCKET_NAME= WEBHOOK_AUTH_TOKEN= STORAGE_ENGINE=file VOTE_REPORT_SUBDIR=votes +OG_IMAGE_SUBDIR=ogImages diff --git a/README.md b/README.md index a6db4c2f..31159c97 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,24 @@ This endpoint will force the generation of a new image if already cached, or cre On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message +#### 🛠️ Dev tools + +A script is provided to generate the image via command line (for dev/test purpose only). + +**Space image** + +```bash +yarn ts-node scripts/og-image-refresh.ts space [SPACE_ID] +// E.g yarn ts-node scripts/og-image-refresh.ts space cakevote.eth +``` + +**Proposal image** + +```bash +yarn ts-node scripts/og-image-refresh.ts proposal [PROPOSAL_ID] +// E.g yarn ts-node scripts/og-image-refresh.ts proposal 0xd61485f94b829d1c8189749d695600c06bef45a2b35b106e0630685fbb805362 +``` + ## Error response When not returning the expected result, all API endpoint will respond with a [JSON-RPC 2.0](https://www.jsonrpc.org/specification) error response: @@ -160,12 +178,13 @@ When not returning the expected result, all API endpoint will respond with a [JS } ``` -| Description | `CODE` | `MESSAGE` | -| ----------------------------------- | ------ | ------------------- | -| When the proposal does not exist | -40001 | PROPOSAL_NOT_FOUND | -| When the proposal is not closed | -40004 | PROPOSAL_NOT_CLOSED | -| When the file is pending generation | -40010 | PENDING_GENERATION | -| Other/Unknown/Server Error | -32603 | INTERNAL_ERROR | +| Description | `CODE` | `MESSAGE` | +| --------------------------------------- | ------ | ------------------- | +| When the requested entry does not exist | -40001 | ENTRY_NOT_FOUND | +| When the proposal is not closed | -40004 | PROPOSAL_NOT_CLOSED | +| When the file is pending generation | -40010 | PENDING_GENERATION | +| Invalid parameters | -32600 | Invalid Request | +| Other/Unknown/Server Error | -32603 | INTERNAL_ERROR | ## Build for production diff --git a/scripts/og-image-refresh.ts b/scripts/og-image-refresh.ts new file mode 100644 index 00000000..ad2e46d6 --- /dev/null +++ b/scripts/og-image-refresh.ts @@ -0,0 +1,24 @@ +import 'dotenv/config'; +import ogImage, { ImageType } from '../src/lib/ogImage'; +import { storageEngine } from '../src/helpers/utils'; + +async function main() { + if (process.argv.length < 3) { + console.error(`Usage: yarn ts-node scripts/og-image-refresh.ts [proposal|space] [ADDRESS]`); + return process.exit(1); + } + const [, , type, address] = process.argv; + + const og = new ogImage(type as ImageType, address, storageEngine(process.env.OG_IMAGE_SUBDIR)); + await og.getImage(true); +} + +(async () => { + try { + await main(); + process.exit(0); + } catch (e) { + console.error(e); + process.exit(1); + } +})(); diff --git a/src/api.ts b/src/api.ts index da413448..3c61d8c1 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,10 +1,11 @@ import express from 'express'; -import { rpcError, rpcSuccess, storageEngine, ogImageWithStorage } from './helpers/utils'; +import { rpcError, rpcSuccess, storageEngine } from './helpers/utils'; import log from './helpers/log'; import { queues } from './lib/queue'; import { name, version } from '../package.json'; import VotesReport from './lib/votesReport'; -import { ImageType } from './lib/ogImage'; +import ogImage from './lib/ogImage'; +import type { ImageType } from './lib/ogImage'; const router = express.Router(); @@ -83,7 +84,7 @@ router.post('/og/refresh', async (req, res) => { const { type, id } = body.id.toString().split('/'); if (req.headers['authenticate'] !== process.env.WEBHOOK_AUTH_TOKEN?.toString()) { - return rpcError(res, 'UNAUTHORIZE', id); + return rpcError(res, 'UNAUTHORIZED', id); } if (!event || !id) { @@ -95,7 +96,7 @@ router.post('/og/refresh', async (req, res) => { } try { - const og = ogImageWithStorage(type as ImageType, id); + const og = new ogImage(type as ImageType, id, storageEngine(process.env.OG_IMAGES_SUBDIR)); await og.getImage(true); return rpcSuccess(res, `Image card for ${type} refreshed`, id); } catch (e) { @@ -108,7 +109,7 @@ router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res const { type, id = '', ext = 'png' } = req.params; try { - const og = ogImageWithStorage(type as ImageType, id); + const og = new ogImage(type as ImageType, id, storageEngine(process.env.OG_IMAGES_SUBDIR)); res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); res.setHeader('Content-Type', `image/${ext === 'svg' ? 'svg+xml' : 'png'}`); diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index bffba775..1b0d7c11 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,12 +1,10 @@ -import ogImage, { ImageType } from '../lib/ogImage'; -import StorageEngine from '../lib/storage/file'; // aws | file import FileStorageEngine from '../lib/storage/file'; import AwsStorageEngine from '../lib/storage/aws'; import type { Response } from 'express'; const ERROR_CODES: Record = { 'Invalid Request': -32600, - PROPOSAL_NOT_FOUND: -40001, + ENTRY_NOT_FOUND: -40001, PROPOSAL_NOT_CLOSED: -40004, PENDING_GENERATION: -40010, UNAUTHORIZED: 401 @@ -47,7 +45,3 @@ export function storageEngine(subDir?: string) { return new FileStorageEngine(subDir); } } - -export function ogImageWithStorage(type: ImageType, id: string) { - return new ogImage(type, id, new StorageEngine('ogImages')); -} diff --git a/src/lib/ogImage/templates/proposal.tsx b/src/lib/ogImage/templates/proposal.tsx index a05c64ce..5fa73462 100644 --- a/src/lib/ogImage/templates/proposal.tsx +++ b/src/lib/ogImage/templates/proposal.tsx @@ -5,7 +5,7 @@ export default async function svg(proposalId: string) { const proposal = await fetchProposal(proposalId); if (!proposal) { - throw new Error('Proposal not found'); + throw new Error('ENTRY_NOT_FOUND'); } return ( diff --git a/src/lib/ogImage/templates/space.tsx b/src/lib/ogImage/templates/space.tsx index de49eab9..c4ba8431 100644 --- a/src/lib/ogImage/templates/space.tsx +++ b/src/lib/ogImage/templates/space.tsx @@ -5,7 +5,7 @@ export default async function svg(spaceId: string) { const space = await fetchSpace(spaceId); if (!space) { - throw new Error('Space not found'); + throw new Error('ENTRY_NOT_FOUND'); } return ( diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index 8237c5c3..c47c09a5 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -51,7 +51,7 @@ describe('VotesReport', () => { const report = new VotesReport('test', storageEngine); const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce(null); - expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_FOUND'); + expect(report.canBeCached()).rejects.toBe('ENTRY_NOT_FOUND'); expect(votesReportSpy).toHaveBeenCalled(); }); From 1887b810d40aaed9fcb01f83704e6a45aff39436 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 6 May 2023 01:53:10 +0400 Subject: [PATCH 067/103] fix: fix invalid return code --- src/lib/votesReport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index 096a3b2c..25402bc9 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -23,7 +23,7 @@ class VotesReport { this.proposal = await this.fetchProposal(); if (!this.proposal) { - return Promise.reject('PROPOSAL_NOT_FOUND'); + return Promise.reject('ENTRY_NOT_FOUND'); } if (this.proposal.state !== 'closed') { From 2d57fa7db22c927d737d7cc2e9954915b2a116ab Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 1 Jul 2023 20:33:00 +0900 Subject: [PATCH 068/103] chore: linting --- src/api.ts | 55 +++++++--------------- src/helpers/snapshot.ts | 49 ++++++++------------ src/helpers/utils.ts | 18 +++----- src/lib/storage/file.ts | 4 +- test/unit/lib/votesReport.test.ts | 76 ++++++++++++------------------- 5 files changed, 71 insertions(+), 131 deletions(-) diff --git a/src/api.ts b/src/api.ts index bcfb6100..77520850 100644 --- a/src/api.ts +++ b/src/api.ts @@ -11,10 +11,7 @@ const router = express.Router(); router.post('/votes/:id', async (req, res) => { const { id } = req.params; - const votesReport = new VotesReport( - id, - storageEngine(process.env.VOTE_REPORT_SUBDIR) - ); + const votesReport = new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)); try { const file = await votesReport.cachedFile(); @@ -44,9 +41,7 @@ router.post('/og/refresh', async (req, res) => { const event = body.event.toString(); const { type, id } = body.id.toString().split('/'); - if ( - req.headers['authenticate'] !== process.env.WEBHOOK_AUTH_TOKEN?.toString() - ) { + if (req.headers['authenticate'] !== process.env.WEBHOOK_AUTH_TOKEN?.toString()) { return rpcError(res, 'UNAUTHORIZED', id); } @@ -59,11 +54,7 @@ router.post('/og/refresh', async (req, res) => { } try { - const og = new ogImage( - type as ImageType, - id, - storageEngine(process.env.OG_IMAGES_SUBDIR) - ); + const og = new ogImage(type as ImageType, id, storageEngine(process.env.OG_IMAGES_SUBDIR)); await og.getImage(true); return rpcSuccess(res, `Image card for ${type} refreshed`, id); } catch (e) { @@ -72,39 +63,27 @@ router.post('/og/refresh', async (req, res) => { } }); -router.get( - '/og/:type(space|proposal|home)/:id?.:ext(png|svg)?', - async (req, res) => { - const { type, id = '', ext = 'png' } = req.params; +router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res) => { + const { type, id = '', ext = 'png' } = req.params; - try { - const og = new ogImage( - type as ImageType, - id, - storageEngine(process.env.OG_IMAGES_SUBDIR) - ); - - res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); - res.setHeader( - 'Content-Type', - `image/${ext === 'svg' ? 'svg+xml' : 'png'}` - ); - return res.end(await (ext === 'svg' ? og.getSvg() : og.getImage())); - } catch (e) { - console.error(e); - res.setHeader('Content-Type', 'application/json'); - return rpcError(res, 'INTERNAL_ERROR', id || type); - } + try { + const og = new ogImage(type as ImageType, id, storageEngine(process.env.OG_IMAGES_SUBDIR)); + + res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); + res.setHeader('Content-Type', `image/${ext === 'svg' ? 'svg+xml' : 'png'}`); + return res.end(await (ext === 'svg' ? og.getSvg() : og.getImage())); + } catch (e) { + console.error(e); + res.setHeader('Content-Type', 'application/json'); + return rpcError(res, 'INTERNAL_ERROR', id || type); } -); +}); router.get('/moderation', async (req, res) => { const { list } = req.query; try { - res.json( - await getModerationList(list ? (list as string).split(',') : undefined) - ); + res.json(await getModerationList(list ? (list as string).split(',') : undefined)); } catch (e) { console.error(e); return rpcError(res, 'INTERNAL_ERROR', ''); diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts index 55cbd2ca..d9fbe732 100644 --- a/src/helpers/snapshot.ts +++ b/src/helpers/snapshot.ts @@ -1,9 +1,4 @@ -import { - gql, - ApolloClient, - InMemoryCache, - createHttpLink, -} from '@apollo/client/core'; +import { gql, ApolloClient, InMemoryCache, createHttpLink } from '@apollo/client/core'; import { setContext } from '@apollo/client/link/context'; import fetch from 'cross-fetch'; @@ -46,7 +41,7 @@ export type Space = { const httpLink = createHttpLink({ uri: `${process.env.HUB_URL || 'https://hub.snapshot.org'}/graphql`, - fetch, + fetch }); const authLink = setContext((_, { headers }) => { @@ -60,21 +55,21 @@ const authLink = setContext((_, { headers }) => { return { headers: { ...headers, - ...apiHeaders, - }, + ...apiHeaders + } }; }); const client = new ApolloClient({ link: authLink.concat(httpLink), cache: new InMemoryCache({ - addTypename: false, + addTypename: false }), defaultOptions: { query: { - fetchPolicy: 'no-cache', - }, - }, + fetchPolicy: 'no-cache' + } + } }); const PROPOSAL_QUERY = gql` @@ -134,12 +129,12 @@ const VOTES_QUERY = gql` export async function fetchProposal(id: string) { const { - data: { proposal }, + data: { proposal } }: { data: { proposal: Proposal | null } } = await client.query({ query: PROPOSAL_QUERY, variables: { - id, - }, + id + } }); return proposal; @@ -147,16 +142,10 @@ export async function fetchProposal(id: string) { export async function fetchVotes( id: string, - { - first = 1000, - skip = 0, - orderBy = 'created_gte', - orderDirection = 'asc', - created_gte = 0, - } = {} + { first = 1000, skip = 0, orderBy = 'created_gte', orderDirection = 'asc', created_gte = 0 } = {} ) { const { - data: { votes }, + data: { votes } }: { data: { votes: Vote[] } } = await client.query({ query: VOTES_QUERY, variables: { @@ -165,8 +154,8 @@ export async function fetchVotes( orderDirection, first, skip, - created_gte, - }, + created_gte + } }); return votes; @@ -186,7 +175,7 @@ export async function fetchAllVotes(id: string) { skip: page * pageSize, created_gte: createdPivot, orderBy: 'created', - orderDirection: 'asc', + orderDirection: 'asc' }); resultsSize = newVotes.length; @@ -214,12 +203,12 @@ export async function fetchAllVotes(id: string) { export async function fetchSpace(id: string) { const { - data: { space }, + data: { space } }: { data: { space: Space | null } } = await client.query({ query: SPACE_QUERY, variables: { - id, - }, + id + } }); return space; diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 8ac28ed2..3f043beb 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -7,34 +7,28 @@ const ERROR_CODES: Record = { ENTRY_NOT_FOUND: -40001, PROPOSAL_NOT_CLOSED: -40004, RECORD_NOT_FOUND: 404, - UNAUTHORIZED: 401, + UNAUTHORIZED: 401 }; export function rpcSuccess(res: Response, result: string, id: string | number) { res.json({ jsonrpc: '2.0', result, - id, + id }); } -export function rpcError( - res: Response, - e: Error | string, - id: string | number -) { +export function rpcError(res: Response, e: Error | string, id: string | number) { const errorMessage = e instanceof Error ? e.message : e; - const errorCode = ERROR_CODES[errorMessage] - ? ERROR_CODES[errorMessage] - : -32603; + const errorCode = ERROR_CODES[errorMessage] ? ERROR_CODES[errorMessage] : -32603; res.status(errorCode > 0 ? errorCode : 500).json({ jsonrpc: '2.0', error: { code: errorCode, - message: errorMessage, + message: errorMessage }, - id, + id }); } diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index 563c21b0..a0231fb4 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -42,9 +42,7 @@ class File implements IStorage { } #path(key?: string) { - return [CACHE_PATH, this.subDir?.replace(/^\/+|\/+$/, ''), key] - .filter(p => p) - .join('/'); + return [CACHE_PATH, this.subDir?.replace(/^\/+|\/+$/, ''), key].filter(p => p).join('/'); } } diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index b80ba755..7662e725 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -3,14 +3,12 @@ import VotesReport from '../../../src/lib/votesReport'; import FileStorage from '../../../src/lib/storage/file'; describe('VotesReport', () => { - const id = - '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; - const weightedId = - '0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927'; + const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; + const weightedId = '0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927'; let cacheFolder: string; let cachePath: string; let storageEngine: FileStorage; - const space = { id: '', network: '', settings: '' }; + const space = { id: '', name: '', network: '', settings: '' }; function cachedFilePath(id: string) { return `${cachePath}/snapshot-votes-report-${id}.csv`; @@ -38,47 +36,33 @@ describe('VotesReport', () => { it.each([ ['single', id], - ['weighted', weightedId], + ['weighted', weightedId] ])('caches a %s choices votes report', async (type: string, pid: string) => { const report = new VotesReport(pid, storageEngine); const fetchProposalSpy = jest .spyOn(report, 'fetchProposal') .mockResolvedValueOnce( - JSON.parse( - readFileSync( - `${__dirname}/../../fixtures/hub-proposal-${pid}.json`, - 'utf8' - ) - ) + JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-proposal-${pid}.json`, 'utf8')) ); const fetchAllVotesSpy = jest .spyOn(report, 'fetchAllVotes') .mockResolvedValueOnce( - JSON.parse( - readFileSync( - `${__dirname}/../../fixtures/hub-votes-${pid}.json`, - 'utf8' - ) - ) + JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-votes-${pid}.json`, 'utf8')) ); await report.generateCacheFile(); - expect(readFileSync(cachedFilePath(pid))).toEqual( - readFileSync(fixtureFilePath(pid)) - ); + expect(readFileSync(cachedFilePath(pid))).toEqual(readFileSync(fixtureFilePath(pid))); expect(fetchProposalSpy).toHaveBeenCalled(); expect(fetchAllVotesSpy).toHaveBeenCalled(); }); describe('canBeCached()', () => { - const baseMockedProposal = { id: '', title: '', votes: 0, choices: [] }; + // const baseMockedProposal = { id: '', title: '', votes: 0, choices: [] }; it('raises an error when the proposal does not exist', () => { const report = new VotesReport('test', storageEngine); - const votesReportSpy = jest - .spyOn(report, 'fetchProposal') - .mockResolvedValueOnce(null); + const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce(null); expect(report.canBeCached()).rejects.toBe('ENTRY_NOT_FOUND'); expect(votesReportSpy).toHaveBeenCalled(); @@ -86,16 +70,15 @@ describe('VotesReport', () => { it('raises an error when the proposal is not closed', async () => { const report = new VotesReport(id, storageEngine); - const votesReportSpy = jest - .spyOn(report, 'fetchProposal') - .mockResolvedValueOnce({ - state: 'pending', - id: '', - votes: 0, - author: '', - choices: [], - space, - }); + const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce({ + state: 'pending', + id: '', + title: '', + votes: 0, + author: '', + choices: [], + space + }); expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_CLOSED'); expect(votesReportSpy).toHaveBeenCalled(); @@ -103,16 +86,15 @@ describe('VotesReport', () => { it('returns true when the proposal can be cached', async () => { const report = new VotesReport(id, storageEngine); - const votesReportSpy = jest - .spyOn(report, 'fetchProposal') - .mockResolvedValueOnce({ - state: 'closed', - id: '', - votes: 0, - author: '', - choices: [], - space, - }); + const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce({ + state: 'closed', + id: '', + title: '', + votes: 0, + author: '', + choices: [], + space + }); expect(await report.canBeCached()).toBe(true); expect(votesReportSpy).toHaveBeenCalled(); @@ -125,9 +107,7 @@ describe('VotesReport', () => { copyFileSync(fixtureFilePath(id), cachedFilePath(id)); const report = new VotesReport(id, storageEngine); - expect(await report.cachedFile()).toEqual( - readFileSync(fixtureFilePath(id)) - ); + expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(id))); }); }); From 1111b61177a826c16d7b82d24ab657aaf613e806 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Mon, 17 Jul 2023 11:45:28 +0900 Subject: [PATCH 069/103] fix: all storage engine should return the same value type --- src/api.ts | 2 +- src/lib/storage/file.ts | 2 +- src/lib/storage/types.ts | 2 +- test/unit/lib/votesReport.test.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/api.ts b/src/api.ts index 2b8322a7..f76b7ccf 100644 --- a/src/api.ts +++ b/src/api.ts @@ -18,7 +18,7 @@ router.post('/votes/:id', async (req, res) => { try { const file = await votesReport.cachedFile(); - if (file instanceof Buffer) { + if (file) { res.header('Content-Type', 'text/csv'); res.attachment(votesReport.filename); return res.end(file); diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index a0231fb4..b865e3c1 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -34,7 +34,7 @@ class File implements IStorage { console.log(`[storage:file] File fetched from ${this.#path(key)}`); - return readFileSync(this.#path(key)); + return readFileSync(this.#path(key), 'utf8'); } catch (e) { console.error('[storage:file] Fetch file failed', e); return false; diff --git a/src/lib/storage/types.ts b/src/lib/storage/types.ts index d80a1057..b0d5cf53 100644 --- a/src/lib/storage/types.ts +++ b/src/lib/storage/types.ts @@ -2,7 +2,7 @@ export interface IStorage { subDir?: string; set(key: string, value: string | Buffer): Promise; - get(key: string): Promise; + get(key: string): Promise; } export interface IStorageConstructor { diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index 5d80fe29..f213164e 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -108,7 +108,7 @@ describe('VotesReport', () => { it('returns a votes report', async () => { const report = new VotesReport(id, _storageEngine); - expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(id))); + expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(id), 'utf8')); }); }); From 6e13c9575c56873c2d6d55ddaaeb4a2e8b7df128 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 00:34:03 +0900 Subject: [PATCH 070/103] refactor: uncouple cache logic from votesReport --- scripts/og-image-refresh.ts | 2 +- src/api.ts | 35 +-------- src/lib/cache.ts | 36 +++++++++ src/lib/ogImage/index.ts | 26 +++---- src/lib/queue.ts | 37 +++++----- src/lib/votesReport.ts | 50 +++++-------- src/webhook.ts | 27 ++++--- test/unit/lib/cache.test.ts | 40 ++++++++++ test/unit/lib/votesReport.test.ts | 117 +++++++++++------------------- 9 files changed, 188 insertions(+), 182 deletions(-) create mode 100644 src/lib/cache.ts create mode 100644 test/unit/lib/cache.test.ts diff --git a/scripts/og-image-refresh.ts b/scripts/og-image-refresh.ts index ad2e46d6..1389545e 100644 --- a/scripts/og-image-refresh.ts +++ b/scripts/og-image-refresh.ts @@ -10,7 +10,7 @@ async function main() { const [, , type, address] = process.argv; const og = new ogImage(type as ImageType, address, storageEngine(process.env.OG_IMAGE_SUBDIR)); - await og.getImage(true); + await og.createCache(); } (async () => { diff --git a/src/api.ts b/src/api.ts index f76b7ccf..42b609e1 100644 --- a/src/api.ts +++ b/src/api.ts @@ -16,7 +16,7 @@ router.post('/votes/:id', async (req, res) => { const votesReport = new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)); try { - const file = await votesReport.cachedFile(); + const file = await votesReport.getCache(); if (file) { res.header('Content-Type', 'text/csv'); @@ -25,8 +25,8 @@ router.post('/votes/:id', async (req, res) => { } try { - await votesReport.canBeCached(); - queue(id); + await votesReport.isCacheable(); + queue(votesReport); return rpcSuccess(res.status(202), getProgress(id).toString(), id); } catch (e: any) { capture(e); @@ -38,33 +38,6 @@ router.post('/votes/:id', async (req, res) => { } }); -router.post('/og/refresh', async (req, res) => { - const body = req.body || {}; - const event = body.event.toString(); - const { type, id } = body.id.toString().split('/'); - - if (req.headers['authenticate'] !== process.env.WEBHOOK_AUTH_TOKEN?.toString()) { - return rpcError(res, 'UNAUTHORIZED', id); - } - - if (!event || !id) { - return rpcError(res, 'Invalid Request', id); - } - - if (type !== 'proposal') { - return rpcSuccess(res, 'Event skipped', id); - } - - try { - const og = new ogImage(type as ImageType, id, storageEngine(process.env.OG_IMAGES_SUBDIR)); - await og.getImage(true); - return rpcSuccess(res, `Image card for ${type} refreshed`, id); - } catch (e) { - console.error(e); - return rpcError(res, 'INTERNAL_ERROR', id); - } -}); - router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res) => { const { type, id = '', ext = 'png' } = req.params; @@ -73,7 +46,7 @@ router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); res.setHeader('Content-Type', `image/${ext === 'svg' ? 'svg+xml' : 'png'}`); - return res.end(await (ext === 'svg' ? og.getSvg() : og.getImage())); + return res.end(await (ext === 'svg' ? og.getSvg() : og.getCache())); } catch (e) { console.error(e); res.setHeader('Content-Type', 'application/json'); diff --git a/src/lib/cache.ts b/src/lib/cache.ts new file mode 100644 index 00000000..fb9a6533 --- /dev/null +++ b/src/lib/cache.ts @@ -0,0 +1,36 @@ +import { IStorage } from './storage/types'; + +export default class Cache { + id: string; + filename: string; + storage: IStorage; + generationProgress: number; + + constructor(id: string, storage: IStorage) { + this.id = id; + this.filename = `${id}.cache`; + this.storage = storage; + this.generationProgress = 0; + } + + async getContent() { + return ''; + } + + getCache() { + return this.storage.get(this.filename); + } + + async isCacheable() { + return true; + } + + createCache = async () => { + await this.isCacheable(); + const content = await this.getContent(); + + console.log(`[votes-report] File cache ready to be saved`); + + this.storage.set(this.filename, content); + }; +} diff --git a/src/lib/ogImage/index.ts b/src/lib/ogImage/index.ts index 7659b187..4da1264d 100644 --- a/src/lib/ogImage/index.ts +++ b/src/lib/ogImage/index.ts @@ -1,33 +1,28 @@ import { Resvg } from '@resvg/resvg-js'; import render from './templates/index'; import { IStorage } from '../storage/types'; +import Cache from '../cache'; export type ImageType = 'space' | 'proposal' | 'home'; -class ogImage { +class ogImage extends Cache { type: ImageType; - id: string; - filename: string; - storage: IStorage; constructor(type: ImageType, id: string, storage: IStorage) { + super(id, storage); this.type = type; - this.id = id; this.filename = `${[type, id].filter(v => v).join('-')}.png`; - this.storage = storage; } - async getSvg() { + getSvg() { return render(this.type, this.id); } - async getImage(force = false) { - const cache = await this.storage.get(this.filename); - - if (cache && !force) { - return cache; - } + toString() { + return `OgImage#${this.id}`; + } + async getContent() { const opts = { font: { loadSystemFonts: false @@ -36,11 +31,8 @@ class ogImage { const resvg = new Resvg((await this.getSvg()) as string, opts); const imageData = resvg.render(); - const image = imageData.asPng(); - - this.storage.set(this.filename, image); - return image; + return imageData.asPng().toString(); } } diff --git a/src/lib/queue.ts b/src/lib/queue.ts index 2429b10c..70187055 100644 --- a/src/lib/queue.ts +++ b/src/lib/queue.ts @@ -1,27 +1,28 @@ -import { sleep, storageEngine } from '../helpers/utils'; +import { sleep } from '../helpers/utils'; import { capture } from '../helpers/sentry'; -import VotesReport from './votesReport'; +import Cache from './cache'; -const queues = new Set(); -const processingItems = new Map(); +const queues = new Set(); +const processingItems = new Map(); -async function processItem(id: string) { - console.log(`[queue] Processing queue item: ${id}`); +async function processItem(cacheable: Cache) { + console.log(`[queue] Processing queue item: ${cacheable}`); try { - const voteReport = new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)); - processingItems.set(id, voteReport); - await voteReport.generateCacheFile(); + processingItems.set(cacheable.id, cacheable); + await cacheable.createCache(); } catch (e) { capture(e); console.error(`[queue] Error while processing item`, e); } finally { - queues.delete(id); - processingItems.delete(id); + queues.delete(cacheable); + processingItems.delete(cacheable.id); } } -export function queue(id: string) { - queues.add(id); +export function queue(cacheable: Cache) { + queues.add(cacheable); + + return queues.size; } export function getProgress(id: string) { @@ -35,17 +36,17 @@ export function getProgress(id: string) { async function run() { try { console.log(`[queue] Poll queue (found ${queues.size} items)`); - queues.forEach(async item => { - if (processingItems.has(item)) { + queues.forEach(async cacheable => { + if (processingItems.has(cacheable.id)) { console.log( - `[queue] Skip: ${item} is currently being processed, progress: ${ - processingItems.get(item)?.generationProgress + `[queue] Skip: ${cacheable} is currently being processed, progress: ${ + processingItems.get(cacheable.id)?.generationProgress }%` ); return; } - processItem(item); + processItem(cacheable); }); } catch (e) { capture(e); diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index 2c45a34d..7eef8a2e 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -1,27 +1,17 @@ -import { fetchAllVotes, fetchProposal } from '../helpers/snapshot'; -import type { Proposal, Vote } from '../helpers/snapshot'; +import { fetchAllVotes, fetchProposal, Proposal, Vote } from '../helpers/snapshot'; import type { IStorage } from './storage/types'; +import Cache from './cache'; -class VotesReport { - id: string; - filename: string; +class VotesReport extends Cache { proposal?: Proposal | null; - storage: IStorage; - generationProgress: number; constructor(id: string, storage: IStorage) { - this.id = id; + super(id, storage); this.filename = `snapshot-votes-report-${this.id}.csv`; - this.storage = storage; - this.generationProgress = 0; } - cachedFile = () => { - return this.storage.get(this.filename); - }; - - canBeCached = async () => { - this.proposal = await this.fetchProposal(); + async isCacheable() { + this.proposal = await fetchProposal(this.id); if (!this.proposal) { return Promise.reject('ENTRY_NOT_FOUND'); @@ -32,16 +22,14 @@ class VotesReport { } return true; - }; - - generateCacheFile = async () => { - await this.canBeCached(); + } - const votes = await this.fetchAllVotes(); - const totalResults = 0; + getContent = async () => { + this.isCacheable(); + const votes = await fetchAllVotes(this.id); let content = ''; - console.log(`[votes-report] Generating cache file for ${this.id}`); + console.log(`[votes-report] Generating report for ${this.id}`); const headers = [ 'address', @@ -57,18 +45,14 @@ class VotesReport { content += headers.join(','); content += `\n${votes.map(vote => this.#formatCsvLine(vote)).join('\n')}`; - console.log(`[votes-report] File cache ready to be saved with ${totalResults} items`); + console.log(`[votes-report] Report for ${this.id} ready with ${votes.length} items`); - return this.storage.set(this.filename, content); + return content; }; - fetchProposal = async () => { - return fetchProposal(this.id); - }; - - fetchAllVotes = async () => { - return fetchAllVotes(this.id); - }; + toString() { + return `VotesReport#${this.id}`; + } #formatCsvLine = (vote: Vote) => { let choices: Vote['choice'][] = []; @@ -84,7 +68,7 @@ class VotesReport { return [ vote.voter, - choices, + ...choices, vote.vp, vote.created, vote.ipfs, diff --git a/src/webhook.ts b/src/webhook.ts index 789fb7d0..0f88efa9 100644 --- a/src/webhook.ts +++ b/src/webhook.ts @@ -2,14 +2,27 @@ import express from 'express'; import { rpcError, rpcSuccess, storageEngine } from './helpers/utils'; import { capture } from './helpers/sentry'; import VotesReport from './lib/votesReport'; +import ogImage from './lib/ogImage'; import { queue } from './lib/queue'; const router = express.Router(); -router.post('/webhook', async (req, res) => { +function processVotesReport(id: string, event: string) { + if (event == 'proposal/end') { + queue(new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR))); + } +} + +function processOgImageRefresh(id: string, type: string) { + if (type === 'proposal') { + queue(new ogImage(type, id, storageEngine(process.env.OG_IMAGES_SUBDIR))); + } +} + +router.post('/webhook', (req, res) => { const body = req.body || {}; const event = body.event?.toString() ?? ''; - const id = body.id?.toString().replace('proposal/', '') ?? ''; + const { type, id } = body.id?.toString().split('/'); if (req.headers['authentication'] !== `${process.env.WEBHOOK_AUTH_TOKEN ?? ''}`) { return rpcError(res, 'UNAUTHORIZED', id); @@ -19,14 +32,10 @@ router.post('/webhook', async (req, res) => { return rpcError(res, 'Invalid Request', id); } - if (event !== 'proposal/end') { - return rpcSuccess(res, 'Event skipped', id); - } - try { - await new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)).canBeCached(); - queue(id); - return rpcSuccess(res, 'Cache file generation queued', id); + processVotesReport(id, event); + processOgImageRefresh(id, type); + return rpcSuccess(res, 'Webhook received', id); } catch (e) { capture(e); return rpcError(res, 'INTERNAL_ERROR', id); diff --git a/test/unit/lib/cache.test.ts b/test/unit/lib/cache.test.ts new file mode 100644 index 00000000..fecf084e --- /dev/null +++ b/test/unit/lib/cache.test.ts @@ -0,0 +1,40 @@ +import { rmSync, writeFileSync } from 'fs'; +import { storageEngine } from '../../../src/helpers/utils'; +import Cache from '../../../src/lib/cache'; + +const TEST_CACHE_DIR = 'cache-test'; +const TEST_ID = 'test'; +const TEST_CONTENT = 'test content'; + +describe('Cache', () => { + const cache = new Cache(TEST_ID, storageEngine(TEST_CACHE_DIR)); + + describe('getCache()', () => { + describe('when the cache exists', () => { + const file = `${__dirname}/../../../tmp/${TEST_CACHE_DIR}/${cache.filename}`; + + beforeEach(() => writeFileSync(file, TEST_CONTENT)); + afterEach(() => rmSync(file)); + + it('returns the cache', async () => { + expect(await cache.getCache()).toEqual(TEST_CONTENT); + }); + }); + + describe('when the cache does not exists', () => { + it('returns false', async () => { + expect(await cache.getCache()).toBe(false); + }); + }); + }); + + describe('createCache()', () => { + jest.spyOn(cache, 'getContent').mockResolvedValueOnce(TEST_CONTENT); + + it('creates the cache file', async () => { + await cache.createCache(); + + expect(await cache.getCache()).toEqual(TEST_CONTENT); + }); + }); +}); diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index f213164e..fb80925c 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -1,73 +1,67 @@ -import { existsSync, readFileSync, rmSync, mkdirSync } from 'fs'; +import { readFileSync } from 'fs'; import VotesReport from '../../../src/lib/votesReport'; import { storageEngine } from '../../../src/helpers/utils'; -import type { IStorage } from '../../../src/lib/storage/types'; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const mockFetchProposal = jest.fn((id: string): any => { + return []; +}); +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const mockFetchAllVotes = jest.fn((id: string): any => { + return []; +}); +jest.mock('../../../src/helpers/snapshot', () => { + const originalModule = jest.requireActual('../../../src/helpers/snapshot'); + + return { + __esModule: true, + ...originalModule, + fetchProposal: (id: string) => mockFetchProposal(id), + fetchAllVotes: (id: string) => mockFetchAllVotes(id) + }; +}); describe('VotesReport', () => { const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; const weightedId = '0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927'; - let cacheFolder: string; - let cachePath: string; - let _storageEngine: IStorage; + const _storageEngine = storageEngine('test-cache'); const space = { id: '', name: '', network: '', settings: '' }; function fixtureFilePath(id: string) { return `${__dirname}/../../fixtures/snapshot-votes-report-${id}.csv`; } - beforeEach(() => { - cacheFolder = `votes-test-${Math.floor(Math.random() * 1e6)}`; - cachePath = `${__dirname}/../../../tmp/${cacheFolder}`; - _storageEngine = storageEngine(cacheFolder); - - if (!existsSync(cachePath)) { - mkdirSync(cachePath); - } - }); - - afterEach(() => { - if (existsSync(cachePath)) { - rmSync(cachePath, { recursive: true }); - } - }); - it.each([ ['single', id], ['weighted', weightedId] - ])('caches a %s choices votes report', async (type: string, pid: string) => { + ])('generates a %s choices votes report', async (type: string, pid: string) => { const report = new VotesReport(pid, _storageEngine); - const fetchProposalSpy = jest - .spyOn(report, 'fetchProposal') - .mockResolvedValueOnce( - JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-proposal-${pid}.json`, 'utf8')) - ); - const fetchAllVotesSpy = jest - .spyOn(report, 'fetchAllVotes') - .mockResolvedValueOnce( - JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-votes-${pid}.json`, 'utf8')) - ); - - await report.generateCacheFile(); - - expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(pid), 'utf8')); - expect(fetchProposalSpy).toHaveBeenCalled(); - expect(fetchAllVotesSpy).toHaveBeenCalled(); + mockFetchProposal.mockResolvedValueOnce( + JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-proposal-${pid}.json`, 'utf8')) + ); + mockFetchAllVotes.mockResolvedValueOnce( + JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-votes-${pid}.json`, 'utf8')) + ); + + const content = await report.getContent(); + + expect(content).toEqual(readFileSync(fixtureFilePath(pid), 'utf8')); + expect(mockFetchProposal).toHaveBeenCalled(); + expect(mockFetchAllVotes).toHaveBeenCalled(); }); - describe('canBeCached()', () => { - // const baseMockedProposal = { id: '', title: '', votes: 0, choices: [] }; - + describe('isCacheable()', () => { it('raises an error when the proposal does not exist', () => { const report = new VotesReport('test', _storageEngine); - const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce(null); + mockFetchProposal.mockResolvedValueOnce(null); - expect(report.canBeCached()).rejects.toBe('ENTRY_NOT_FOUND'); - expect(votesReportSpy).toHaveBeenCalled(); + expect(report.isCacheable()).rejects.toBe('ENTRY_NOT_FOUND'); + expect(mockFetchProposal).toHaveBeenCalled(); }); it('raises an error when the proposal is not closed', async () => { const report = new VotesReport(id, _storageEngine); - const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce({ + mockFetchProposal.mockResolvedValueOnce({ state: 'pending', id: '', title: '', @@ -77,13 +71,13 @@ describe('VotesReport', () => { space }); - expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_CLOSED'); - expect(votesReportSpy).toHaveBeenCalled(); + expect(report.isCacheable()).rejects.toBe('PROPOSAL_NOT_CLOSED'); + expect(mockFetchProposal).toHaveBeenCalled(); }); it('returns true when the proposal can be cached', async () => { const report = new VotesReport(id, _storageEngine); - const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce({ + mockFetchProposal.mockResolvedValueOnce({ state: 'closed', id: '', title: '', @@ -93,31 +87,8 @@ describe('VotesReport', () => { space }); - expect(await report.canBeCached()).toBe(true); - expect(votesReportSpy).toHaveBeenCalled(); - }); - }); - - describe('cachedFile()', () => { - describe('when the cache exists', () => { - beforeEach(async () => { - const report = new VotesReport(id, _storageEngine); - await report.generateCacheFile(); - }); - - it('returns a votes report', async () => { - const report = new VotesReport(id, _storageEngine); - - expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(id), 'utf8')); - }); - }); - - describe('when the cache does not exist', () => { - it('returns false', async () => { - const report = new VotesReport(id, _storageEngine); - - expect(await report.cachedFile()).toEqual(false); - }); + expect(await report.isCacheable()).toBe(true); + expect(mockFetchProposal).toHaveBeenCalled(); }); }); }); From 691d715131a2e8ffe181ec3f4379eda0cbf5044d Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 00:43:40 +0900 Subject: [PATCH 071/103] fix: fix missing sentry capture calls --- src/api.ts | 4 ++-- src/lib/nftClaimer/utils.ts | 3 ++- src/lib/storage/aws.ts | 4 +++- src/lib/storage/file.ts | 3 +++ src/sentryTunnel.ts | 3 ++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/api.ts b/src/api.ts index 42b609e1..05d01d3b 100644 --- a/src/api.ts +++ b/src/api.ts @@ -48,7 +48,7 @@ router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res res.setHeader('Content-Type', `image/${ext === 'svg' ? 'svg+xml' : 'png'}`); return res.end(await (ext === 'svg' ? og.getSvg() : og.getCache())); } catch (e) { - console.error(e); + capture(e); res.setHeader('Content-Type', 'application/json'); return rpcError(res, 'INTERNAL_ERROR', id || type); } @@ -69,7 +69,7 @@ router.get('/nft-claimer', async (req, res) => { try { return res.json({ snapshotFee: await snapshotFee() }); } catch (e: any) { - console.error(e); + capture(e); return rpcError(res, e, ''); } }); diff --git a/src/lib/nftClaimer/utils.ts b/src/lib/nftClaimer/utils.ts index 39097904..e3a872f1 100644 --- a/src/lib/nftClaimer/utils.ts +++ b/src/lib/nftClaimer/utils.ts @@ -7,6 +7,7 @@ import { Contract } from '@ethersproject/contracts'; import { getAddress, isAddress } from '@ethersproject/address'; import { BigNumber } from '@ethersproject/bignumber'; import type { Proposal, Space } from '../../helpers/snapshot'; +import { capture } from '../../helpers/sentry'; const requiredEnvKeys = [ 'NFT_CLAIMER_PRIVATE_KEY', @@ -205,7 +206,7 @@ export async function snapshotFee(): Promise { return contract.snapshotFee(); } catch (e: any) { - console.error(e); + capture(e); throw 'Unable to retrieve the snapshotFee'; } } diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 5b1be7ef..f8213c43 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -1,5 +1,6 @@ import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; import type { IStorage } from './types'; +import { capture } from '../../helpers/sentry'; const CACHE_PATH = 'public'; @@ -34,6 +35,7 @@ class Aws implements IStorage { return true; } catch (e) { + capture(e); console.error('[storage:aws] File storage failed', e); throw new Error('Unable to access storage'); } @@ -50,9 +52,9 @@ class Aws implements IStorage { return response.Body?.transformToString() || false; } catch (e: any) { if (e['$metadata']?.httpStatusCode !== 404) { + capture(e); console.error('[storage:aws] File fetch failed', e); } - return false; } } diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index b865e3c1..f229f9b4 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -1,5 +1,6 @@ import { writeFileSync, existsSync, mkdirSync, readFileSync } from 'fs'; import type { IStorage } from './types'; +import { capture } from '../../helpers/sentry'; const CACHE_PATH = `${__dirname}/../../../tmp`; @@ -21,6 +22,7 @@ class File implements IStorage { return true; } catch (e) { + capture(e); console.error('[storage:file] File storage failed', e); throw e; } @@ -36,6 +38,7 @@ class File implements IStorage { return readFileSync(this.#path(key), 'utf8'); } catch (e) { + capture(e); console.error('[storage:file] Fetch file failed', e); return false; } diff --git a/src/sentryTunnel.ts b/src/sentryTunnel.ts index 21ea265c..e4a4f5d7 100644 --- a/src/sentryTunnel.ts +++ b/src/sentryTunnel.ts @@ -3,6 +3,7 @@ import fetch from 'cross-fetch'; import bodyParser from 'body-parser'; import { URL } from 'url'; import { rpcError } from './helpers/utils'; +import { capture } from './helpers/sentry'; const router = express.Router(); @@ -27,7 +28,7 @@ router.post('/sentry', bodyParser.raw({ type: () => true, limit: '4mb' }), async } return res.sendStatus(status); } catch (e: any) { - console.error(e); + capture(e); rpcError(res, e, ''); } }); From fc047e147d47a6f6c600ff74f6c516ff36a5fd41 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 11:04:20 +0900 Subject: [PATCH 072/103] refactor: prefer class function over property --- src/lib/cache.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/cache.ts b/src/lib/cache.ts index fb9a6533..b22cc94e 100644 --- a/src/lib/cache.ts +++ b/src/lib/cache.ts @@ -25,12 +25,12 @@ export default class Cache { return true; } - createCache = async () => { + async createCache() { await this.isCacheable(); const content = await this.getContent(); console.log(`[votes-report] File cache ready to be saved`); this.storage.set(this.filename, content); - }; + } } From 52fca59924fd789e9febc8f64116a6c3ec5aaadd Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 12:09:53 +0900 Subject: [PATCH 073/103] refactor: rename ogImage to picSnap to make the module more generic --- .env.example | 2 +- scripts/{og-image-refresh.ts => pic-snap-refresh.ts} | 6 +++--- src/api.ts | 6 +++--- src/lib/{ogImage => picSnap}/index.ts | 8 +++----- src/lib/{ogImage => picSnap}/templates/index.tsx | 12 ++++++------ .../home.tsx => picSnap/templates/og-home.tsx} | 0 .../templates/og-proposal.tsx} | 0 .../space.tsx => picSnap/templates/og-space.tsx} | 0 src/lib/{ogImage => picSnap}/twemoji.ts | 0 src/lib/{ogImage => picSnap}/utils.tsx | 0 src/webhook.ts | 8 ++++---- 11 files changed, 20 insertions(+), 22 deletions(-) rename scripts/{og-image-refresh.ts => pic-snap-refresh.ts} (70%) rename src/lib/{ogImage => picSnap}/index.ts (82%) rename src/lib/{ogImage => picSnap}/templates/index.tsx (87%) rename src/lib/{ogImage/templates/home.tsx => picSnap/templates/og-home.tsx} (100%) rename src/lib/{ogImage/templates/proposal.tsx => picSnap/templates/og-proposal.tsx} (100%) rename src/lib/{ogImage/templates/space.tsx => picSnap/templates/og-space.tsx} (100%) rename src/lib/{ogImage => picSnap}/twemoji.ts (100%) rename src/lib/{ogImage => picSnap}/utils.tsx (100%) diff --git a/.env.example b/.env.example index 4c338c0b..047aa698 100644 --- a/.env.example +++ b/.env.example @@ -7,7 +7,7 @@ AWS_BUCKET_NAME= WEBHOOK_AUTH_TOKEN= STORAGE_ENGINE=file VOTE_REPORT_SUBDIR=votes -OG_IMAGE_SUBDIR=ogImages +OG_IMAGE_SUBDIR=picsnap NFT_CLAIMER_PRIVATE_KEY= NFT_CLAIMER_NETWORK= NFT_CLAIMER_DEPLOY_VERIFYING_CONTRACT= diff --git a/scripts/og-image-refresh.ts b/scripts/pic-snap-refresh.ts similarity index 70% rename from scripts/og-image-refresh.ts rename to scripts/pic-snap-refresh.ts index 1389545e..5a62b367 100644 --- a/scripts/og-image-refresh.ts +++ b/scripts/pic-snap-refresh.ts @@ -1,15 +1,15 @@ import 'dotenv/config'; -import ogImage, { ImageType } from '../src/lib/ogImage'; +import picSnap, { ImageType } from '../src/lib/picSnap'; import { storageEngine } from '../src/helpers/utils'; async function main() { if (process.argv.length < 3) { - console.error(`Usage: yarn ts-node scripts/og-image-refresh.ts [proposal|space] [ADDRESS]`); + console.error(`Usage: yarn ts-node scripts/pic-snap-refresh.ts [proposal|space] [ADDRESS]`); return process.exit(1); } const [, , type, address] = process.argv; - const og = new ogImage(type as ImageType, address, storageEngine(process.env.OG_IMAGE_SUBDIR)); + const og = new picSnap(type as ImageType, address, storageEngine(process.env.OG_IMAGE_SUBDIR)); await og.createCache(); } diff --git a/src/api.ts b/src/api.ts index 05d01d3b..b6491a64 100644 --- a/src/api.ts +++ b/src/api.ts @@ -3,7 +3,7 @@ import { capture } from './helpers/sentry'; import { rpcError, rpcSuccess, storageEngine } from './helpers/utils'; import getModerationList from './lib/moderationList'; import VotesReport from './lib/votesReport'; -import ogImage, { ImageType } from './lib/ogImage'; +import picSnap, { ImageType } from './lib/picSnap'; import mintPayload from './lib/nftClaimer/mint'; import deployPayload from './lib/nftClaimer/deploy'; import { queue, getProgress } from './lib/queue'; @@ -38,11 +38,11 @@ router.post('/votes/:id', async (req, res) => { } }); -router.get('/og/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res) => { +router.get('/picsnap/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res) => { const { type, id = '', ext = 'png' } = req.params; try { - const og = new ogImage(type as ImageType, id, storageEngine(process.env.OG_IMAGES_SUBDIR)); + const og = new picSnap(type as ImageType, id, storageEngine(process.env.PICSNAP_SUBDIR)); res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); res.setHeader('Content-Type', `image/${ext === 'svg' ? 'svg+xml' : 'png'}`); diff --git a/src/lib/ogImage/index.ts b/src/lib/picSnap/index.ts similarity index 82% rename from src/lib/ogImage/index.ts rename to src/lib/picSnap/index.ts index 4da1264d..cee0b4e9 100644 --- a/src/lib/ogImage/index.ts +++ b/src/lib/picSnap/index.ts @@ -3,9 +3,9 @@ import render from './templates/index'; import { IStorage } from '../storage/types'; import Cache from '../cache'; -export type ImageType = 'space' | 'proposal' | 'home'; +export type ImageType = 'og-space' | 'og-proposal' | 'og-home'; -class ogImage extends Cache { +export default class picSnap extends Cache { type: ImageType; constructor(type: ImageType, id: string, storage: IStorage) { @@ -19,7 +19,7 @@ class ogImage extends Cache { } toString() { - return `OgImage#${this.id}`; + return `PicSnap#${this.id}`; } async getContent() { @@ -35,5 +35,3 @@ class ogImage extends Cache { return imageData.asPng().toString(); } } - -export default ogImage; diff --git a/src/lib/ogImage/templates/index.tsx b/src/lib/picSnap/templates/index.tsx similarity index 87% rename from src/lib/ogImage/templates/index.tsx rename to src/lib/picSnap/templates/index.tsx index 883f9d4f..0af27dee 100644 --- a/src/lib/ogImage/templates/index.tsx +++ b/src/lib/picSnap/templates/index.tsx @@ -1,7 +1,7 @@ import satori, { SatoriOptions } from 'satori'; -import getProposalSvg from './proposal'; -import getSpaceSvg from './space'; -import getHomeSvg from './home'; +import getProposalSvg from './og-proposal'; +import getSpaceSvg from './og-space'; +import getHomeSvg from './og-home'; import { fontsData } from '../utils'; import { loadEmoji, getIconCode, apis } from '../twemoji'; import type { ImageType } from '../index'; @@ -18,13 +18,13 @@ export default async function render(type: ImageType, id: string) { let content: JSX.Element; switch (type) { - case 'proposal': + case 'og-proposal': content = await getProposalSvg(id); break; - case 'space': + case 'og-space': content = await getSpaceSvg(id); break; - case 'home': + case 'og-home': content = await getHomeSvg(); break; default: diff --git a/src/lib/ogImage/templates/home.tsx b/src/lib/picSnap/templates/og-home.tsx similarity index 100% rename from src/lib/ogImage/templates/home.tsx rename to src/lib/picSnap/templates/og-home.tsx diff --git a/src/lib/ogImage/templates/proposal.tsx b/src/lib/picSnap/templates/og-proposal.tsx similarity index 100% rename from src/lib/ogImage/templates/proposal.tsx rename to src/lib/picSnap/templates/og-proposal.tsx diff --git a/src/lib/ogImage/templates/space.tsx b/src/lib/picSnap/templates/og-space.tsx similarity index 100% rename from src/lib/ogImage/templates/space.tsx rename to src/lib/picSnap/templates/og-space.tsx diff --git a/src/lib/ogImage/twemoji.ts b/src/lib/picSnap/twemoji.ts similarity index 100% rename from src/lib/ogImage/twemoji.ts rename to src/lib/picSnap/twemoji.ts diff --git a/src/lib/ogImage/utils.tsx b/src/lib/picSnap/utils.tsx similarity index 100% rename from src/lib/ogImage/utils.tsx rename to src/lib/picSnap/utils.tsx diff --git a/src/webhook.ts b/src/webhook.ts index 0f88efa9..f4dcfb03 100644 --- a/src/webhook.ts +++ b/src/webhook.ts @@ -2,7 +2,7 @@ import express from 'express'; import { rpcError, rpcSuccess, storageEngine } from './helpers/utils'; import { capture } from './helpers/sentry'; import VotesReport from './lib/votesReport'; -import ogImage from './lib/ogImage'; +import picSnap from './lib/picSnap'; import { queue } from './lib/queue'; const router = express.Router(); @@ -13,9 +13,9 @@ function processVotesReport(id: string, event: string) { } } -function processOgImageRefresh(id: string, type: string) { +function processPicSnapRefresh(id: string, type: string) { if (type === 'proposal') { - queue(new ogImage(type, id, storageEngine(process.env.OG_IMAGES_SUBDIR))); + queue(new picSnap('og-proposal', id, storageEngine(process.env.PICSNAP_SUBDIR))); } } @@ -34,7 +34,7 @@ router.post('/webhook', (req, res) => { try { processVotesReport(id, event); - processOgImageRefresh(id, type); + processPicSnapRefresh(id, type); return rpcSuccess(res, 'Webhook received', id); } catch (e) { capture(e); From b479d06cec09c34f8767b2c3b8be81a140dcb9dc Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 12:12:18 +0900 Subject: [PATCH 074/103] chore: update README with PicSnap docs --- README.md | 104 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 71 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index fd9dd808..9f9720d2 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,12 @@ Sidekick is the service serving: -- All proposal's votes CSV report -- Moderation list -- NFT Claimer trusted backend server +| Module name | Description | Type | +| ------------- | ---------------------------------------------------------------- | -------------------- | +| `VotesReport` | all proposal's votes CSV report | generation and cache | +| `moderation` | moderation list | API only | +| `NFTClaimer` | NFT Claimer trusted backend server | generation | +| `picSnap` | an image generator for pictures snapshot of proposals and spaces | Generation and cache | --- @@ -22,8 +25,6 @@ Install the dependencies yarn ``` -_This project does not require a database, but requires a [storage engine](#storage-engine)_ - ### Configuration Copy `.env.example`, rename it to `.env` and edit the hub API url in the `.env` file if needed @@ -36,7 +37,7 @@ If you are using AWS as storage engine, set all the required `AWS_` config keys, ### Storage engine -This script is shipped with 2 storage engine. +This script is shipped with 2 storage engines. You can set the cache engine by toggling the `STORAGE_ENGINE` environment variable. @@ -45,9 +46,6 @@ You can set the cache engine by toggling the `STORAGE_ENGINE` environment variab | `aws` | Amazon S3 | `public/` | | `file` (default) | Local file | `tmp/` (relative to project root) | -You can additionally specify a sub directory by setting `VOTE_REPORT_SUBDIR` -(By default, all votes report will be nested in the `votes` directory). - ### Compiles and hot-reloads for development ```bash @@ -97,7 +95,11 @@ yarn typecheck ### Votes CSV report -Generate and serve votes CSV report for closed proposals. +Generate and serve cached votes CSV report for closed proposals. + +#### Configuration + +Use the env variable `VOTE_REPORT_SUBDIR` to specify the subdir where to store the cached files (relative to the storage engine root) > NOTE: CSV files are generated only once, then cached, making this service a cache middleware between snapshot-hub and UI @@ -113,36 +115,23 @@ When cached, this request will respond with a stream to a CSV file. When votes report can be cached, but does not exist yet, a cache generation task will be queued. This enable cache to be generated on-demand. -A JSON-RPC success with status code `202` will then be returned, with the progress percentage as `result` message. +A JSON-RPC success with status code `202` will then be returned, where the progress percentage can be retreive from the `result` message. -``` +Example response for the proposal `0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98` votes report, which is still pending generation, done at 15.45%. + +```json { - "jsonrpc":"2.0", - "result":"15.45", - "id":"0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98" + "jsonrpc": "2.0", + "result": "15.45", + "id": "0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98" } ``` -#### Generate a cache file - -Send a `POST` request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). - -```bash -curl -X POST localhost:3005/webhook \ --H "Authenticate: WEBHOOK_AUTH_TOKEN" \ --H "Content-Type: application/json" \ --d '{"id": "proposal/[PROPOSAL-ID]", "event": "proposal/end"}' -``` - -On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message - -> This endpoint has been designed to receive events from snapshot webhook service. - -Do not forget to set `WEBHOOK_AUTH_TOKEN` in the `.env` file +Cache is pre-warmed, by listening to [webhook](#webhook). ### Static moderation list -Return a curated list of moderated data. +Return a curated list of moderation data (flagged/verified proposal/spaces/etc...) #### Retrieve the list @@ -160,7 +149,7 @@ Valid values are: - `verifiedSpaces` - `flaggedSpaces` -You can pass multiple list, separated by a comma. +You can pass multiple lists, separated by a comma. Data are sourced from the json files with the same name, located in this repo `/data` directory, and a remote read-only SQL database. @@ -272,6 +261,55 @@ If given proposal's space has enabled NFT claimer, and there are still mintable > **NOTE**: The returned `proposalId` in the payload is a number representation +### PicSnap + +PicSnap is an image generator for snapshot spaces/proposals info. + +#### Configuration + +Use the env variable `OG_IMAGES_SUBDIR` to specify the subdir where to store the cached files (relative to the storage engine root) + +#### Usage + +Send a `GET` request to `/picsnap/:type(og-space|og-proposal|og-home)/:id?.:ext(png|svg)?` + +It will create the cached file if it does not exist yet, then serve it. + +By default, all images are in png format. You can additionally explicitely set the format by appending the extension to the url to `.svg` to retrieve the raw svg file (slower as only png files are cached) + +Available image types are: + +| `TYPE` | Description | Example query | Size | +| ------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------- | -------- | +| `og-home` | Default image for OpenGraph | `localhost:3005/picsnap/og-home` | 1200x600 | +| `og-space` | OpenGraph image for space | `localhost:3005/picsnap/og-space/fabien.eth` | 1200x600 | +| `og-proposal` | OpenGraph image for proposal | `localhost:3005/picsnap/og-proposal/0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98` | 1200x600 | + +Images are created and auto-refreshed, by listening to [webhook](#webhook). + +### Webhook + +This endpoint will parse the incoming events, create a task, then queue it, to be processed by `queue`. + +> This endpoint has been designed to receive events from snapshot webhook service. + +#### Configuration + +Set `WEBHOOK_AUTH_TOKEN` in the `.env` file + +#### Usage + +Send a `POST` request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). + +```bash +curl -X POST localhost:3005/webhook \ +-H "Authenticate: WEBHOOK_AUTH_TOKEN" \ +-H "Content-Type: application/json" \ +-d '{"id": "proposal/[PROPOSAL-ID]", "event": "proposal/end"}' +``` + +On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message + ### Sentry tunnel #### Problem From 485093454c0dc185145b5345cfb8c570e988f6ea Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 13:09:58 +0900 Subject: [PATCH 075/103] chore: refactor to extract more logic into templates and components --- src/helpers/snapshot.ts | 4 +- src/lib/picSnap/components/logo.tsx | 39 +++++++ src/lib/picSnap/components/membersIcon.tsx | 20 ++++ src/lib/picSnap/components/statusBadge.tsx | 26 +++++ src/lib/picSnap/components/votesIcon.tsx | 16 +++ src/lib/picSnap/templates/index.tsx | 57 +++++----- src/lib/picSnap/templates/ogHome/index.ts | 5 + .../templates/{og-home.tsx => ogHome/svg.tsx} | 2 +- src/lib/picSnap/templates/ogProposal/index.ts | 12 ++ .../{og-proposal.tsx => ogProposal/svg.tsx} | 19 ++-- src/lib/picSnap/templates/ogSpace/index.ts | 12 ++ .../{og-space.tsx => ogSpace/svg.tsx} | 13 +-- src/lib/picSnap/utils.tsx | 107 ++---------------- 13 files changed, 184 insertions(+), 148 deletions(-) create mode 100644 src/lib/picSnap/components/logo.tsx create mode 100644 src/lib/picSnap/components/membersIcon.tsx create mode 100644 src/lib/picSnap/components/statusBadge.tsx create mode 100644 src/lib/picSnap/components/votesIcon.tsx create mode 100644 src/lib/picSnap/templates/ogHome/index.ts rename src/lib/picSnap/templates/{og-home.tsx => ogHome/svg.tsx} (99%) create mode 100644 src/lib/picSnap/templates/ogProposal/index.ts rename src/lib/picSnap/templates/{og-proposal.tsx => ogProposal/svg.tsx} (73%) create mode 100644 src/lib/picSnap/templates/ogSpace/index.ts rename src/lib/picSnap/templates/{og-space.tsx => ogSpace/svg.tsx} (82%) diff --git a/src/helpers/snapshot.ts b/src/helpers/snapshot.ts index d9fbe732..b28cbcb1 100644 --- a/src/helpers/snapshot.ts +++ b/src/helpers/snapshot.ts @@ -2,10 +2,12 @@ import { gql, ApolloClient, InMemoryCache, createHttpLink } from '@apollo/client import { setContext } from '@apollo/client/link/context'; import fetch from 'cross-fetch'; +export type State = 'pending' | 'active' | 'closed'; + export type Proposal = { id: string; title: string; - state: string; + state: State; choices: string[]; space: Space; votes: number; diff --git a/src/lib/picSnap/components/logo.tsx b/src/lib/picSnap/components/logo.tsx new file mode 100644 index 00000000..91d2c3c8 --- /dev/null +++ b/src/lib/picSnap/components/logo.tsx @@ -0,0 +1,39 @@ +type LogoParams = { + logoColor: string; + textColor: string; + width: number; + height: number; +}; + +export default function (props: Partial) { + const WIDTH = 590; + const HEIGHT = 126; + const { logoColor, textColor, width, height } = { + ...{ logoColor: '#FFAC33', textColor: '#000' }, + ...props + }; + return ( + + + + ); +} diff --git a/src/lib/picSnap/components/membersIcon.tsx b/src/lib/picSnap/components/membersIcon.tsx new file mode 100644 index 00000000..b44d8690 --- /dev/null +++ b/src/lib/picSnap/components/membersIcon.tsx @@ -0,0 +1,20 @@ +export default function () { + return ( + + + + ); +} diff --git a/src/lib/picSnap/components/statusBadge.tsx b/src/lib/picSnap/components/statusBadge.tsx new file mode 100644 index 00000000..e0c28094 --- /dev/null +++ b/src/lib/picSnap/components/statusBadge.tsx @@ -0,0 +1,26 @@ +import type { State } from '../../../helpers/snapshot'; + +export default function (status: State) { + const statusesColor: Record = { + pending: 'rgb(107, 114, 128)', + active: 'rgb(33, 182, 111)', + closed: 'rgb(124, 58, 237)' + }; + + return ( + + {status} + + ); +} diff --git a/src/lib/picSnap/components/votesIcon.tsx b/src/lib/picSnap/components/votesIcon.tsx new file mode 100644 index 00000000..02f3a2c4 --- /dev/null +++ b/src/lib/picSnap/components/votesIcon.tsx @@ -0,0 +1,16 @@ +export default function () { + return ( + + + + ); +} diff --git a/src/lib/picSnap/templates/index.tsx b/src/lib/picSnap/templates/index.tsx index 0af27dee..d6ef11a3 100644 --- a/src/lib/picSnap/templates/index.tsx +++ b/src/lib/picSnap/templates/index.tsx @@ -1,35 +1,36 @@ import satori, { SatoriOptions } from 'satori'; -import getProposalSvg from './og-proposal'; -import getSpaceSvg from './og-space'; -import getHomeSvg from './og-home'; -import { fontsData } from '../utils'; -import { loadEmoji, getIconCode, apis } from '../twemoji'; +import getProposalSvg from './ogProposal'; +import getSpaceSvg from './ogSpace'; +import getHomeSvg from './ogHome'; +import { fontsData, loadDynamicAsset } from '../utils'; import type { ImageType } from '../index'; -async function loadDynamicAsset(emojiType: keyof typeof apis, _code: string, text: string) { - if (_code === 'emoji') { - return `data:image/svg+xml;base64,${btoa(await loadEmoji(emojiType, getIconCode(text)))}`; - } +const OG_DIMENSIONS = { + width: 1200, + height: 600 +}; - return fontsData as any[]; -} +const templates: Record< + ImageType, + { prepare: (id: string) => Promise; width: number; height: number } +> = { + 'og-home': { + ...OG_DIMENSIONS, + prepare: () => getHomeSvg() + }, + 'og-space': { + ...OG_DIMENSIONS, + prepare: (id: string) => getSpaceSvg(id) + }, + 'og-proposal': { + ...OG_DIMENSIONS, + prepare: (id: string) => getProposalSvg(id) + } +}; export default async function render(type: ImageType, id: string) { - let content: JSX.Element; - - switch (type) { - case 'og-proposal': - content = await getProposalSvg(id); - break; - case 'og-space': - content = await getSpaceSvg(id); - break; - case 'og-home': - content = await getHomeSvg(); - break; - default: - throw new Error('Invalid image type'); - } + const { width, height, prepare } = templates[type]; + const content = await prepare(id); return await satori(
, { - width: 1200, - height: 600, + width, + height, fonts: fontsData as SatoriOptions['fonts'], loadAdditionalAsset: async (code, text) => { return loadDynamicAsset('twemoji', code, text); diff --git a/src/lib/picSnap/templates/ogHome/index.ts b/src/lib/picSnap/templates/ogHome/index.ts new file mode 100644 index 00000000..efc59770 --- /dev/null +++ b/src/lib/picSnap/templates/ogHome/index.ts @@ -0,0 +1,5 @@ +import template from './svg'; + +export default async function svg() { + return template(); +} diff --git a/src/lib/picSnap/templates/og-home.tsx b/src/lib/picSnap/templates/ogHome/svg.tsx similarity index 99% rename from src/lib/picSnap/templates/og-home.tsx rename to src/lib/picSnap/templates/ogHome/svg.tsx index 954e5f53..c56f6e9c 100644 --- a/src/lib/picSnap/templates/og-home.tsx +++ b/src/lib/picSnap/templates/ogHome/svg.tsx @@ -1,4 +1,4 @@ -export default async function svg() { +export default function () { return (
- {votesIcon} + {votesIcon()} {proposal.votes.toLocaleString('en-US')} votes
@@ -55,7 +52,7 @@ export default async function svg(proposalId: string) { }))}
-
{proposalStatus(proposal.state)}
+
{statusBadge(proposal.state)}
{logo({ textColor: '#57606a', height: 42 })}
diff --git a/src/lib/picSnap/templates/ogSpace/index.ts b/src/lib/picSnap/templates/ogSpace/index.ts new file mode 100644 index 00000000..be878ecd --- /dev/null +++ b/src/lib/picSnap/templates/ogSpace/index.ts @@ -0,0 +1,12 @@ +import { fetchSpace } from '../../../../helpers/snapshot'; +import template from './svg'; + +export default async function svg(spaceId: string) { + const space = await fetchSpace(spaceId); + + if (!space) { + throw new Error('ENTRY_NOT_FOUND'); + } + + return template(space); +} diff --git a/src/lib/picSnap/templates/og-space.tsx b/src/lib/picSnap/templates/ogSpace/svg.tsx similarity index 82% rename from src/lib/picSnap/templates/og-space.tsx rename to src/lib/picSnap/templates/ogSpace/svg.tsx index c4ba8431..a0aaa8b8 100644 --- a/src/lib/picSnap/templates/og-space.tsx +++ b/src/lib/picSnap/templates/ogSpace/svg.tsx @@ -1,13 +1,8 @@ -import { fetchSpace } from '../../../helpers/snapshot'; -import { logo, image, spaceAvatarUrl } from '../utils'; - -export default async function svg(spaceId: string) { - const space = await fetchSpace(spaceId); - - if (!space) { - throw new Error('ENTRY_NOT_FOUND'); - } +import { image, spaceAvatarUrl } from '../../utils'; +import logo from '../../components/logo'; +import type { Space } from '../../../../helpers/snapshot'; +export default async function svg(space: Space) { return (
) { - const WIDTH = 590; - const HEIGHT = 126; - const { logoColor, textColor, width, height } = { - ...{ logoColor: '#FFAC33', textColor: '#000' }, - ...props - }; - return ( - - - - ); -} - -export const votesIcon = ( - - - -); - -export const membersIcon = ( - - - -); - -export function proposalStatus(status: string) { - const statusesColor: Record = { - pending: 'rgb(107, 114, 128)', - active: 'rgb(33, 182, 111)', - closed: 'rgb(124, 58, 237)' - }; - - return ( - - {status} - - ); -} +import { loadEmoji, getIconCode, apis } from './twemoji'; export const fontsData = [ { @@ -134,3 +37,11 @@ export async function image(src: string, style: Record) { export function spaceAvatarUrl(spaceId: string, size = 160) { return `https://cdn.stamp.fyi/space/${spaceId}?s=${size}`; } + +export async function loadDynamicAsset(emojiType: keyof typeof apis, _code: string, text: string) { + if (_code === 'emoji') { + return `data:image/svg+xml;base64,${btoa(await loadEmoji(emojiType, getIconCode(text)))}`; + } + + return fontsData as any[]; +} From 6d0d8feb608c9339a95731ef2c2f0cb20e012f47 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 14:28:17 +0900 Subject: [PATCH 076/103] chore: add tests for picSnap og-home --- jest.config.ts | 2 +- package.json | 8 +- src/api.ts | 8 +- src/lib/cache.ts | 4 +- src/lib/picSnap/index.ts | 2 +- ...nap-og-home-png-returns-the-png-1-snap.png | Bin 0 -> 23820 bytes test/e2e/picSnap.test.ts | 32 +++++++ test/fixtures/picsnap/og-home.png | Bin 0 -> 23820 bytes test/fixtures/picsnap/og-home.svg | 1 + test/setup.ts | 3 + yarn.lock | 80 +++++++++++++++++- 11 files changed, 130 insertions(+), 10 deletions(-) create mode 100644 test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-get-picsnap-og-home-png-returns-the-png-1-snap.png create mode 100644 test/e2e/picSnap.test.ts create mode 100644 test/fixtures/picsnap/og-home.png create mode 100644 test/fixtures/picsnap/og-home.svg create mode 100644 test/setup.ts diff --git a/jest.config.ts b/jest.config.ts index 615459ad..442a1b5c 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -21,7 +21,7 @@ export default { preset: 'ts-jest', testEnvironment: 'jest-environment-node-single-context', setupFiles: ['dotenv/config'], - //setupFilesAfterEnv: ['src/setupTests.ts'], + setupFilesAfterEnv: ['/test/setup.ts'], moduleFileExtensions: ['js', 'ts'], testPathIgnorePatterns: ['dist/'], verbose: true diff --git a/package.json b/package.json index 99ae14f8..4147c588 100644 --- a/package.json +++ b/package.json @@ -45,10 +45,10 @@ "morgan": "^1.10.0", "multiformats": "^9", "mysql": "^2.18.1", + "react-jsx": "^1.0.0", "satori": "^0.7.2", "serve-favicon": "^2.5.0", - "sharp": "^0.32.1", - "react-jsx": "^1.0.0" + "sharp": "^0.32.1" }, "devDependencies": { "@snapshot-labs/eslint-config": "^0.1.0-beta.9", @@ -57,11 +57,12 @@ "@types/compression": "^1.7.2", "@types/cors": "^2.8.13", "@types/express": "^4.17.17", - "@types/react": "^18.2.0", "@types/jest": "^29.5.2", + "@types/jest-image-snapshot": "^6.1.0", "@types/morgan": "^1.9.4", "@types/mysql": "^2.15.21", "@types/node": "^20.4.1", + "@types/react": "^18.2.0", "@types/serve-favicon": "^2.5.4", "@types/supertest": "^2.0.12", "@typescript-eslint/eslint-plugin": "^5.60.1", @@ -72,6 +73,7 @@ "eslint-plugin-prettier": "^4.2.1", "jest": "^29.6.1", "jest-environment-node-single-context": "^29.1.0", + "jest-image-snapshot": "^6.1.0", "nodemon": "^2.0.22", "prettier": "^2.8.8", "start-server-and-test": "^2.0.0", diff --git a/src/api.ts b/src/api.ts index b6491a64..ba720cea 100644 --- a/src/api.ts +++ b/src/api.ts @@ -38,15 +38,17 @@ router.post('/votes/:id', async (req, res) => { } }); -router.get('/picsnap/:type(space|proposal|home)/:id?.:ext(png|svg)?', async (req, res) => { +router.get('/picsnap/:type(og-space|og-proposal|og-home)/:id?.:ext(png|svg)?', async (req, res) => { const { type, id = '', ext = 'png' } = req.params; try { - const og = new picSnap(type as ImageType, id, storageEngine(process.env.PICSNAP_SUBDIR)); + const image = new picSnap(type as ImageType, id, storageEngine(process.env.PICSNAP_SUBDIR)); res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate'); res.setHeader('Content-Type', `image/${ext === 'svg' ? 'svg+xml' : 'png'}`); - return res.end(await (ext === 'svg' ? og.getSvg() : og.getCache())); + return res.end( + ext === 'svg' ? await image.getSvg() : (await image.getCache()) || (await image.createCache()) + ); } catch (e) { capture(e); res.setHeader('Content-Type', 'application/json'); diff --git a/src/lib/cache.ts b/src/lib/cache.ts index b22cc94e..10b7b4bd 100644 --- a/src/lib/cache.ts +++ b/src/lib/cache.ts @@ -13,7 +13,7 @@ export default class Cache { this.generationProgress = 0; } - async getContent() { + async getContent(): Promise { return ''; } @@ -32,5 +32,7 @@ export default class Cache { console.log(`[votes-report] File cache ready to be saved`); this.storage.set(this.filename, content); + + return content; } } diff --git a/src/lib/picSnap/index.ts b/src/lib/picSnap/index.ts index cee0b4e9..63ee3e95 100644 --- a/src/lib/picSnap/index.ts +++ b/src/lib/picSnap/index.ts @@ -32,6 +32,6 @@ export default class picSnap extends Cache { const resvg = new Resvg((await this.getSvg()) as string, opts); const imageData = resvg.render(); - return imageData.asPng().toString(); + return imageData.asPng(); } } diff --git a/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-get-picsnap-og-home-png-returns-the-png-1-snap.png b/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-get-picsnap-og-home-png-returns-the-png-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0bf118a06a3bdb87b87427ccf3c4f9c1b48687 GIT binary patch literal 23820 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 literal 0 HcmV?d00001 diff --git a/test/e2e/picSnap.test.ts b/test/e2e/picSnap.test.ts new file mode 100644 index 00000000..446b6d95 --- /dev/null +++ b/test/e2e/picSnap.test.ts @@ -0,0 +1,32 @@ +import { readFileSync, rmdirSync } from 'fs'; +import request from 'supertest'; + +const HOST = `http://localhost:${process.env.PORT || 3003}`; + +describe('picSnap', () => { + afterAll(() => { + rmdirSync(`${__dirname}/../../tmp/picsnap`, { recursive: true }); + }); + + describe('GET /picsnap/og-home.svg', () => { + it('returns the svg', async () => { + const response = await request(HOST).get('/api/picsnap/og-home.svg'); + + expect(response.statusCode).toBe(200); + expect(response.headers['content-type']).toEqual('image/svg+xml'); + expect(response.body.toString()).toEqual( + readFileSync(`${__dirname}/../fixtures/picsnap/og-home.svg`, 'utf8').trim() + ); + }); + }); + + describe('GET /picsnap/og-home.png', () => { + it('returns the png', async () => { + const response = await request(HOST).get('/api/picsnap/og-home.png'); + + expect(response.statusCode).toBe(200); + expect(response.headers['content-type']).toEqual('image/png'); + expect(response.body).toMatchImageSnapshot(); + }); + }); +}); diff --git a/test/fixtures/picsnap/og-home.png b/test/fixtures/picsnap/og-home.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0bf118a06a3bdb87b87427ccf3c4f9c1b48687 GIT binary patch literal 23820 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/picsnap/og-home.svg b/test/fixtures/picsnap/og-home.svg new file mode 100644 index 00000000..b2054ac1 --- /dev/null +++ b/test/fixtures/picsnap/og-home.svg @@ -0,0 +1 @@ + diff --git a/test/setup.ts b/test/setup.ts new file mode 100644 index 00000000..579dbe11 --- /dev/null +++ b/test/setup.ts @@ -0,0 +1,3 @@ +import { toMatchImageSnapshot } from 'jest-image-snapshot'; + +expect.extend({ toMatchImageSnapshot }); diff --git a/yarn.lock b/yarn.lock index 1a19372a..23d9e19f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2413,6 +2413,23 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/jest-image-snapshot@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/jest-image-snapshot/-/jest-image-snapshot-6.1.0.tgz#d74176821cbdf24458f39819743e9adb3d3146e9" + integrity sha512-wYayjKQGdI0ZbmsAq7OPt+5wMMi1CDXXkF3LfoGj4eRC0dOqlYJdXqLwfC89Qf2apQdlL9StgCkw0iTDb8lpUw== + dependencies: + "@types/jest" "*" + "@types/pixelmatch" "*" + ssim.js "^3.1.1" + +"@types/jest@*": + version "29.5.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.3.tgz#7a35dc0044ffb8b56325c6802a4781a626b05777" + integrity sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + "@types/jest@^29.5.2": version "29.5.2" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.2.tgz#86b4afc86e3a8f3005b297ed8a72494f89e6395b" @@ -2455,6 +2472,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.1.tgz#a6033a8718653c50ac4962977e14d0f984d9527d" integrity sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg== +"@types/pixelmatch@*": + version "5.2.4" + resolved "https://registry.yarnpkg.com/@types/pixelmatch/-/pixelmatch-5.2.4.tgz#ca145cc5ede1388c71c68edf2d1f5190e5ddd0f6" + integrity sha512-HDaSHIAv9kwpMN7zlmwfTv6gax0PiporJOipcrGsVNF3Ba+kryOZc0Pio5pn6NhisgWr7TaajlPEKTbTAypIBQ== + dependencies: + "@types/node" "*" + "@types/prettier@^2.1.5": version "2.7.3" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" @@ -4178,6 +4202,11 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + integrity sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA== + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -4249,6 +4278,11 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +glur@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" + integrity sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA== + graceful-fs@^4.1.2, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -4723,6 +4757,21 @@ jest-haste-map@^29.6.1: optionalDependencies: fsevents "^2.3.2" +jest-image-snapshot@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jest-image-snapshot/-/jest-image-snapshot-6.1.0.tgz#96a17b00530e1358eae657f6c9bb948e29ee7510" + integrity sha512-LZYoks6V1HAkYqyi80gUjMWVsa++Oy0fckAGMLBQseVweZT9AmJNKAINwHLqX1fpeMy2hTG5CCEe4IUX2N3Nmg== + dependencies: + chalk "^4.0.0" + get-stdin "^5.0.1" + glur "^1.1.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + pixelmatch "^5.1.0" + pngjs "^3.4.0" + rimraf "^2.6.2" + ssim.js "^3.1.1" + jest-leak-detector@^29.6.1: version "29.6.1" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz#66a902c81318e66e694df7d096a95466cb962f8e" @@ -5278,7 +5327,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.0: +mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -5616,6 +5665,13 @@ pirates@^4.0.4: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pixelmatch@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.3.0.tgz#5e5321a7abedfb7962d60dbf345deda87cb9560a" + integrity sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q== + dependencies: + pngjs "^6.0.0" + pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -5623,6 +5679,16 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pngjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" + integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== + postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" @@ -5953,6 +6019,13 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rimraf@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6201,6 +6274,11 @@ sqlstring@2.3.1: resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" integrity sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ== +ssim.js@^3.1.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/ssim.js/-/ssim.js-3.5.0.tgz#d7276b9ee99b57a5ff0db34035f02f35197e62df" + integrity sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g== + stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" From fb4192ab761f64385e820674d90008b60b08dfa3 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 14:40:35 +0900 Subject: [PATCH 077/103] chore: cleanup after tests --- test/unit/lib/cache.test.ts | 6 +++++- test/unit/lib/votesReport.test.ts | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/test/unit/lib/cache.test.ts b/test/unit/lib/cache.test.ts index fecf084e..1a61d6f5 100644 --- a/test/unit/lib/cache.test.ts +++ b/test/unit/lib/cache.test.ts @@ -1,4 +1,4 @@ -import { rmSync, writeFileSync } from 'fs'; +import { rmSync, rmdirSync, writeFileSync } from 'fs'; import { storageEngine } from '../../../src/helpers/utils'; import Cache from '../../../src/lib/cache'; @@ -9,6 +9,10 @@ const TEST_CONTENT = 'test content'; describe('Cache', () => { const cache = new Cache(TEST_ID, storageEngine(TEST_CACHE_DIR)); + afterAll(() => { + rmdirSync(`${__dirname}/../../../tmp/${TEST_CACHE_DIR}`, { recursive: true }); + }); + describe('getCache()', () => { describe('when the cache exists', () => { const file = `${__dirname}/../../../tmp/${TEST_CACHE_DIR}/${cache.filename}`; diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index fb80925c..e5e75be3 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -1,7 +1,9 @@ -import { readFileSync } from 'fs'; +import { readFileSync, rmdirSync } from 'fs'; import VotesReport from '../../../src/lib/votesReport'; import { storageEngine } from '../../../src/helpers/utils'; +const TEST_CACHE_DIR = 'test-cache'; + // eslint-disable-next-line @typescript-eslint/no-unused-vars const mockFetchProposal = jest.fn((id: string): any => { return []; @@ -24,13 +26,17 @@ jest.mock('../../../src/helpers/snapshot', () => { describe('VotesReport', () => { const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; const weightedId = '0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927'; - const _storageEngine = storageEngine('test-cache'); + const _storageEngine = storageEngine(TEST_CACHE_DIR); const space = { id: '', name: '', network: '', settings: '' }; function fixtureFilePath(id: string) { return `${__dirname}/../../fixtures/snapshot-votes-report-${id}.csv`; } + afterAll(() => { + rmdirSync(`${__dirname}/../../../tmp/${TEST_CACHE_DIR}`, { recursive: true }); + }); + it.each([ ['single', id], ['weighted', weightedId] From 8128ce08a29d7b15a5b4f7faeaceab70e2eadeeb Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 14:51:19 +0900 Subject: [PATCH 078/103] chore: use path from storage engine --- src/lib/storage/aws.ts | 8 ++++---- src/lib/storage/file.ts | 16 ++++++++-------- test/e2e/picSnap.test.ts | 6 ++++-- test/unit/lib/cache.test.ts | 7 ++++--- test/unit/lib/votesReport.test.ts | 12 ++++++------ 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index f8213c43..40777729 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -25,13 +25,13 @@ class Aws implements IStorage { try { const command = new PutObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, - Key: this.#path(key), + Key: this.path(key), Body: value, ContentType: 'text/csv; charset=utf-8' }); await this.client.send(command); - console.log(`[storage:aws] File saved to ${this.#path(key)}`); + console.log(`[storage:aws] File saved to ${this.path(key)}`); return true; } catch (e) { @@ -45,7 +45,7 @@ class Aws implements IStorage { try { const command = new GetObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, - Key: this.#path(key) + Key: this.path(key) }); const response = await this.client.send(command); @@ -59,7 +59,7 @@ class Aws implements IStorage { } } - #path(key?: string) { + path(key?: string) { return [CACHE_PATH, this.subDir?.replace(/^\/+|\/+$/, ''), key].filter(p => p).join('/'); } } diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index f229f9b4..1fd5622b 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -10,15 +10,15 @@ class File implements IStorage { constructor(subDir?: string) { this.subDir = subDir; - if (!existsSync(this.#path())) { - mkdirSync(this.#path(), { recursive: true }); + if (!existsSync(this.path())) { + mkdirSync(this.path(), { recursive: true }); } } async set(key: string, value: string | Buffer) { try { - writeFileSync(this.#path(key), value); - console.log(`[storage:file] File saved to ${this.#path(key)}`); + writeFileSync(this.path(key), value); + console.log(`[storage:file] File saved to ${this.path(key)}`); return true; } catch (e) { @@ -30,13 +30,13 @@ class File implements IStorage { async get(key: string) { try { - if (!existsSync(this.#path(key))) { + if (!existsSync(this.path(key))) { return false; } - console.log(`[storage:file] File fetched from ${this.#path(key)}`); + console.log(`[storage:file] File fetched from ${this.path(key)}`); - return readFileSync(this.#path(key), 'utf8'); + return readFileSync(this.path(key), 'utf8'); } catch (e) { capture(e); console.error('[storage:file] Fetch file failed', e); @@ -44,7 +44,7 @@ class File implements IStorage { } } - #path(key?: string) { + path(key?: string) { return [CACHE_PATH, this.subDir?.replace(/^\/+|\/+$/, ''), key].filter(p => p).join('/'); } } diff --git a/test/e2e/picSnap.test.ts b/test/e2e/picSnap.test.ts index 446b6d95..7729eaf8 100644 --- a/test/e2e/picSnap.test.ts +++ b/test/e2e/picSnap.test.ts @@ -1,11 +1,13 @@ -import { readFileSync, rmdirSync } from 'fs'; import request from 'supertest'; +import { readFileSync, rmdirSync } from 'fs'; +import { storageEngine } from '../../src/helpers/utils'; const HOST = `http://localhost:${process.env.PORT || 3003}`; describe('picSnap', () => { afterAll(() => { - rmdirSync(`${__dirname}/../../tmp/picsnap`, { recursive: true }); + const storage = storageEngine(process.env.PICSNAP_SUBDIR); + rmdirSync(storage.path(), { recursive: true }); }); describe('GET /picsnap/og-home.svg', () => { diff --git a/test/unit/lib/cache.test.ts b/test/unit/lib/cache.test.ts index 1a61d6f5..5a60577b 100644 --- a/test/unit/lib/cache.test.ts +++ b/test/unit/lib/cache.test.ts @@ -7,15 +7,16 @@ const TEST_ID = 'test'; const TEST_CONTENT = 'test content'; describe('Cache', () => { - const cache = new Cache(TEST_ID, storageEngine(TEST_CACHE_DIR)); + const testStorageEngine = storageEngine(TEST_CACHE_DIR); + const cache = new Cache(TEST_ID, testStorageEngine); afterAll(() => { - rmdirSync(`${__dirname}/../../../tmp/${TEST_CACHE_DIR}`, { recursive: true }); + rmdirSync(testStorageEngine.path(), { recursive: true }); }); describe('getCache()', () => { describe('when the cache exists', () => { - const file = `${__dirname}/../../../tmp/${TEST_CACHE_DIR}/${cache.filename}`; + const file = testStorageEngine.path(cache.filename); beforeEach(() => writeFileSync(file, TEST_CONTENT)); afterEach(() => rmSync(file)); diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index e5e75be3..8f9ff2ab 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -26,7 +26,7 @@ jest.mock('../../../src/helpers/snapshot', () => { describe('VotesReport', () => { const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; const weightedId = '0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927'; - const _storageEngine = storageEngine(TEST_CACHE_DIR); + const testStorageEngine = storageEngine(TEST_CACHE_DIR); const space = { id: '', name: '', network: '', settings: '' }; function fixtureFilePath(id: string) { @@ -34,14 +34,14 @@ describe('VotesReport', () => { } afterAll(() => { - rmdirSync(`${__dirname}/../../../tmp/${TEST_CACHE_DIR}`, { recursive: true }); + rmdirSync(testStorageEngine.path(), { recursive: true }); }); it.each([ ['single', id], ['weighted', weightedId] ])('generates a %s choices votes report', async (type: string, pid: string) => { - const report = new VotesReport(pid, _storageEngine); + const report = new VotesReport(pid, testStorageEngine); mockFetchProposal.mockResolvedValueOnce( JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-proposal-${pid}.json`, 'utf8')) ); @@ -58,7 +58,7 @@ describe('VotesReport', () => { describe('isCacheable()', () => { it('raises an error when the proposal does not exist', () => { - const report = new VotesReport('test', _storageEngine); + const report = new VotesReport('test', testStorageEngine); mockFetchProposal.mockResolvedValueOnce(null); expect(report.isCacheable()).rejects.toBe('ENTRY_NOT_FOUND'); @@ -66,7 +66,7 @@ describe('VotesReport', () => { }); it('raises an error when the proposal is not closed', async () => { - const report = new VotesReport(id, _storageEngine); + const report = new VotesReport(id, testStorageEngine); mockFetchProposal.mockResolvedValueOnce({ state: 'pending', id: '', @@ -82,7 +82,7 @@ describe('VotesReport', () => { }); it('returns true when the proposal can be cached', async () => { - const report = new VotesReport(id, _storageEngine); + const report = new VotesReport(id, testStorageEngine); mockFetchProposal.mockResolvedValueOnce({ state: 'closed', id: '', From fa7f06f3fa536de2b2795ee2ff810d0ee0c7ae8b Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:11:33 +0900 Subject: [PATCH 079/103] chore: add tests for OpenGraph space image --- src/lib/picSnap/utils.tsx | 1 + ...me-image-returns-the-png-image-1-snap.png} | Bin ...ace-image-returns-the-png-image-1-snap.png | Bin 0 -> 89731 bytes test/e2e/picSnap.test.ts | 31 +++++++++++++++--- .../picsnap/og-space-aviator-dao.eth.svg | 1 + 5 files changed, 28 insertions(+), 5 deletions(-) rename test/e2e/__image_snapshots__/{pic-snap-test-ts-pic-snap-get-picsnap-og-home-png-returns-the-png-1-snap.png => pic-snap-test-ts-pic-snap-on-open-graph-home-image-returns-the-png-image-1-snap.png} (100%) create mode 100644 test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-space-image-returns-the-png-image-1-snap.png create mode 100644 test/fixtures/picsnap/og-space-aviator-dao.eth.svg diff --git a/src/lib/picSnap/utils.tsx b/src/lib/picSnap/utils.tsx index f64d5fea..6f6faa7d 100644 --- a/src/lib/picSnap/utils.tsx +++ b/src/lib/picSnap/utils.tsx @@ -1,4 +1,5 @@ import sharp from 'sharp'; +import fetch from 'cross-fetch'; import { readFileSync } from 'fs'; import { join } from 'path'; import { loadEmoji, getIconCode, apis } from './twemoji'; diff --git a/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-get-picsnap-og-home-png-returns-the-png-1-snap.png b/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-home-image-returns-the-png-image-1-snap.png similarity index 100% rename from test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-get-picsnap-og-home-png-returns-the-png-1-snap.png rename to test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-home-image-returns-the-png-image-1-snap.png diff --git a/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-space-image-returns-the-png-image-1-snap.png b/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-space-image-returns-the-png-image-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..c7618110c9cb0dcbb8ded45ceb7655373d724e70 GIT binary patch literal 89731 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 Date: Wed, 19 Jul 2023 15:22:24 +0900 Subject: [PATCH 082/103] chore: delete unused image snapshot --- ...space-image-returns-the-png-image-1-snap.png | Bin 89731 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-space-image-returns-the-png-image-1-snap.png diff --git a/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-space-image-returns-the-png-image-1-snap.png b/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-space-image-returns-the-png-image-1-snap.png deleted file mode 100644 index c7618110c9cb0dcbb8ded45ceb7655373d724e70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89731 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 Date: Wed, 19 Jul 2023 17:22:24 +0900 Subject: [PATCH 083/103] chore: add more tests --- src/api.ts | 5 +- src/helpers/utils.ts | 19 ++-- src/lib/picSnap/templates/ogProposal/index.ts | 2 +- src/lib/picSnap/templates/ogSpace/index.ts | 2 +- src/lib/picSnap/twemoji.ts | 2 + ...ace-image-returns-the-png-image-1-snap.png | Bin 89731 -> 0 bytes ...ing-space-returns-the-png-image-1-snap.png | Bin 0 -> 84607 bytes test/e2e/picSnap.test.ts | 94 +++++++++++------- .../picsnap/og-space-aviator-dao.eth.svg | 1 - .../picsnap/og-space-test.wa0x6e.eth.svg | 1 + 10 files changed, 78 insertions(+), 48 deletions(-) delete mode 100644 test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-regular-space-image-returns-the-png-image-1-snap.png create mode 100644 test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-space-image-on-existing-space-returns-the-png-image-1-snap.png delete mode 100644 test/fixtures/picsnap/og-space-aviator-dao.eth.svg create mode 100644 test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg diff --git a/src/api.ts b/src/api.ts index ba720cea..ae85bbab 100644 --- a/src/api.ts +++ b/src/api.ts @@ -49,10 +49,9 @@ router.get('/picsnap/:type(og-space|og-proposal|og-home)/:id?.:ext(png|svg)?', a return res.end( ext === 'svg' ? await image.getSvg() : (await image.getCache()) || (await image.createCache()) ); - } catch (e) { + } catch (e: any) { capture(e); - res.setHeader('Content-Type', 'application/json'); - return rpcError(res, 'INTERNAL_ERROR', id || type); + return rpcError(res, e, id || type); } }); diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 3f043beb..50f5d175 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -22,14 +22,17 @@ export function rpcError(res: Response, e: Error | string, id: string | number) const errorMessage = e instanceof Error ? e.message : e; const errorCode = ERROR_CODES[errorMessage] ? ERROR_CODES[errorMessage] : -32603; - res.status(errorCode > 0 ? errorCode : 500).json({ - jsonrpc: '2.0', - error: { - code: errorCode, - message: errorMessage - }, - id - }); + res + .setHeader('Content-Type', 'application/json') + .status(errorCode > 0 ? errorCode : 500) + .json({ + jsonrpc: '2.0', + error: { + code: errorCode, + message: errorMessage + }, + id + }); } export async function sleep(time: number) { diff --git a/src/lib/picSnap/templates/ogProposal/index.ts b/src/lib/picSnap/templates/ogProposal/index.ts index 6f98841f..fb9985b4 100644 --- a/src/lib/picSnap/templates/ogProposal/index.ts +++ b/src/lib/picSnap/templates/ogProposal/index.ts @@ -5,7 +5,7 @@ export default async function svg(proposalId: string) { const proposal = await fetchProposal(proposalId); if (!proposal) { - throw new Error('ENTRY_NOT_FOUND'); + throw new Error('RECORD_NOT_FOUND'); } return template(proposal); diff --git a/src/lib/picSnap/templates/ogSpace/index.ts b/src/lib/picSnap/templates/ogSpace/index.ts index be878ecd..6d8762d4 100644 --- a/src/lib/picSnap/templates/ogSpace/index.ts +++ b/src/lib/picSnap/templates/ogSpace/index.ts @@ -5,7 +5,7 @@ export default async function svg(spaceId: string) { const space = await fetchSpace(spaceId); if (!space) { - throw new Error('ENTRY_NOT_FOUND'); + throw new Error('RECORD_NOT_FOUND'); } return template(space); diff --git a/src/lib/picSnap/twemoji.ts b/src/lib/picSnap/twemoji.ts index 2f7f7c84..3d48aecc 100644 --- a/src/lib/picSnap/twemoji.ts +++ b/src/lib/picSnap/twemoji.ts @@ -7,6 +7,8 @@ /*! Copyright Twitter Inc. and other contributors. Licensed under MIT */ +import fetch from 'cross-fetch'; + const U200D = String.fromCharCode(8205); const UFE0Fg = /\uFE0F/g; diff --git a/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-regular-space-image-returns-the-png-image-1-snap.png b/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-regular-space-image-returns-the-png-image-1-snap.png deleted file mode 100644 index c7618110c9cb0dcbb8ded45ceb7655373d724e70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89731 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 literal 0 HcmV?d00001 diff --git a/test/e2e/picSnap.test.ts b/test/e2e/picSnap.test.ts index af6d2b16..b7afb200 100644 --- a/test/e2e/picSnap.test.ts +++ b/test/e2e/picSnap.test.ts @@ -30,51 +30,77 @@ describe('picSnap', () => { }); }); - describe('on OpenGraph regular space image', () => { + describe('on OpenGraph space image', () => { // Regular space with description and avatar - const space = 'aviator-dao.eth'; + const space = 'test.wa0x6e.eth'; + + describe('on existing space', () => { + it('returns the svg file', async () => { + const response = await request(HOST).get(`/api/picsnap/og-space/${space}.svg`); + + expect(response.statusCode).toBe(200); + expect(response.headers['content-type']).toEqual('image/svg+xml'); + expect(response.body.toString()).toEqual( + readFileSync(`${__dirname}/../fixtures/picsnap/og-space-${space}.svg`, 'utf8').trim() + ); + }); + + it('returns the png image', async () => { + const response = await request(HOST).get(`/api/picsnap/og-space/${space}`); + + expect(response.statusCode).toBe(200); + expect(response.headers['content-type']).toEqual('image/png'); + expect(response.body).toMatchImageSnapshot(); + }); + }); - it('returns the svg file', async () => { - const response = await request(HOST).get(`/api/picsnap/og-space/${space}.svg`); + describe('on invalid space', () => { + const invalidSpace = 'test-test-invalid.eth'; - expect(response.statusCode).toBe(200); - expect(response.headers['content-type']).toEqual('image/svg+xml'); - expect(response.body.toString()).toEqual( - readFileSync(`${__dirname}/../fixtures/picsnap/og-space-${space}.svg`, 'utf8').trim() - ); - }); + describe('when fetching a SVG file', () => { + it('returns a 404 error', async () => { + const response = await request(HOST).get(`/api/picsnap/og-space/${invalidSpace}.svg`); - it('returns the png image', async () => { - const response = await request(HOST).get(`/api/picsnap/og-space/${space}`); + expect(response.statusCode).toBe(404); + }); + }); - expect(response.statusCode).toBe(200); - expect(response.headers['content-type']).toEqual('image/png'); - expect(response.body).toMatchImageSnapshot(); + describe('when fetching a PNG file', () => { + it('returns a 404 error', async () => { + const response = await request(HOST).get(`/api/picsnap/og-space/${invalidSpace}`); + + expect(response.statusCode).toBe(404); + }); + }); }); }); - describe('on OpenGraph space with non-latin character image', () => { - it.todo('returns the svg file'); - it.todo('returns the png image'); - }); + describe('on OpenGraph proposal image', () => { + describe('on existing proposal', () => { + it.todo('returns the svg file'); + it.todo('returns the png image'); + }); - describe('on OpenGraph space with emoji character image', () => { - it.todo('returns the svg file'); - it.todo('returns the png image'); - }); + describe('on invalid proposal', () => { + const invalidProposal = '0x000'; - describe('on OpenGraph pending proposal image', () => { - it.todo('returns the svg file'); - it.todo('returns the png image'); - }); + describe('when fetching a SVG file', () => { + it('returns a 404 error', async () => { + const response = await request(HOST).get( + `/api/picsnap/og-proposal/${invalidProposal}.svg` + ); - describe('on OpenGraph active proposal image', () => { - it.todo('returns the svg file'); - it.todo('returns the png image'); - }); + expect(response.statusCode).toBe(404); + }); + }); - describe('on OpenGraph closed proposal image', () => { - it.todo('returns the svg file'); - it.todo('returns the png image'); + describe('when fetching a PNG file', () => { + it('returns a 404 error', async () => { + const response = await request(HOST).get(`/api/picsnap/og-proposal/${invalidProposal}`); + + expect(response.statusCode).toBe(404); + }); + }); + }); }); }); diff --git a/test/fixtures/picsnap/og-space-aviator-dao.eth.svg b/test/fixtures/picsnap/og-space-aviator-dao.eth.svg deleted file mode 100644 index 8efae75a..00000000 --- a/test/fixtures/picsnap/og-space-aviator-dao.eth.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg b/test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg new file mode 100644 index 00000000..5c4ca5b8 --- /dev/null +++ b/test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg @@ -0,0 +1 @@ + From 4fcf71584da5527e6e5119b6eabb90bde7dda035 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:14:37 +0900 Subject: [PATCH 084/103] chore: add E2E tests for votesReport --- src/lib/votesReport.ts | 8 ++---- test/e2e/nftClaimer.test.ts | 21 +++++++++++++++ test/e2e/votesReport.test.ts | 50 +++++++++++++++++++++++++++++++----- 3 files changed, 67 insertions(+), 12 deletions(-) diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index 7eef8a2e..39c3c0eb 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -13,12 +13,8 @@ class VotesReport extends Cache { async isCacheable() { this.proposal = await fetchProposal(this.id); - if (!this.proposal) { - return Promise.reject('ENTRY_NOT_FOUND'); - } - - if (this.proposal.state !== 'closed') { - return Promise.reject('PROPOSAL_NOT_CLOSED'); + if (!this.proposal || this.proposal.state !== 'closed') { + return Promise.reject('RECORD_NOT_FOUND'); } return true; diff --git a/test/e2e/nftClaimer.test.ts b/test/e2e/nftClaimer.test.ts index 5dfea197..9b80144b 100644 --- a/test/e2e/nftClaimer.test.ts +++ b/test/e2e/nftClaimer.test.ts @@ -13,4 +13,25 @@ describe('nftClaimer', () => { expect(fee).toBeGreaterThanOrEqual(1); }); }); + + describe('on deploy', () => { + describe('on valid input', () => { + it.todo('returns a payload'); + }); + + describe('on invalid input', () => { + it.todo('returns a 401 error when the submitter is not the space controller'); + it.todo('returns an error when the space does not exist'); + }); + }); + + describe('on mint', () => { + describe('on valid input', () => { + it.todo('returns a payload'); + }); + + describe('on invalid input', () => { + it.todo('returns an error when proposal does not exist'); + }); + }); }); diff --git a/test/e2e/votesReport.test.ts b/test/e2e/votesReport.test.ts index ce4ce3bc..afa9302a 100644 --- a/test/e2e/votesReport.test.ts +++ b/test/e2e/votesReport.test.ts @@ -1,13 +1,51 @@ +import request from 'supertest'; +import VotesReport from '../../src/lib/votesReport'; +import { storageEngine } from '../../src/helpers/utils'; +import { rmdirSync } from 'fs'; + +const HOST = `http://localhost:${process.env.PORT || 3003}`; + describe('GET /api/votes/:id', () => { - describe('when proposal exists and cached', () => { - it.todo('returns the cached file'); + const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; + const storage = storageEngine(process.env.VOTE_REPORT_SUBDIR); + + afterEach(() => { + rmdirSync(storage.path(), { recursive: true }); }); - describe('when proposal exists and not cached', () => { - it.todo('returns a 202 status code'); + describe('when the cache exists', () => { + const votesReport = new VotesReport(id, storage); + + beforeAll(async () => { + await votesReport.createCache(); + }); + + it('returns the cached file', async () => { + const response = await request(HOST).post(`/api/votes/${id}`); + + expect(response.statusCode).toBe(200); + expect(response.text).toEqual(await votesReport.getCache()); + }); }); - describe('when proposal does not exist', () => { - it.todo('returns a 404 error'); + describe('when the cache does not exist', () => { + describe('when the proposal exists', () => { + it('returns a 202 status code, and creates the cache', async () => { + const response = await request(HOST).post(`/api/votes/${id}`); + + expect(response.statusCode).toBe(202); + + const votesReport = new VotesReport(id, storage); + expect(typeof (await votesReport.getCache())).not.toBe(false); + }); + }); + + describe('when proposal does not exist', () => { + it('returns a 404 error', async () => { + const response = await request(HOST).post('/api/votes/0x000'); + + expect(response.statusCode).toBe(404); + }); + }); }); }); From 2380a81857e3a101b7c8b2b7cf891649b9537c13 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:20:14 +0900 Subject: [PATCH 085/103] chore: fix deprecated rmdir usage --- test/e2e/picSnap.test.ts | 4 ++-- test/e2e/votesReport.test.ts | 4 ++-- test/unit/lib/cache.test.ts | 4 ++-- test/unit/lib/votesReport.test.ts | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/e2e/picSnap.test.ts b/test/e2e/picSnap.test.ts index b7afb200..4d7fffd7 100644 --- a/test/e2e/picSnap.test.ts +++ b/test/e2e/picSnap.test.ts @@ -1,5 +1,5 @@ import request from 'supertest'; -import { readFileSync, rmdirSync } from 'fs'; +import { readFileSync, rmSync } from 'fs'; import { storageEngine } from '../../src/helpers/utils'; const HOST = `http://localhost:${process.env.PORT || 3003}`; @@ -7,7 +7,7 @@ const HOST = `http://localhost:${process.env.PORT || 3003}`; describe('picSnap', () => { afterAll(() => { const storage = storageEngine(process.env.PICSNAP_SUBDIR); - rmdirSync(storage.path(), { recursive: true }); + rmSync(storage.path(), { recursive: true }); }); describe('on OpenGraph home image', () => { diff --git a/test/e2e/votesReport.test.ts b/test/e2e/votesReport.test.ts index afa9302a..69a6fd01 100644 --- a/test/e2e/votesReport.test.ts +++ b/test/e2e/votesReport.test.ts @@ -1,7 +1,7 @@ import request from 'supertest'; import VotesReport from '../../src/lib/votesReport'; import { storageEngine } from '../../src/helpers/utils'; -import { rmdirSync } from 'fs'; +import { rmSync } from 'fs'; const HOST = `http://localhost:${process.env.PORT || 3003}`; @@ -10,7 +10,7 @@ describe('GET /api/votes/:id', () => { const storage = storageEngine(process.env.VOTE_REPORT_SUBDIR); afterEach(() => { - rmdirSync(storage.path(), { recursive: true }); + rmSync(storage.path(), { recursive: true }); }); describe('when the cache exists', () => { diff --git a/test/unit/lib/cache.test.ts b/test/unit/lib/cache.test.ts index 5a60577b..dd1ecdaf 100644 --- a/test/unit/lib/cache.test.ts +++ b/test/unit/lib/cache.test.ts @@ -1,4 +1,4 @@ -import { rmSync, rmdirSync, writeFileSync } from 'fs'; +import { rmSync, writeFileSync } from 'fs'; import { storageEngine } from '../../../src/helpers/utils'; import Cache from '../../../src/lib/cache'; @@ -11,7 +11,7 @@ describe('Cache', () => { const cache = new Cache(TEST_ID, testStorageEngine); afterAll(() => { - rmdirSync(testStorageEngine.path(), { recursive: true }); + rmSync(testStorageEngine.path(), { recursive: true }); }); describe('getCache()', () => { diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index 8f9ff2ab..59a956fa 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -1,4 +1,4 @@ -import { readFileSync, rmdirSync } from 'fs'; +import { readFileSync, rmSync } from 'fs'; import VotesReport from '../../../src/lib/votesReport'; import { storageEngine } from '../../../src/helpers/utils'; @@ -34,7 +34,7 @@ describe('VotesReport', () => { } afterAll(() => { - rmdirSync(testStorageEngine.path(), { recursive: true }); + rmSync(testStorageEngine.path(), { recursive: true }); }); it.each([ From 8a709853ffbceaca9e1e664d12c7ebf4678bf80c Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:21:04 +0900 Subject: [PATCH 086/103] fix: remove unused errors code --- src/helpers/utils.ts | 2 -- test/unit/lib/votesReport.test.ts | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 50f5d175..abc07e43 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -4,8 +4,6 @@ import type { Response } from 'express'; const ERROR_CODES: Record = { 'Invalid Request': -32600, - ENTRY_NOT_FOUND: -40001, - PROPOSAL_NOT_CLOSED: -40004, RECORD_NOT_FOUND: 404, UNAUTHORIZED: 401 }; diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index 59a956fa..c8b43c65 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -61,7 +61,7 @@ describe('VotesReport', () => { const report = new VotesReport('test', testStorageEngine); mockFetchProposal.mockResolvedValueOnce(null); - expect(report.isCacheable()).rejects.toBe('ENTRY_NOT_FOUND'); + expect(report.isCacheable()).rejects.toBe('RECORD_NOT_FOUND'); expect(mockFetchProposal).toHaveBeenCalled(); }); @@ -77,7 +77,7 @@ describe('VotesReport', () => { space }); - expect(report.isCacheable()).rejects.toBe('PROPOSAL_NOT_CLOSED'); + expect(report.isCacheable()).rejects.toBe('RECORD_NOT_FOUND'); expect(mockFetchProposal).toHaveBeenCalled(); }); From cc269660d600841ed190e4a7ec659028de333eeb Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:34:18 +0900 Subject: [PATCH 087/103] chore: add more E2E tests --- ...-proposal-returns-the-png-image-1-snap.png | Bin 0 -> 40103 bytes test/e2e/picSnap.test.ts | 23 ++++++++++++++++-- ...14d28fa89bd5305a1ff0abf0736438c446ae98.svg | 1 + 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-proposal-image-on-existing-proposal-returns-the-png-image-1-snap.png create mode 100644 test/fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg diff --git a/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-proposal-image-on-existing-proposal-returns-the-png-image-1-snap.png b/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-proposal-image-on-existing-proposal-returns-the-png-image-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..ee451595d58f69a27dea1f9f40c67ef70ca77b00 GIT binary patch literal 40103 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 { describe('on OpenGraph proposal image', () => { describe('on existing proposal', () => { - it.todo('returns the svg file'); - it.todo('returns the png image'); + const id = '0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98'; + + it('returns the svg file', async () => { + const response = await request(HOST).get(`/api/picsnap/og-proposal/${id}.svg`); + + expect(response.statusCode).toBe(200); + expect(response.body.toString()).toEqual( + readFileSync( + `${__dirname}/../fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg`, + 'utf8' + ).trim() + ); + }); + + it('returns the png image', async () => { + const response = await request(HOST).get(`/api/picsnap/og-proposal/${id}`); + + expect(response.statusCode).toBe(200); + expect(response.headers['content-type']).toEqual('image/png'); + expect(response.body).toMatchImageSnapshot(); + }); }); describe('on invalid proposal', () => { diff --git a/test/fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg b/test/fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg new file mode 100644 index 00000000..b4f2c56b --- /dev/null +++ b/test/fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg @@ -0,0 +1 @@ + From dc97148360a5270124ea8f340ff6dd01957d2ab2 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:40:27 +0900 Subject: [PATCH 088/103] fix: fix rename env var --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 047aa698..aad89a7a 100644 --- a/.env.example +++ b/.env.example @@ -7,7 +7,7 @@ AWS_BUCKET_NAME= WEBHOOK_AUTH_TOKEN= STORAGE_ENGINE=file VOTE_REPORT_SUBDIR=votes -OG_IMAGE_SUBDIR=picsnap +PICSNAP_SUBDIR=picsnap NFT_CLAIMER_PRIVATE_KEY= NFT_CLAIMER_NETWORK= NFT_CLAIMER_DEPLOY_VERIFYING_CONTRACT= From 70428ee177c5df8dcaf0eb372f0fb206723f3590 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 22:25:32 +0900 Subject: [PATCH 089/103] chore: fix missing sentry capture --- src/api.ts | 2 +- src/lib/nftClaimer/utils.ts | 3 ++- src/lib/storage/aws.ts | 3 +++ src/lib/storage/file.ts | 3 +++ src/sentryTunnel.ts | 3 ++- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/api.ts b/src/api.ts index a079d245..a6260231 100644 --- a/src/api.ts +++ b/src/api.ts @@ -52,7 +52,7 @@ router.get('/nft-claimer', async (req, res) => { try { return res.json({ snapshotFee: await snapshotFee() }); } catch (e: any) { - console.error(e); + capture(e); return rpcError(res, e, ''); } }); diff --git a/src/lib/nftClaimer/utils.ts b/src/lib/nftClaimer/utils.ts index 39097904..3131b328 100644 --- a/src/lib/nftClaimer/utils.ts +++ b/src/lib/nftClaimer/utils.ts @@ -6,6 +6,7 @@ import { Wallet } from '@ethersproject/wallet'; import { Contract } from '@ethersproject/contracts'; import { getAddress, isAddress } from '@ethersproject/address'; import { BigNumber } from '@ethersproject/bignumber'; +import { capture } from '../../helpers/sentry'; import type { Proposal, Space } from '../../helpers/snapshot'; const requiredEnvKeys = [ @@ -205,7 +206,7 @@ export async function snapshotFee(): Promise { return contract.snapshotFee(); } catch (e: any) { - console.error(e); + capture(e); throw 'Unable to retrieve the snapshotFee'; } } diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 5b1be7ef..f6d1c9a8 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -1,4 +1,5 @@ import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; +import { capture } from '../../helpers/sentry'; import type { IStorage } from './types'; const CACHE_PATH = 'public'; @@ -34,6 +35,7 @@ class Aws implements IStorage { return true; } catch (e) { + capture(e); console.error('[storage:aws] File storage failed', e); throw new Error('Unable to access storage'); } @@ -50,6 +52,7 @@ class Aws implements IStorage { return response.Body?.transformToString() || false; } catch (e: any) { if (e['$metadata']?.httpStatusCode !== 404) { + capture(e); console.error('[storage:aws] File fetch failed', e); } diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index afe3a531..43ec6d80 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -1,4 +1,5 @@ import { writeFileSync, existsSync, mkdirSync, readFileSync } from 'fs'; +import { capture } from '../../helpers/sentry'; import type { IStorage } from './types'; const CACHE_PATH = `${__dirname}/../../../tmp`; @@ -21,6 +22,7 @@ class File implements IStorage { return true; } catch (e) { + capture(e); console.error('[storage:file] File storage failed', e); throw e; } @@ -34,6 +36,7 @@ class File implements IStorage { return readFileSync(this.#path(key), 'utf8'); } catch (e) { + capture(e); console.error('[storage:file] Fetch file failed', e); return false; } diff --git a/src/sentryTunnel.ts b/src/sentryTunnel.ts index 21ea265c..e4a4f5d7 100644 --- a/src/sentryTunnel.ts +++ b/src/sentryTunnel.ts @@ -3,6 +3,7 @@ import fetch from 'cross-fetch'; import bodyParser from 'body-parser'; import { URL } from 'url'; import { rpcError } from './helpers/utils'; +import { capture } from './helpers/sentry'; const router = express.Router(); @@ -27,7 +28,7 @@ router.post('/sentry', bodyParser.raw({ type: () => true, limit: '4mb' }), async } return res.sendStatus(status); } catch (e: any) { - console.error(e); + capture(e); rpcError(res, e, ''); } }); From 2260b0ebada9629cd0d582f2ddfb6b6fbd5b652c Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 22:38:15 +0900 Subject: [PATCH 090/103] chore: remove errors granularity --- README.md | 2 -- src/helpers/utils.ts | 2 -- src/lib/votesReport.ts | 4 ++-- test/unit/lib/votesReport.test.ts | 4 ++-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index fd9dd808..c15fcaf5 100644 --- a/README.md +++ b/README.md @@ -319,9 +319,7 @@ All endpoints will respond with a [JSON-RPC 2.0](https://www.jsonrpc.org/specifi | Description | `CODE` | `MESSAGE` | | ----------------------------------- | ------ | -------------------- | -| When the proposal does not exist | 404 | PROPOSAL_NOT_FOUND | | When the record does not exist | 404 | RECORD_NOT_FOUND | -| When the proposal is not closed | -40004 | PROPOSAL_NOT_CLOSED | | When the file is pending generation | 202 | PENDING_GENERATION | | Other/Unknown/Server Error | -32603 | INTERNAL_ERROR | | Other error | 500 | Depends on the error | diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 0609332b..4fbcc31d 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -4,8 +4,6 @@ import type { Response } from 'express'; const ERROR_CODES: Record = { 'Invalid Request': -32600, - PROPOSAL_NOT_FOUND: 404, - PROPOSAL_NOT_CLOSED: -40004, RECORD_NOT_FOUND: 404, UNAUTHORIZED: 401 }; diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index b5e584f9..5e0c49d2 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -24,11 +24,11 @@ class VotesReport { this.proposal = await this.fetchProposal(); if (!this.proposal) { - return Promise.reject('PROPOSAL_NOT_FOUND'); + return Promise.reject('RECORD_NOT_FOUND'); } if (this.proposal.state !== 'closed') { - return Promise.reject('PROPOSAL_NOT_CLOSED'); + return Promise.reject('RECORD_NOT_FOUND'); } return true; diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index d6609f3c..768ed686 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -59,7 +59,7 @@ describe('VotesReport', () => { const report = new VotesReport('test', _storageEngine); const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce(null); - expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_FOUND'); + expect(report.canBeCached()).rejects.toBe('RECORD_NOT_FOUND'); expect(votesReportSpy).toHaveBeenCalled(); }); @@ -74,7 +74,7 @@ describe('VotesReport', () => { space }); - expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_CLOSED'); + expect(report.canBeCached()).rejects.toBe('RECORD_NOT_FOUND'); expect(votesReportSpy).toHaveBeenCalled(); }); From 92e9dcfeaae8856c7fda7c19dc05d3b487353caa Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 23:46:33 +0900 Subject: [PATCH 091/103] chore: uncouple the cache engine from votesReport --- src/api.ts | 6 +- src/lib/cache.ts | 38 +++++++++ src/lib/queue.ts | 2 +- src/lib/storage/aws.ts | 8 +- src/lib/storage/file.ts | 14 ++-- src/lib/storage/types.ts | 2 +- src/lib/votesReport.ts | 58 +++++--------- src/webhook.ts | 2 +- test/e2e/votesReport.test.ts | 50 ++++++++++-- test/unit/lib/cache.test.ts | 45 +++++++++++ test/unit/lib/votesReport.test.ts | 129 +++++++++++++----------------- 11 files changed, 218 insertions(+), 136 deletions(-) create mode 100644 src/lib/cache.ts create mode 100644 test/unit/lib/cache.test.ts diff --git a/src/api.ts b/src/api.ts index a079d245..476035f4 100644 --- a/src/api.ts +++ b/src/api.ts @@ -15,16 +15,16 @@ router.post('/votes/:id', async (req, res) => { const votesReport = new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)); try { - const file = await votesReport.cachedFile(); + const file = await votesReport.getCache(); if (typeof file === 'string') { res.header('Content-Type', 'text/csv'); res.attachment(votesReport.filename); - return res.send(Buffer.from(file)); + return res.end(file); } try { - await votesReport.canBeCached(); + await votesReport.isCacheable(); queue(id); return rpcSuccess(res.status(202), getProgress(id).toString(), id); } catch (e: any) { diff --git a/src/lib/cache.ts b/src/lib/cache.ts new file mode 100644 index 00000000..5ceb5648 --- /dev/null +++ b/src/lib/cache.ts @@ -0,0 +1,38 @@ +import { IStorage } from './storage/types'; + +export default class Cache { + id: string; + filename: string; + storage: IStorage; + generationProgress: number; + + constructor(id: string, storage: IStorage) { + this.id = id; + this.filename = `${id}.cache`; + this.storage = storage; + this.generationProgress = 0; + } + + async getContent(): Promise { + return ''; + } + + getCache() { + return this.storage.get(this.filename); + } + + async isCacheable() { + return true; + } + + async createCache() { + await this.isCacheable(); + const content = await this.getContent(); + + console.log(`[votes-report] File cache ready to be saved`); + + this.storage.set(this.filename, content); + + return content; + } +} diff --git a/src/lib/queue.ts b/src/lib/queue.ts index 2429b10c..d8102d52 100644 --- a/src/lib/queue.ts +++ b/src/lib/queue.ts @@ -10,7 +10,7 @@ async function processItem(id: string) { try { const voteReport = new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)); processingItems.set(id, voteReport); - await voteReport.generateCacheFile(); + await voteReport.createCache(); } catch (e) { capture(e); console.error(`[queue] Error while processing item`, e); diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 5b1be7ef..9b5332fa 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -24,13 +24,13 @@ class Aws implements IStorage { try { const command = new PutObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, - Key: this.#path(key), + Key: this.path(key), Body: value, ContentType: 'text/csv; charset=utf-8' }); await this.client.send(command); - console.log(`[storage:aws] File saved to ${this.#path(key)}`); + console.log(`[storage:aws] File saved to ${this.path(key)}`); return true; } catch (e) { @@ -43,7 +43,7 @@ class Aws implements IStorage { try { const command = new GetObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, - Key: this.#path(key) + Key: this.path(key) }); const response = await this.client.send(command); @@ -57,7 +57,7 @@ class Aws implements IStorage { } } - #path(key?: string) { + path(key?: string) { return [CACHE_PATH, this.subDir?.replace(/^\/+|\/+$/, ''), key].filter(p => p).join('/'); } } diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index afe3a531..abbddf54 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -9,15 +9,15 @@ class File implements IStorage { constructor(subDir?: string) { this.subDir = subDir; - if (!existsSync(this.#path())) { - mkdirSync(this.#path(), { recursive: true }); + if (!existsSync(this.path())) { + mkdirSync(this.path(), { recursive: true }); } } async set(key: string, value: string) { try { - writeFileSync(this.#path(key), value); - console.log(`[storage:file] File saved to ${this.#path(key)}`); + writeFileSync(this.path(key), value); + console.log(`[storage:file] File saved to ${this.path(key)}`); return true; } catch (e) { @@ -28,18 +28,18 @@ class File implements IStorage { async get(key: string) { try { - if (!existsSync(this.#path(key))) { + if (!existsSync(this.path(key))) { return false; } - return readFileSync(this.#path(key), 'utf8'); + return readFileSync(this.path(key), 'utf8'); } catch (e) { console.error('[storage:file] Fetch file failed', e); return false; } } - #path(key?: string) { + path(key?: string) { return [CACHE_PATH, this.subDir?.replace(/^\/+|\/+$/, ''), key].filter(p => p).join('/'); } } diff --git a/src/lib/storage/types.ts b/src/lib/storage/types.ts index 5778395f..41eaa65c 100644 --- a/src/lib/storage/types.ts +++ b/src/lib/storage/types.ts @@ -2,7 +2,7 @@ export interface IStorage { subDir?: string; set(key: string, value: string): Promise; - get(key: string): Promise; + get(key: string): Promise; } export interface IStorageConstructor { diff --git a/src/lib/votesReport.ts b/src/lib/votesReport.ts index b5e584f9..39c3c0eb 100644 --- a/src/lib/votesReport.ts +++ b/src/lib/votesReport.ts @@ -1,47 +1,31 @@ -import { fetchAllVotes, fetchProposal } from '../helpers/snapshot'; -import type { Proposal, Vote } from '../helpers/snapshot'; +import { fetchAllVotes, fetchProposal, Proposal, Vote } from '../helpers/snapshot'; import type { IStorage } from './storage/types'; +import Cache from './cache'; -class VotesReport { - id: string; - filename: string; +class VotesReport extends Cache { proposal?: Proposal | null; - storage: IStorage; - generationProgress: number; constructor(id: string, storage: IStorage) { - this.id = id; + super(id, storage); this.filename = `snapshot-votes-report-${this.id}.csv`; - this.storage = storage; - this.generationProgress = 0; } - cachedFile = () => { - return this.storage.get(this.filename); - }; - - canBeCached = async () => { - this.proposal = await this.fetchProposal(); - - if (!this.proposal) { - return Promise.reject('PROPOSAL_NOT_FOUND'); - } + async isCacheable() { + this.proposal = await fetchProposal(this.id); - if (this.proposal.state !== 'closed') { - return Promise.reject('PROPOSAL_NOT_CLOSED'); + if (!this.proposal || this.proposal.state !== 'closed') { + return Promise.reject('RECORD_NOT_FOUND'); } return true; - }; - - generateCacheFile = async () => { - await this.canBeCached(); + } - const votes = await this.fetchAllVotes(); - const totalResults = 0; + getContent = async () => { + this.isCacheable(); + const votes = await fetchAllVotes(this.id); let content = ''; - console.log(`[votes-report] Generating cache file for ${this.id}`); + console.log(`[votes-report] Generating report for ${this.id}`); const headers = [ 'address', @@ -57,18 +41,14 @@ class VotesReport { content += headers.join(','); content += `\n${votes.map(vote => this.#formatCsvLine(vote)).join('\n')}`; - console.log(`[votes-report] File cache ready to be saved with ${totalResults} items`); - - return this.storage.set(this.filename, content); - }; + console.log(`[votes-report] Report for ${this.id} ready with ${votes.length} items`); - fetchProposal = async () => { - return fetchProposal(this.id); + return content; }; - fetchAllVotes = async () => { - return fetchAllVotes(this.id); - }; + toString() { + return `VotesReport#${this.id}`; + } #formatCsvLine = (vote: Vote) => { let choices: Vote['choice'][] = []; @@ -84,7 +64,7 @@ class VotesReport { return [ vote.voter, - choices, + ...choices, vote.vp, vote.created, vote.ipfs, diff --git a/src/webhook.ts b/src/webhook.ts index 789fb7d0..9c7a98a3 100644 --- a/src/webhook.ts +++ b/src/webhook.ts @@ -24,7 +24,7 @@ router.post('/webhook', async (req, res) => { } try { - await new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)).canBeCached(); + await new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)).isCacheable(); queue(id); return rpcSuccess(res, 'Cache file generation queued', id); } catch (e) { diff --git a/test/e2e/votesReport.test.ts b/test/e2e/votesReport.test.ts index ce4ce3bc..69a6fd01 100644 --- a/test/e2e/votesReport.test.ts +++ b/test/e2e/votesReport.test.ts @@ -1,13 +1,51 @@ +import request from 'supertest'; +import VotesReport from '../../src/lib/votesReport'; +import { storageEngine } from '../../src/helpers/utils'; +import { rmSync } from 'fs'; + +const HOST = `http://localhost:${process.env.PORT || 3003}`; + describe('GET /api/votes/:id', () => { - describe('when proposal exists and cached', () => { - it.todo('returns the cached file'); + const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; + const storage = storageEngine(process.env.VOTE_REPORT_SUBDIR); + + afterEach(() => { + rmSync(storage.path(), { recursive: true }); }); - describe('when proposal exists and not cached', () => { - it.todo('returns a 202 status code'); + describe('when the cache exists', () => { + const votesReport = new VotesReport(id, storage); + + beforeAll(async () => { + await votesReport.createCache(); + }); + + it('returns the cached file', async () => { + const response = await request(HOST).post(`/api/votes/${id}`); + + expect(response.statusCode).toBe(200); + expect(response.text).toEqual(await votesReport.getCache()); + }); }); - describe('when proposal does not exist', () => { - it.todo('returns a 404 error'); + describe('when the cache does not exist', () => { + describe('when the proposal exists', () => { + it('returns a 202 status code, and creates the cache', async () => { + const response = await request(HOST).post(`/api/votes/${id}`); + + expect(response.statusCode).toBe(202); + + const votesReport = new VotesReport(id, storage); + expect(typeof (await votesReport.getCache())).not.toBe(false); + }); + }); + + describe('when proposal does not exist', () => { + it('returns a 404 error', async () => { + const response = await request(HOST).post('/api/votes/0x000'); + + expect(response.statusCode).toBe(404); + }); + }); }); }); diff --git a/test/unit/lib/cache.test.ts b/test/unit/lib/cache.test.ts new file mode 100644 index 00000000..dd1ecdaf --- /dev/null +++ b/test/unit/lib/cache.test.ts @@ -0,0 +1,45 @@ +import { rmSync, writeFileSync } from 'fs'; +import { storageEngine } from '../../../src/helpers/utils'; +import Cache from '../../../src/lib/cache'; + +const TEST_CACHE_DIR = 'cache-test'; +const TEST_ID = 'test'; +const TEST_CONTENT = 'test content'; + +describe('Cache', () => { + const testStorageEngine = storageEngine(TEST_CACHE_DIR); + const cache = new Cache(TEST_ID, testStorageEngine); + + afterAll(() => { + rmSync(testStorageEngine.path(), { recursive: true }); + }); + + describe('getCache()', () => { + describe('when the cache exists', () => { + const file = testStorageEngine.path(cache.filename); + + beforeEach(() => writeFileSync(file, TEST_CONTENT)); + afterEach(() => rmSync(file)); + + it('returns the cache', async () => { + expect(await cache.getCache()).toEqual(TEST_CONTENT); + }); + }); + + describe('when the cache does not exists', () => { + it('returns false', async () => { + expect(await cache.getCache()).toBe(false); + }); + }); + }); + + describe('createCache()', () => { + jest.spyOn(cache, 'getContent').mockResolvedValueOnce(TEST_CONTENT); + + it('creates the cache file', async () => { + await cache.createCache(); + + expect(await cache.getCache()).toEqual(TEST_CONTENT); + }); + }); +}); diff --git a/test/unit/lib/votesReport.test.ts b/test/unit/lib/votesReport.test.ts index d6609f3c..c8b43c65 100644 --- a/test/unit/lib/votesReport.test.ts +++ b/test/unit/lib/votesReport.test.ts @@ -1,119 +1,100 @@ -import { existsSync, readFileSync, rmSync, mkdirSync } from 'fs'; +import { readFileSync, rmSync } from 'fs'; import VotesReport from '../../../src/lib/votesReport'; import { storageEngine } from '../../../src/helpers/utils'; -import type { IStorage } from '../../../src/lib/storage/types'; + +const TEST_CACHE_DIR = 'test-cache'; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const mockFetchProposal = jest.fn((id: string): any => { + return []; +}); +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const mockFetchAllVotes = jest.fn((id: string): any => { + return []; +}); +jest.mock('../../../src/helpers/snapshot', () => { + const originalModule = jest.requireActual('../../../src/helpers/snapshot'); + + return { + __esModule: true, + ...originalModule, + fetchProposal: (id: string) => mockFetchProposal(id), + fetchAllVotes: (id: string) => mockFetchAllVotes(id) + }; +}); describe('VotesReport', () => { const id = '0x1e5fdb5c87867a94c1c7f27025d62851ea47f6072f2296ca53a48fce1b87cdef'; const weightedId = '0x79ae5f9eb3c710179cfbf706fa451459ddd18d4b0bce37c22aae601128efe927'; - let cacheFolder: string; - let cachePath: string; - let _storageEngine: IStorage; - const space = { id: '', network: '', settings: '' }; + const testStorageEngine = storageEngine(TEST_CACHE_DIR); + const space = { id: '', name: '', network: '', settings: '' }; function fixtureFilePath(id: string) { return `${__dirname}/../../fixtures/snapshot-votes-report-${id}.csv`; } - beforeEach(() => { - cacheFolder = `votes-test-${Math.floor(Math.random() * 1e6)}`; - cachePath = `${__dirname}/../../../tmp/${cacheFolder}`; - _storageEngine = storageEngine(cacheFolder); - - if (!existsSync(cachePath)) { - mkdirSync(cachePath); - } - }); - - afterEach(() => { - if (existsSync(cachePath)) { - rmSync(cachePath, { recursive: true }); - } + afterAll(() => { + rmSync(testStorageEngine.path(), { recursive: true }); }); it.each([ ['single', id], ['weighted', weightedId] - ])('caches a %s choices votes report', async (type: string, pid: string) => { - const report = new VotesReport(pid, _storageEngine); - const fetchProposalSpy = jest - .spyOn(report, 'fetchProposal') - .mockResolvedValueOnce( - JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-proposal-${pid}.json`, 'utf8')) - ); - const fetchAllVotesSpy = jest - .spyOn(report, 'fetchAllVotes') - .mockResolvedValueOnce( - JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-votes-${pid}.json`, 'utf8')) - ); - - await report.generateCacheFile(); - - expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(pid), 'utf8')); - expect(fetchProposalSpy).toHaveBeenCalled(); - expect(fetchAllVotesSpy).toHaveBeenCalled(); + ])('generates a %s choices votes report', async (type: string, pid: string) => { + const report = new VotesReport(pid, testStorageEngine); + mockFetchProposal.mockResolvedValueOnce( + JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-proposal-${pid}.json`, 'utf8')) + ); + mockFetchAllVotes.mockResolvedValueOnce( + JSON.parse(readFileSync(`${__dirname}/../../fixtures/hub-votes-${pid}.json`, 'utf8')) + ); + + const content = await report.getContent(); + + expect(content).toEqual(readFileSync(fixtureFilePath(pid), 'utf8')); + expect(mockFetchProposal).toHaveBeenCalled(); + expect(mockFetchAllVotes).toHaveBeenCalled(); }); - describe('canBeCached()', () => { + describe('isCacheable()', () => { it('raises an error when the proposal does not exist', () => { - const report = new VotesReport('test', _storageEngine); - const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce(null); + const report = new VotesReport('test', testStorageEngine); + mockFetchProposal.mockResolvedValueOnce(null); - expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_FOUND'); - expect(votesReportSpy).toHaveBeenCalled(); + expect(report.isCacheable()).rejects.toBe('RECORD_NOT_FOUND'); + expect(mockFetchProposal).toHaveBeenCalled(); }); it('raises an error when the proposal is not closed', async () => { - const report = new VotesReport(id, _storageEngine); - const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce({ + const report = new VotesReport(id, testStorageEngine); + mockFetchProposal.mockResolvedValueOnce({ state: 'pending', id: '', + title: '', votes: 0, author: '', choices: [], space }); - expect(report.canBeCached()).rejects.toBe('PROPOSAL_NOT_CLOSED'); - expect(votesReportSpy).toHaveBeenCalled(); + expect(report.isCacheable()).rejects.toBe('RECORD_NOT_FOUND'); + expect(mockFetchProposal).toHaveBeenCalled(); }); it('returns true when the proposal can be cached', async () => { - const report = new VotesReport(id, _storageEngine); - const votesReportSpy = jest.spyOn(report, 'fetchProposal').mockResolvedValueOnce({ + const report = new VotesReport(id, testStorageEngine); + mockFetchProposal.mockResolvedValueOnce({ state: 'closed', id: '', + title: '', votes: 0, author: '', choices: [], space }); - expect(await report.canBeCached()).toBe(true); - expect(votesReportSpy).toHaveBeenCalled(); - }); - }); - - describe('cachedFile()', () => { - describe('when the cache exists', () => { - beforeEach(async () => { - const report = new VotesReport(id, _storageEngine); - await report.generateCacheFile(); - }); - - it('returns a votes report', async () => { - const report = new VotesReport(id, _storageEngine); - - expect(await report.cachedFile()).toEqual(readFileSync(fixtureFilePath(id), 'utf8')); - }); - }); - - describe('when the cache does not exist', () => { - it('returns false', async () => { - const report = new VotesReport(id, _storageEngine); - - expect(await report.cachedFile()).toEqual(false); - }); + expect(await report.isCacheable()).toBe(true); + expect(mockFetchProposal).toHaveBeenCalled(); }); }); }); From 5dc53249d3a815ad68b832e8d9a937751e1c22e8 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Jul 2023 00:03:29 +0900 Subject: [PATCH 092/103] chore: refactor webhook to handle more generic events --- src/api.ts | 2 +- src/lib/queue.ts | 37 +++++++++++++++++++------------------ src/webhook.ts | 20 +++++++++++--------- 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/src/api.ts b/src/api.ts index 476035f4..e75a53ff 100644 --- a/src/api.ts +++ b/src/api.ts @@ -25,7 +25,7 @@ router.post('/votes/:id', async (req, res) => { try { await votesReport.isCacheable(); - queue(id); + queue(votesReport); return rpcSuccess(res.status(202), getProgress(id).toString(), id); } catch (e: any) { capture(e); diff --git a/src/lib/queue.ts b/src/lib/queue.ts index d8102d52..70187055 100644 --- a/src/lib/queue.ts +++ b/src/lib/queue.ts @@ -1,27 +1,28 @@ -import { sleep, storageEngine } from '../helpers/utils'; +import { sleep } from '../helpers/utils'; import { capture } from '../helpers/sentry'; -import VotesReport from './votesReport'; +import Cache from './cache'; -const queues = new Set(); -const processingItems = new Map(); +const queues = new Set(); +const processingItems = new Map(); -async function processItem(id: string) { - console.log(`[queue] Processing queue item: ${id}`); +async function processItem(cacheable: Cache) { + console.log(`[queue] Processing queue item: ${cacheable}`); try { - const voteReport = new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)); - processingItems.set(id, voteReport); - await voteReport.createCache(); + processingItems.set(cacheable.id, cacheable); + await cacheable.createCache(); } catch (e) { capture(e); console.error(`[queue] Error while processing item`, e); } finally { - queues.delete(id); - processingItems.delete(id); + queues.delete(cacheable); + processingItems.delete(cacheable.id); } } -export function queue(id: string) { - queues.add(id); +export function queue(cacheable: Cache) { + queues.add(cacheable); + + return queues.size; } export function getProgress(id: string) { @@ -35,17 +36,17 @@ export function getProgress(id: string) { async function run() { try { console.log(`[queue] Poll queue (found ${queues.size} items)`); - queues.forEach(async item => { - if (processingItems.has(item)) { + queues.forEach(async cacheable => { + if (processingItems.has(cacheable.id)) { console.log( - `[queue] Skip: ${item} is currently being processed, progress: ${ - processingItems.get(item)?.generationProgress + `[queue] Skip: ${cacheable} is currently being processed, progress: ${ + processingItems.get(cacheable.id)?.generationProgress }%` ); return; } - processItem(item); + processItem(cacheable); }); } catch (e) { capture(e); diff --git a/src/webhook.ts b/src/webhook.ts index 9c7a98a3..98b46c8a 100644 --- a/src/webhook.ts +++ b/src/webhook.ts @@ -6,10 +6,17 @@ import { queue } from './lib/queue'; const router = express.Router(); -router.post('/webhook', async (req, res) => { +function processVotesReport(id: string, event: string) { + if (event == 'proposal/end') { + queue(new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR))); + } +} + +router.post('/webhook', (req, res) => { const body = req.body || {}; const event = body.event?.toString() ?? ''; - const id = body.id?.toString().replace('proposal/', '') ?? ''; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { type, id } = body.id?.toString().split('/'); if (req.headers['authentication'] !== `${process.env.WEBHOOK_AUTH_TOKEN ?? ''}`) { return rpcError(res, 'UNAUTHORIZED', id); @@ -19,14 +26,9 @@ router.post('/webhook', async (req, res) => { return rpcError(res, 'Invalid Request', id); } - if (event !== 'proposal/end') { - return rpcSuccess(res, 'Event skipped', id); - } - try { - await new VotesReport(id, storageEngine(process.env.VOTE_REPORT_SUBDIR)).isCacheable(); - queue(id); - return rpcSuccess(res, 'Cache file generation queued', id); + processVotesReport(id, event); + return rpcSuccess(res, 'Webhook received', id); } catch (e) { capture(e); return rpcError(res, 'INTERNAL_ERROR', id); From ac00d9c4c28224e8b6a545ca7abbcfc3567b4e1a Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Jul 2023 12:16:19 +0900 Subject: [PATCH 093/103] fix: fix duplicate import --- src/lib/nftClaimer/utils.ts | 1 - src/lib/storage/aws.ts | 1 - src/lib/storage/file.ts | 1 - 3 files changed, 3 deletions(-) diff --git a/src/lib/nftClaimer/utils.ts b/src/lib/nftClaimer/utils.ts index 9ec8b666..3131b328 100644 --- a/src/lib/nftClaimer/utils.ts +++ b/src/lib/nftClaimer/utils.ts @@ -8,7 +8,6 @@ import { getAddress, isAddress } from '@ethersproject/address'; import { BigNumber } from '@ethersproject/bignumber'; import { capture } from '../../helpers/sentry'; import type { Proposal, Space } from '../../helpers/snapshot'; -import { capture } from '../../helpers/sentry'; const requiredEnvKeys = [ 'NFT_CLAIMER_PRIVATE_KEY', diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 6718619e..2932738d 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -1,7 +1,6 @@ import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; import { capture } from '../../helpers/sentry'; import type { IStorage } from './types'; -import { capture } from '../../helpers/sentry'; const CACHE_PATH = 'public'; diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index c0778690..f3acbbbe 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -1,7 +1,6 @@ import { writeFileSync, existsSync, mkdirSync, readFileSync } from 'fs'; import { capture } from '../../helpers/sentry'; import type { IStorage } from './types'; -import { capture } from '../../helpers/sentry'; const CACHE_PATH = `${__dirname}/../../../tmp`; From e1902de4e571cce141873cc7f8b1cc096c054ed7 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Jul 2023 12:16:48 +0900 Subject: [PATCH 094/103] chore: fix lint --- src/webhook.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webhook.ts b/src/webhook.ts index a9771778..6e3f1dca 100644 --- a/src/webhook.ts +++ b/src/webhook.ts @@ -37,7 +37,7 @@ router.post('/webhook', (req, res) => { try { processVotesReport(id, event); processPicSnapRefresh(id, type); - + return rpcSuccess(res, 'Webhook received', id); } catch (e) { capture(e); From 38bb73880cc75463d50de94f844299f029721364 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Jul 2023 21:41:33 +0900 Subject: [PATCH 095/103] feat: add support for Buffer when setting/getting a cache --- src/api.ts | 2 +- src/lib/cache.ts | 2 +- src/lib/storage/aws.ts | 16 ++++++++++++++-- src/lib/storage/file.ts | 4 ++-- src/lib/storage/types.ts | 4 ++-- test/.env.test | 1 + test/fixtures/icon.png | Bin 0 -> 20772 bytes test/unit/lib/cache.test.ts | 29 +++++++++++++++++++++-------- 8 files changed, 42 insertions(+), 16 deletions(-) create mode 100644 test/fixtures/icon.png diff --git a/src/api.ts b/src/api.ts index e75a53ff..6a4546f0 100644 --- a/src/api.ts +++ b/src/api.ts @@ -17,7 +17,7 @@ router.post('/votes/:id', async (req, res) => { try { const file = await votesReport.getCache(); - if (typeof file === 'string') { + if (file) { res.header('Content-Type', 'text/csv'); res.attachment(votesReport.filename); return res.end(file); diff --git a/src/lib/cache.ts b/src/lib/cache.ts index 5ceb5648..10b7b4bd 100644 --- a/src/lib/cache.ts +++ b/src/lib/cache.ts @@ -13,7 +13,7 @@ export default class Cache { this.generationProgress = 0; } - async getContent(): Promise { + async getContent(): Promise { return ''; } diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 9b5332fa..e69111ed 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -1,5 +1,6 @@ import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; import type { IStorage } from './types'; +import type { Readable } from 'stream'; const CACHE_PATH = 'public'; @@ -20,7 +21,7 @@ class Aws implements IStorage { this.subDir = subDir; } - async set(key: string, value: string) { + async set(key: string, value: string | Buffer) { try { const command = new PutObjectCommand({ Bucket: process.env.AWS_BUCKET_NAME, @@ -47,7 +48,18 @@ class Aws implements IStorage { }); const response = await this.client.send(command); - return response.Body?.transformToString() || false; + if (!response.Body) { + return false; + } + + const stream = response.Body as Readable; + + return new Promise((resolve, reject) => { + const chunks: Buffer[] = []; + stream.on('data', chunk => chunks.push(chunk)); + stream.once('end', () => resolve(Buffer.concat(chunks))); + stream.once('error', reject); + }); } catch (e: any) { if (e['$metadata']?.httpStatusCode !== 404) { console.error('[storage:aws] File fetch failed', e); diff --git a/src/lib/storage/file.ts b/src/lib/storage/file.ts index abbddf54..4c02dedb 100644 --- a/src/lib/storage/file.ts +++ b/src/lib/storage/file.ts @@ -14,7 +14,7 @@ class File implements IStorage { } } - async set(key: string, value: string) { + async set(key: string, value: string | Buffer) { try { writeFileSync(this.path(key), value); console.log(`[storage:file] File saved to ${this.path(key)}`); @@ -32,7 +32,7 @@ class File implements IStorage { return false; } - return readFileSync(this.path(key), 'utf8'); + return readFileSync(this.path(key)); } catch (e) { console.error('[storage:file] Fetch file failed', e); return false; diff --git a/src/lib/storage/types.ts b/src/lib/storage/types.ts index 41eaa65c..eb0d4dfd 100644 --- a/src/lib/storage/types.ts +++ b/src/lib/storage/types.ts @@ -1,8 +1,8 @@ export interface IStorage { subDir?: string; - set(key: string, value: string): Promise; - get(key: string): Promise; + set(key: string, value: string | Buffer): Promise; + get(key: string): Promise; } export interface IStorageConstructor { diff --git a/test/.env.test b/test/.env.test index 4034fdf3..da18cdf3 100644 --- a/test/.env.test +++ b/test/.env.test @@ -9,6 +9,7 @@ NFT_CLAIMER_DEPLOY_INITIALIZE_SELECTOR=0x977b0efb NFT_CLAIMER_SUBGRAPH_URL='https://api.studio.thegraph.com/query/48277/nft-subgraph-goerli/version/latest' STORAGE_ENGINE=file # your own test AWS for credentials if you wish to test with AWS +# STORAGE_ENGINE=aws # AWS_ACCESS_KEY_ID= # AWS_REGION= # AWS_SECRET_ACCESS_KEY= diff --git a/test/fixtures/icon.png b/test/fixtures/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a035185774fcea6a0f06021bf34b21e839c9972 GIT binary patch literal 20772 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 { const testStorageEngine = storageEngine(TEST_CACHE_DIR); @@ -18,11 +18,15 @@ describe('Cache', () => { describe('when the cache exists', () => { const file = testStorageEngine.path(cache.filename); - beforeEach(() => writeFileSync(file, TEST_CONTENT)); + beforeEach(() => writeFileSync(file, TEST_STRING_CONTENT)); afterEach(() => rmSync(file)); - it('returns the cache', async () => { - expect(await cache.getCache()).toEqual(TEST_CONTENT); + it('returns the cached content', async () => { + expect((await cache.getCache()).toString()).toEqual(TEST_STRING_CONTENT); + }); + + it('returns a Buffer', async () => { + expect(await cache.getCache()).toBeInstanceOf(Buffer); }); }); @@ -34,12 +38,21 @@ describe('Cache', () => { }); describe('createCache()', () => { - jest.spyOn(cache, 'getContent').mockResolvedValueOnce(TEST_CONTENT); + it('creates the cache file from a string', async () => { + const spy = jest.spyOn(cache, 'getContent').mockResolvedValueOnce(TEST_STRING_CONTENT); + await cache.createCache(); + + expect((await cache.getCache()).toString()).toEqual(TEST_STRING_CONTENT); + expect(spy).toHaveBeenCalledTimes(1); + }); - it('creates the cache file', async () => { + it('creates the cache file from a Buffer', async () => { + const fixture = readFileSync(`${__dirname}/../../fixtures/icon.png`); + const spy = jest.spyOn(cache, 'getContent').mockResolvedValueOnce(fixture); await cache.createCache(); - expect(await cache.getCache()).toEqual(TEST_CONTENT); + expect(await cache.getCache()).toEqual(fixture); + expect(spy).toHaveBeenCalledTimes(1); }); }); }); From 678dbc58a68bce3ad76ae7e6af87e522468dd19f Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Jul 2023 21:49:21 +0900 Subject: [PATCH 096/103] chore: fix tests --- test/e2e/votesReport.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/votesReport.test.ts b/test/e2e/votesReport.test.ts index 69a6fd01..5b3d525b 100644 --- a/test/e2e/votesReport.test.ts +++ b/test/e2e/votesReport.test.ts @@ -24,7 +24,7 @@ describe('GET /api/votes/:id', () => { const response = await request(HOST).post(`/api/votes/${id}`); expect(response.statusCode).toBe(200); - expect(response.text).toEqual(await votesReport.getCache()); + expect(response.text).toEqual((await votesReport.getCache()).toString()); }); }); From a30f315a3236c644998c654687603b5bf0ad934a Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Jul 2023 21:58:38 +0900 Subject: [PATCH 097/103] chore: lint --- src/lib/storage/aws.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/storage/aws.ts b/src/lib/storage/aws.ts index 803aff64..fcafdbdb 100644 --- a/src/lib/storage/aws.ts +++ b/src/lib/storage/aws.ts @@ -67,6 +67,7 @@ class Aws implements IStorage { capture(e); console.error('[storage:aws] File fetch failed', e); } + return false; } } From 56f4d29bff2d1a94a3207f63408897bb6c911606 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 20 Jul 2023 22:03:08 +0900 Subject: [PATCH 098/103] chore: add retry for flaky test --- test/e2e/nftClaimer.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/e2e/nftClaimer.test.ts b/test/e2e/nftClaimer.test.ts index 9b80144b..72b3f5c8 100644 --- a/test/e2e/nftClaimer.test.ts +++ b/test/e2e/nftClaimer.test.ts @@ -4,6 +4,8 @@ const HOST = `http://localhost:${process.env.PORT || 3003}`; describe('nftClaimer', () => { describe('GET /api/nft-claimer', () => { + jest.retryTimes(3); + it('returns an object with the snapshotFee', async () => { const response = await request(HOST).get('/api/nft-claimer'); const fee = response.body.snapshotFee; From f13c040fda83c3f847e7668b28b13e7d42659433 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Thu, 24 Aug 2023 00:20:24 +0900 Subject: [PATCH 099/103] chore: update README to remove unrelated changes --- README.md | 81 +++++++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index e3b5e067..2f2c6724 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,10 @@ Sidekick is the service serving: -| Module name | Description | Type | -| ------------- | ---------------------------------------------------------------- | -------------------- | -| `VotesReport` | all proposal's votes CSV report | generation and cache | -| `moderation` | moderation list | API only | -| `NFTClaimer` | NFT Claimer trusted backend server | generation | -| `picSnap` | an image generator for pictures snapshot of proposals and spaces | Generation and cache | +- All proposal's votes CSV report +- Moderation list +- NFT Claimer trusted backend server +- PicSnap, an image generator for pictures snapshot of proposals and spaces --- @@ -25,6 +23,8 @@ Install the dependencies yarn ``` +_This project does not require a database, but requires a [storage engine](#storage-engine)_ + ### Configuration Copy `.env.example`, rename it to `.env` and edit the hub API url in the `.env` file if needed @@ -37,7 +37,7 @@ If you are using AWS as storage engine, set all the required `AWS_` config keys, ### Storage engine -This script is shipped with 2 storage engines. +This script is shipped with 2 storage engine. You can set the cache engine by toggling the `STORAGE_ENGINE` environment variable. @@ -46,6 +46,9 @@ You can set the cache engine by toggling the `STORAGE_ENGINE` environment variab | `aws` | Amazon S3 | `public/` | | `file` (default) | Local file | `tmp/` (relative to project root) | +You can additionally specify a sub directory by setting `VOTE_REPORT_SUBDIR` +(By default, all votes report will be nested in the `votes` directory). + ### Compiles and hot-reloads for development ```bash @@ -95,11 +98,7 @@ yarn typecheck ### Votes CSV report -Generate and serve cached votes CSV report for closed proposals. - -#### Configuration - -Use the env variable `VOTE_REPORT_SUBDIR` to specify the subdir where to store the cached files (relative to the storage engine root) +Generate and serve votes CSV report for closed proposals. > NOTE: CSV files are generated only once, then cached, making this service a cache middleware between snapshot-hub and UI @@ -115,23 +114,36 @@ When cached, this request will respond with a stream to a CSV file. When votes report can be cached, but does not exist yet, a cache generation task will be queued. This enable cache to be generated on-demand. -A JSON-RPC success with status code `202` will then be returned, where the progress percentage can be retreive from the `result` message. - -Example response for the proposal `0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98` votes report, which is still pending generation, done at 15.45%. +A JSON-RPC success with status code `202` will then be returned, with the progress percentage as `result` message. -```json +``` { - "jsonrpc": "2.0", - "result": "15.45", - "id": "0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98" + "jsonrpc":"2.0", + "result":"15.45", + "id":"0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98" } ``` -Cache is pre-warmed, by listening to [webhook](#webhook). +#### Generate a cache file + +Send a `POST` request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). + +```bash +curl -X POST localhost:3005/webhook \ +-H "Authenticate: WEBHOOK_AUTH_TOKEN" \ +-H "Content-Type: application/json" \ +-d '{"id": "proposal/[PROPOSAL-ID]", "event": "proposal/end"}' +``` + +On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message + +> This endpoint has been designed to receive events from snapshot webhook service. + +Do not forget to set `WEBHOOK_AUTH_TOKEN` in the `.env` file ### Static moderation list -Return a curated list of moderation data (flagged/verified proposal/spaces/etc...) +Return a curated list of moderated data. #### Retrieve the list @@ -149,7 +161,7 @@ Valid values are: - `verifiedSpaces` - `flaggedSpaces` -You can pass multiple lists, separated by a comma. +You can pass multiple list, separated by a comma. Data are sourced from the json files with the same name, located in this repo `/data` directory, and a remote read-only SQL database. @@ -285,31 +297,6 @@ Available image types are: | `og-space` | OpenGraph image for space | `localhost:3005/picsnap/og-space/fabien.eth` | 1200x600 | | `og-proposal` | OpenGraph image for proposal | `localhost:3005/picsnap/og-proposal/0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98` | 1200x600 | -Images are created and auto-refreshed, by listening to [webhook](#webhook). - -### Webhook - -This endpoint will parse the incoming events, create a task, then queue it, to be processed by `queue`. - -> This endpoint has been designed to receive events from snapshot webhook service. - -#### Configuration - -Set `WEBHOOK_AUTH_TOKEN` in the `.env` file - -#### Usage - -Send a `POST` request with a body following the [Webhook event object](https://docs.snapshot.org/tools/webhooks). - -```bash -curl -X POST localhost:3005/webhook \ --H "Authenticate: WEBHOOK_AUTH_TOKEN" \ --H "Content-Type: application/json" \ --d '{"id": "proposal/[PROPOSAL-ID]", "event": "proposal/end"}' -``` - -On success, will respond with a success [JSON-RPC 2.0](https://www.jsonrpc.org/specification) message - ### Sentry tunnel #### Problem From 130b488558665eb528b102a49503a8aca4064bc6 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 26 Aug 2023 19:34:16 +0900 Subject: [PATCH 100/103] fix: fix wrong example link --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2f2c6724..37d75952 100644 --- a/README.md +++ b/README.md @@ -283,7 +283,7 @@ Use the env variable `OG_IMAGES_SUBDIR` to specify the subdir where to store the #### Usage -Send a `GET` request to `/picsnap/:type(og-space|og-proposal|og-home)/:id?.:ext(png|svg)?` +Send a `GET` request to `/api/picsnap/:type(og-space|og-proposal|og-home)/:id?.:ext(png|svg)?` It will create the cached file if it does not exist yet, then serve it. @@ -293,9 +293,9 @@ Available image types are: | `TYPE` | Description | Example query | Size | | ------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------- | -------- | -| `og-home` | Default image for OpenGraph | `localhost:3005/picsnap/og-home` | 1200x600 | -| `og-space` | OpenGraph image for space | `localhost:3005/picsnap/og-space/fabien.eth` | 1200x600 | -| `og-proposal` | OpenGraph image for proposal | `localhost:3005/picsnap/og-proposal/0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98` | 1200x600 | +| `og-home` | Default image for OpenGraph | `localhost:3005/api/picsnap/og-home` | 1200x600 | +| `og-space` | OpenGraph image for space | `localhost:3005/api/picsnap/og-space/fabien.eth` | 1200x600 | +| `og-proposal` | OpenGraph image for proposal | `localhost:3005/api/picsnap/og-proposal/0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98` | 1200x600 | ### Sentry tunnel From b3672680136e5b2df1b3c24007ae243c44559bbd Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 26 Aug 2023 17:59:31 +0700 Subject: [PATCH 101/103] Fix closed color to match new color on snapshot --- src/lib/picSnap/components/statusBadge.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/picSnap/components/statusBadge.tsx b/src/lib/picSnap/components/statusBadge.tsx index e0c28094..4815b6bb 100644 --- a/src/lib/picSnap/components/statusBadge.tsx +++ b/src/lib/picSnap/components/statusBadge.tsx @@ -4,7 +4,7 @@ export default function (status: State) { const statusesColor: Record = { pending: 'rgb(107, 114, 128)', active: 'rgb(33, 182, 111)', - closed: 'rgb(124, 58, 237)' + closed: 'rgb(187, 107, 217)' }; return ( From 476e24d50f29ee447e905ab27c30a8a5de3de0e6 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 26 Aug 2023 18:09:35 +0700 Subject: [PATCH 102/103] Update e2e ogProposal image --- ...-proposal-returns-the-png-image-1-snap.png | Bin 40103 -> 40047 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-proposal-image-on-existing-proposal-returns-the-png-image-1-snap.png b/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-proposal-image-on-existing-proposal-returns-the-png-image-1-snap.png index ee451595d58f69a27dea1f9f40c67ef70ca77b00..e10f79298d0e349e29e370faeb038e0ac369c92f 100644 GIT binary patch delta 33976 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 delta 34051 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 From f52bd6461efcc7546f5d2c85155fa237e21c4325 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Sat, 26 Aug 2023 22:15:48 +0900 Subject: [PATCH 103/103] chore: fix tests fixtures --- ...4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg | 2 +- test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg b/test/fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg index b4f2c56b..6af7b443 100644 --- a/test/fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg +++ b/test/fixtures/picsnap/og-proposal-0x5280241b4ccc9b7c5088e657a714d28fa89bd5305a1ff0abf0736438c446ae98.svg @@ -1 +1 @@ - + diff --git a/test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg b/test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg index 5c4ca5b8..8d730f33 100644 --- a/test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg +++ b/test/fixtures/picsnap/og-space-test.wa0x6e.eth.svg @@ -1 +1 @@ - +

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 { rmdirSync(storage.path(), { recursive: true }); }); - describe('GET /picsnap/og-home.svg', () => { - it('returns the svg', async () => { + describe('on OpenGraph home image', () => { + it('returns the svg file', async () => { const response = await request(HOST).get('/api/picsnap/og-home.svg'); expect(response.statusCode).toBe(200); @@ -20,10 +20,8 @@ describe('picSnap', () => { readFileSync(`${__dirname}/../fixtures/picsnap/og-home.svg`, 'utf8').trim() ); }); - }); - describe('GET /picsnap/og-home.png', () => { - it('returns the png', async () => { + it('returns the png image', async () => { const response = await request(HOST).get('/api/picsnap/og-home.png'); expect(response.statusCode).toBe(200); @@ -31,4 +29,27 @@ describe('picSnap', () => { expect(response.body).toMatchImageSnapshot(); }); }); + + describe('on OpenGraph regular space image', () => { + // Regular space with description and avatar + const space = 'aviator-dao.eth'; + + it('returns the svg file', async () => { + const response = await request(HOST).get(`/api/picsnap/og-space/${space}.svg`); + + expect(response.statusCode).toBe(200); + expect(response.headers['content-type']).toEqual('image/svg+xml'); + expect(response.body.toString()).toEqual( + readFileSync(`${__dirname}/../fixtures/picsnap/og-space-${space}.svg`, 'utf8').trim() + ); + }); + + it('returns the png image', async () => { + const response = await request(HOST).get(`/api/picsnap/og-space/${space}`); + + expect(response.statusCode).toBe(200); + expect(response.headers['content-type']).toEqual('image/png'); + expect(response.body).toMatchImageSnapshot(); + }); + }); }); diff --git a/test/fixtures/picsnap/og-space-aviator-dao.eth.svg b/test/fixtures/picsnap/og-space-aviator-dao.eth.svg new file mode 100644 index 00000000..8efae75a --- /dev/null +++ b/test/fixtures/picsnap/og-space-aviator-dao.eth.svg @@ -0,0 +1 @@ + From b9a3fc12c6cb9ef5d12d87f8605c2333d6a3dbaa Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:17:49 +0900 Subject: [PATCH 080/103] chore: add tests to implement --- test/e2e/picSnap.test.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/e2e/picSnap.test.ts b/test/e2e/picSnap.test.ts index 59cace93..af6d2b16 100644 --- a/test/e2e/picSnap.test.ts +++ b/test/e2e/picSnap.test.ts @@ -52,4 +52,29 @@ describe('picSnap', () => { expect(response.body).toMatchImageSnapshot(); }); }); + + describe('on OpenGraph space with non-latin character image', () => { + it.todo('returns the svg file'); + it.todo('returns the png image'); + }); + + describe('on OpenGraph space with emoji character image', () => { + it.todo('returns the svg file'); + it.todo('returns the png image'); + }); + + describe('on OpenGraph pending proposal image', () => { + it.todo('returns the svg file'); + it.todo('returns the png image'); + }); + + describe('on OpenGraph active proposal image', () => { + it.todo('returns the svg file'); + it.todo('returns the png image'); + }); + + describe('on OpenGraph closed proposal image', () => { + it.todo('returns the svg file'); + it.todo('returns the png image'); + }); }); From e139109ccf9b0314f01803893c1a7901440154d9 Mon Sep 17 00:00:00 2001 From: Wan Qi Chen <495709+wa0x6e@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:21:32 +0900 Subject: [PATCH 081/103] chore: add missing test snapshot --- ...space-image-returns-the-png-image-1-snap.png | Bin 0 -> 89731 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-regular-space-image-returns-the-png-image-1-snap.png diff --git a/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-regular-space-image-returns-the-png-image-1-snap.png b/test/e2e/__image_snapshots__/pic-snap-test-ts-pic-snap-on-open-graph-regular-space-image-returns-the-png-image-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..c7618110c9cb0dcbb8ded45ceb7655373d724e70 GIT binary patch literal 89731 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